9.编译uboot及SI的基本使用


9.1.找到官方移植好的uboot
(1)最初的uboot的源码是在uboot官网上下载的。该源代码可能没有针对我们当前使用的开发板的移植版本,甚至可能找不到我们当前开发板上使用的SoC对应的移植版本。
(2)SoC厂商在推出一款SoC和配套开发板后,该厂商的工程师会去uboot官网下载uboot源码,然后根据自己的SoC和配套开发板进行进一步的移植。譬如三星的S5PV210芯片所配套的开发板是SMDKV210。
(3)具体的开发板供应商首先会购买三星的SMDKV210开发板,然后进行裁剪,即根据公司业务去掉无用的接口功能、硬件替换或降低配置。经过硬件替换和功能裁剪之后形成新的开发板和三星官方的SMDKV210有所不同,因此uboot也不同,但是因为SoC是相同的,则两者的相似度在60%以上。所以具体开发板供应商会以三星SMDKV210中移植的uboot为蓝本来移植得到自己开发板上的uboot移植版本。一般购买开发板时厂商提供的BSP中的uboot源码就是该厂商自己移植过的。
(4)总结:uboot源码一般有3种获取途径,分为uboot官方、SoC官方、具体开发板的官方。


9.2.在linux源生目录下配置编译
(1)具体开发板的官方uboot一般在其提供的BSP中。BSP即board support package也就是板级支持包,一般由开发板供应商提供,该BSP中的内容就是该开发板所有相关的源代码、文档、教程、工具等。
(2)将整个BSP打包文件弄到linux的源生目录中去解压,不要在windows中的共享文件夹中解压。如果你需要编译工程就就一定不要在windws共享文件夹下,否则一定会出错。因为整个工程在配置编译的时候会用到符号链接,但windows中木有符号链接这种玩意;还有就是文件名的大小写问题,因为两个系统之间的差异会导致出现找不到文件名这种现象。
(3)建议分别在linux下和windows下各维持一份uboot。我们可以在linux中进行uboot编译,在windows中进行uboot代码查看分析。因为在windows中有SourceInsight等很好的工具辅助我们查看和编辑代码,在linux下编辑和查看代码都很麻烦。


9.3.配置uboot
(1)uboot和linux kernel等大型复杂的项目,都不能直接编译,它们都需要先配置然后才能编译。
(2)配置交叉编译工具链路径;进入uboot源码根目录,打开Makfile,配置交叉编译工具链的路径为:
ifeq ($(ARCH),arm)
CROSS_COMPILE = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-
(3)配置GEC210硬件平台;进入uboot源码根目录,在根目录下执行配置命令”make gec210_nand_config”,若出现”Configuring for gec210_nand board…”则说明uboot配置正确,经实践发现GEC210开发板官方uboot使用”make gec210_nand_config”该配置命令后可正常编译。而x210的开发板则需执行配置命令”make x210_sd_config”,正确的提示信息为”Configuring for x210_sd board…”。


9.4.编译uboot得到uboot.bin
(1)在编译之前必须要检查arm-linux-gcc的安装是否正确,包括版本检查和安装路径的检查。
(2)首先检查编译环境中是否安装了合适的交叉编译工具链版本,我们这里使用的是arm-2009q3,因为它是三星官方和GEC210开发板厂商官方开发uboot时使用的。直接将arm-2009q3解压至”/usr/local/arm/”目录下即可。其次检查uboot根目录下的Makefile中的交叉编译工具链的路径设置是否与我们实际安装的交叉编译工具链的路径是否一致,否则编译会出错。
(3)编译;进入uboot源码根目录,执行命令”make -j2”即表明执行多线程编译,若主机为多核心电脑,可提高编译速度。
(4)清除uboot源码包;有时我们需将源码工程进行中间文件的清理以便正式发布,则可执行”make clean”(轻度的清除,相当于make的反向操作)或”make distclean”(重度的清除,相当于 make和make gec210_nand_config的反向操作)。


9.5.为啥使用SourceInsight
(1)对于一个真正的项目,往往有成百上千个.c文件和.h文件,代码量非常大,代码之间关联非常复杂,代码的阅读、分析越来越难。譬如在当前位置引用了某个函数,但该函数的实现却在另外一个目录下的某个文件中存放,这样代码的查找和阅读非常困难,我们需要有工具来解决该问题,于是乎就有了SourceInsight。


9.6.建立工程项目及添加文件
(1)首先俺先在目标源码的根目录下新建”SI_Proj”文件夹用于存放SI工程项目文件,然后在SI软件中新建工程:”Project->new project”,输入工程项目名字(建议和工程名相对应)和工程文件存放的位置(工程项目文件和工程中管理的源代码文件目录可以不同(建议放在一起)),譬如”uboot_jiuding”(工程名字)和”D:\winshare\uboot\uboot_jiuding\SI_Proj”(工程文件存放目录)。然后点确定进入new project settings,接受默认设置直接点”ok”进入下一步。
(2)向工程项目中添加文件,在左侧选择”uboot-jiuding”这个目录,然后点右侧边栏的”add tree”即可添加,发现添加了1054个文件进去,然后点击”close”即可。


9.7.解决新类型文件无法识别添加
(1)SI软件只能发现自己识别了的文件类型,对于它未识别的文件类型它就看不到,譬如start.S文件就未包含在内,因为SI默认不认识.S后缀的文件。
(2)第1种方法是自己手动配置:在”Options->Document Options”,然后在”Document Type”下拉选项中选择”C Source File”,然后在右侧”File filter”文本框中输入”*.S”,然后点”close”;第2种方法是加载配置文件:前提是必须存在配置文件如”AstonSICFG”,在”Options->Load configration->Load”,然后选择相应的配置文件如”AstonSICFG”,点击”打开”。
(3)添加好新类型配置后,需将新类型文件添加到项目文件中,在”Project->Add and Remove Project Files”,在上面的”File Name”输入盘符(譬如”d:”)并敲回车可切换盘符路径,然后在下面选择”uboot-jiuding”这个目录,然后点右侧边栏的”add tree”即可添加,发现添加了额外的19个文件,然后点击”close”即可。


9.8.解析工程文件
(1)SI工作原理就是预先把所有源代码中的所有符号全部解析存储到数据库中,然后等我们进行符号查找时,SI不是查文件而是查数据库帮我们索引符号,因此SI查找速度非常快。
(2)因此我们使用SI查阅源码前应该预先进行源码解析。在菜单栏”Project->Syneronize Files”,选中上面2个选项即”Add new files automatically”和”Remove missing files from project”,然后点击”OK”即可。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值