一、环境
1、使用的是linux内核版本4.1.x + ARM架构 2、source insight4.0中文版
二、工具包下载
有需要的小伙伴也可以下载工具包**(本文需要用到的工具都有)** 工具包里面有source insight4.0中文版、PF_Prj_Gen.sh脚本、lkc2sicx.py 脚本、以及source insight白色主题样式(具体操作请看文件下操作文档) 链接:https://pan.baidu.com/s/1Ejxz89B_kTEMty9Gu_y7dA?pwd=n4ya 提取码:n4ya 插入图片描述](https://img-blog.csdnimg.cn/bf6ac463316f4cd9a65de97cd1cf3827.png)
三、source Insight4.0的使用
(以Source Insight 4.0为例) 0、source Insight4.0安装过程可以参考博客:https://blog.csdn.net/tuwulin365/article/details/117387331
1、安装完source Insight软件后,先把准备打开的内核源码放在一个目录下(例如:D:\linux-imx-rel_imx_4.1.15_2.1.0_ga)
2、新建一个工程,项目名任意。项目数据存放路径选择内核源码目录(例:D:\linux-imx-rel_imx_4.1.15_2.1.0_ga) 写好项目名和存储地址后就按“OK”,然后继续按OK 继续按OK 找到内核源码,如上图所示,然后按 添加树/“add tree” 最后效果图如下,然后就按关闭
四、同步文件
新的工程需要同步文件,否则查看某个函数定义时会出现symbol not found:XXXXX
五、去除linux内核不必要的文件
上诉步骤做完以后,会发现linux内核文件很多,作者这个内核也有5W多个文件,有很多个文件函数都重复定义的,不方便我们查看。
1)使用PF_Prj_Gen.sh脚本
参考博客:https://blog.csdn.net/qq_30027083/article/details/89524520 (脚本可以在本文提供的工具包中下载,也可以在上述博客中下载) 在ubuntu中使用PF_Prj_Gen.sh脚本,具体操作: 1、首先一定要编译一下kernel源码,如果是建立uboot,那么就编译uboot源码。保证编译通过 2、再将下载的PF_Prj_Gen.sh脚本复制到存放到(编译过的) linux内核源码目录下(例:ebf_6ull_linux_test)
chmod 777 PF_Prj_Gen.sh
3、再命令行执行PF_Prj_Gen.sh脚本,(必须要保证outfile文件夹不存在),命令:
sudo ./PF_Prj_Gen.sh . ./outfile
4)再将生成的outfile文件夹下的FileList_SourceInsight.txt放到Windows任意一个路径上 5)回到source Insight软件,点击菜单:项目 —> 添加和移除项目文件 --> 删除全部 --> 从列表中添加 --> FileList_SourceInsight.txt —>关闭 6)最后可以看出我们的内核其实只需要4千多个文件就可以了
五、使用内核条件编译
参考:https://www.freesion.com/article/49471445233/ 内核中除了很多没用到的文件,代码中也有很多条件编译,像进去一个函数的定义中,会发现有几个.c都有这个函数的定义。那么这个时候就需要我们的条件编译了。ps:需要用到我们编译内核时的.config配置文件 1)(工具包)下载 lkc2sicx.py 转换脚本,然后放到已经编译过的linux内核的目录下(这个脚本是将.config配置文件转换为xml)
2)进入ConvertLinuxKernelConfig2SourceInsightConditionsXml-1.0 下 3)将内核的配置文件.config放到ConvertLinuxKernelConfig2SourceInsightConditionsXml-1.0 下,然后使用lkc2sicx.py:
sudo cp ../.config config
sudo ./lkc2sicx.py -s config -d example
4)将生成的example.conditions.xml放到Windows随便一个文件夹下 5)回到source Insight软件,点击菜单:项目 —> 默认项目设置–> 条件–> 导入 --> 替换所有条件 —>载入 —> 生成的example.conditions.xml —》后面全部选择OK 6)等同步完所有文件后,菜单:选项 ---- >风格选项 —> (风格名)Inactive Code —> 删除线选择ON —>完成/OK
7)效果图:
|