2,852
社区成员




高通平台的软件开发工具链包括哪些工具?如何使用这些工具进行应用程序和驱动程序的开发?
高通平台的软件开发工具链(SDK)涵盖从芯片到应用层的全栈工具,可分为以下几类:
Hexagon SDK
# 设置环境变量
source <HEXAGON_SDK_PATH>/setenv
# 编译DSP应用
qcc -O3 -target=hexagon-v79-gnu <source_files>
ARM GCC Toolchain
snpe-tensorflow-to-dlc --input_network model.pb \
--input_dim input 1,224,224,3 \
--output_dir converted_model
miscdevice
、platform_driver
)开发硬件驱动。 libudev
或ioctl
与内核交互的用户空间驱动。 # 下载高通内核源码
git clone https://source.codeaurora.org/quic/la/kernel/msm-4.19
# 配置交叉编译工具链
export CROSS_COMPILE=aarch64-linux-gnu-
// 基于platform_driver框架的LED驱动
static int led_probe(struct platform_device *pdev) {
// 硬件初始化
gpio_request(pdev->dev.platform_data, "led_gpio");
return 0;
}
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules
adb push led_driver.ko /system/lib/modules/
insmod led_driver.ko
// 调用JNI接口访问硬件加速
public class MainActivity extends AppCompatActivity {
static {
System.loadLibrary("native-lib");
}
public native String getGPUInfo();
}
#include <jni.h>
extern "C" JNIEXPORT jstring JNICALL
Java_com_example_myapp_MainActivity_getGPUInfo(JNIEnv *env, jobject) {
return env->NewStringUTF("Adreno 640");
}
aarch64-linux-gnu-g++ -o myapp main.cpp -I<sdk_path>/include
// 加载并运行神经网络模型
std::unique_ptr<SNPE> snpe(model_path);
snpe->execute(input_tensor, &output_tensor);
# 设备端
gdbserver :1234 ./myapp
# 主机端
aarch64-linux-gnu-gdb -ex "target remote <device_ip>:1234"
qcsdk
仓库中的驱动示例(如msm/drivers/
目录)。 通过以上工具链和流程,开发者可以高效地开发高通平台的驱动和应用,同时利用其硬件加速能力(如DSP、GPU、NPU)优化性能。