当前位置: 首页 > news >正文

使用VSCode阅读 高通xDSP(ADSP/CDSP) 代码

CP的xDSP代码也需要bear工具去生成compile_commands.json编译器数据库文件。但xDSP的编译工具链(scons)与UEFI所使用的工具链不同,默认情况下不会打印详细编译命令,因此在使用bear前需要对编译脚本进行修改,使得编译时能打印详细编译命令。

 

以8970A10为例:

修改build.sh脚本,在xDSP编译指令后加上-v 2参数,使得编译时能打印详细编译命令

diff --git a/build.sh b/build.sh
index 6f154000c..7cc099d36 100755
--- a/build.sh
+++ b/build.sh
@@ -278,8 +278,8 @@ function build_boot(){

function build_adsp(){
  pushd ${WORKSPACE}/adsp_proc/
- python ./build/build.py -c nicobar -o clean -f ADSP
- python ./build/build.py -c nicobar -o all -f aDSP
+ python ./build/build.py -c nicobar -o clean -f ADSP -v 2
+ python ./build/build.py -c nicobar -o all -f aDSP -v 2
  if [[ ! -f "dsp_nicobar.adsp.prodQ.elf" ]];then
    echo "dsp_nicobar.adsp.prodQ.elf doesn't exist ! Error: Build adsp error"
    exit 1
@@ -289,8 +289,8 @@ function build_adsp(){

function build_cdsp(){
  pushd ${WORKSPACE}/cdsp_proc/
- python ./build/build.py -c nicobar -o clean -f CDSP
- python ./build/build.py -c nicobar -o all -f CDSP
+ python ./build/build.py -c nicobar -o clean -f CDSP -v 2
+ python ./build/build.py -c nicobar -o all -f CDSP -v 2
  public_exit_err $? "[$0,Line:$LINENO] Error: Build cdsp error !"
  popd
}

使用bear生成compile_commands.json编译器数据库文件并编译(只需要生成一次即可)

(jammy)pi@asus:~/workspace/6125_A10_LA10_CP/Non-HLOS$
bear ./build.sh SIM8970 adsp

 

部分项目的编译脚本原生不支持verbose log打印,需要修改编译脚本来打开verbose log的项目有:

6490_A14_LA40_CP

修改方法如下:

在编译命令中增加--verbose=2参数

diff --git a/adsp_proc/tools/build/scons/build/build.py b/adsp_proc/tools/build/scons/build/build.py
index 7ce4c7c33..286250bff 100755
--- a/adsp_proc/tools/build/scons/build/build.py
+++ b/adsp_proc/tools/build/scons/build/build.py
@@ -179,7 +179,7 @@ def build(lg, image_cfg_str, args):ret = 1  # Fail if no build_ids specifiedbuild_time_log = dict()for bid in build_id_list:
-        build_cmd_line = [qcscons_cmd, "-f", qcscons_script, "BUILD_ID=" + bid]
+        build_cmd_line = [qcscons_cmd, "--verbose=2", "-f", qcscons_script, "BUILD_ID=" + bid]build_cmd_line += \[key + "=" + build_flags[key] for key in sorted(build_flags.keys())]build_cmd_line += cleaned_args

 

使用bear生成compile_commands.json编译器数据库文件并编译(只需要生成一次即可)

(xenial)pi@asus:~/workspace/6490_A14_LA40_CP/Non-HLOS$ 
bear ./build.sh SIM9650LU adsp

 

生成的编译器数据库文件在Non-HLOS目录,因此还需要将compile_commands.json软链接或者拷贝到xDSP代码(adsp_proc或cdsp_proc)的目录下。

最后,在vscode中创建一个工作区,并打开xDSP代码(adsp_proc或cdsp_proc)的文件夹,重新加载窗口激活插件即可使用。

http://www.sczhlp.com/news/3276/

相关文章:

  • 实战指南|虚拟电厂管理平台搭建全流程解析(一)
  • 使用VSCode阅读Android C++代码
  • Aspen Plus 15.0下载安装完整安装流程复盘,一句一句带你装好它
  • git 创建版本库
  • 图像生成-FUDUKI解读-流体力学和非平衡态热力学的思想-20 - jack
  • BT136-800-ASEMI电机控制专用BT136-800
  • ActiveMQ在银河麒麟服务器版上安装方法
  • Binary Ninja 5.1 许可分析
  • pod 所在网络命名空间进入
  • FastMCP 案例九(smolagent使用mcp工具)
  • Vibecoding 新体验:实测 Qwen3 Coder 代码生成效果
  • 学习嵌入式的第三十三天-数据结构-(2025.7.25)服务器/多客户端模型 - 指南
  • Daphne + Supervisor 多进程部署配置
  • vue2 jeecgBoot keepalive 解决方案
  • git简易的命令
  • rclone webui 使用/迁移/文件服务器/文件上传下载等
  • 终结警报疲劳!告警分级通知配置实战指南!
  • 状压dp2
  • Django模型查询与性能调优:告别N+1问题
  • 如何设计并搭建云数据库自动化测试框架
  • P1678 烦恼的高考志愿
  • 从资源闲置到弹性高吞吐,JuiceFS 如何构建 70GB/s 吞吐的缓存池?
  • python中datetime模块
  • 2025-8-1总结
  • 验证MySQL主从切换后的数据一致性是数据库可靠性测试的核心场景
  • 自动化运维基础基础1-使用python3通过telnet访问华为交换机
  • Go 注意事项
  • 小学生算法:我国集成电路设计人才缺口到底有多大??
  • Linux for循环一行代码执行命令
  • 《CLIP改进工作串讲》论文精读笔记 - 教程