使用VSCode阅读 高通Modem 代码

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

修改方法如下:

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

diff --git a/modem_proc/tools/build/scons/build/build.py b/modem_proc/tools/build/scons/build/build.py
index 7ce4c7c33..306b2da9c 100755
--- a/modem_proc/tools/build/scons/build/build.py
+++ b/modem_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 specified
     build_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/6125_A10_LA10_CP/Non-HLOS$ 
bear ./build.sh SIM8970 mpss

 

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

最后,在vscode中创建一个工作区,并打开modem_proc的文件夹,重新加载窗口激活插件即可使用。

 
posted @ 2025-08-01 15:20  PYPYN  阅读(43)  评论(0)    收藏  举报