1. 引言
source insight是一直在用的代码阅读器了,升级到4.0之后,基本功能都有了,觉得也挺顺手。
主要问题就是,在面对很多文件的大工程中,导入文件和同步时间都太长了,尤其是Linux内核,文件又多,而且代码源文件还在linux服务器上,是smb挂载上来的。建一个工程大几个小时,都不敢关,因为有时候下次再一开,工程崩了,我也就崩了。
因为这个原因,转去了Vscode一段时间,某天突然在网上看到了可以精准导入linux源码到SI的方法,赶紧来试一下。
基本原理就是,把整个工程完整编译一遍,根据编译过程中的中间变量生成依赖关系,根据依赖关系导入SI。
2. 资源
主要用到的是 “Generate_Kernel_Uboot_Project_forIDE” 工具。
github上有
下不动的可以来下这个:
3. 步骤
3.1 重编完整代码
先进入linux内核源码路径,把之前的编译内容全部清除掉。然后重编代码。
#!/bin/sh
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v7_defconfig
#make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j16 > build_log.txt
用distclean而不是clean。
3.2 根据编译结果生成对应的依赖文件
进入2中下载的工具Generate_Kernel_Uboot_Project_forIDE文件夹,
运行
./PF_Prj_Gen.sh ../../../I.MX6U/openedv/1__DemoCode/11___OpenEdv_Board_Uboot_Linux/linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek ./RelyFile
格式是:
./PF_Prj_Gen.sh linux源码路径 输出文件夹
需要自己把Linux源码的路径写入。
注意输出文件夹不要和当前文件夹下已有文件夹同名,会报错。
输出如下:
会在当前文件夹下生成一个RelayFile的文件夹,进入后可以找到一个FileList_SourceInsight.txt文件。
3.3 建立source insight工程
新建一个SI工程,前面都随便。
直到添加文件的地方。
选择add from list,导入刚才生成的FileList_SourceInsight.txt,再sync一下即可。
4. 使用遇到的问题
4.1 Source code is : [unknown]
之前在家里找IMX6的工程很方便。
但是在单位找xilinx ZYNQ的工程就没找到。
运行脚本时,报错:
看了一下脚本,
脚本是在当前目录下去找 u-boot 和 vmlinux 来判断当前是linux工程还是uboot工程。
所以我在linux目录下,touch了一个vmlinux,再运行脚本,就成功了。
4.2 add from list 不成功
有些时候add from list 一直不成功。
add之后先未响应,卡一会,恢复之后工程里也没有文件添加进来。
于是我修改了FileList_SourceInsight.txt
1、把所有的斜杠换成反斜杠
2、使用列编辑模式,在每行前面添加了完整的路径。
重新add form list 就好了。