全部博文(333)
分类: 嵌入式
2015-02-09 11:58:33
对于嵌入式学习经常就要和Uboot和内核打交道,Source Insight便是我认为非常好的源码查看工具。对于Uboot和内核源码的查看,它有着非常好的索引方式,且拥有非常方便的快捷键操作方式。对于庞大的源码树最好就是建立一个工程来管理。但当你查找一个关键词的时候,会出现许多与之相关的文件,不同的CPU和单板会有着同名的文件,很明显并不是所有的文件都是我们需要查看的。那么如何建立一个“节约”且合适的工程呢?在这里分享下我的经验。
一、建立工程文件夹
最好建立一个自己的管理Source Insight所有工程文件夹(例如在D:\建立文件夹 D:\SourInProject),然后分别创建单独的工程文件夹。在这里我们建的是Uboot-2010.03工程,那么就建立一个文件夹名为:Uboot-2010.03Pro,在里面放置Uboot-2010.03源码包,和一个准备放置Source Insight所创建的Uboot-2010.03工程包SourInPro。这样就很清晰,源码和工程包单独放在一个命名为Uboot-2010.03Pro下,即不同的工程都带有一个源码包和一个创建后的工程包。
二、如何创建工程
(1)、首先打开Source Insight软件,配置好软件所认识的文件后缀,点击菜单栏上Options->Document Options,在Document Type下拉列表中,选择C Source File,然后在右边File filter:文本框中添加一些重要文件后缀;*.S;*.lds;*defconfig;Makefile等(否则点击Add Tree添加目录树时,一些重要文件不被加入到工程,则要手动一个个加入,当然最简单的办法就是加个 ;*.* 就好)。然后再点击菜单栏上的Project->New Project,在弹出的New Project对话窗口,New project name:(工程名)在这填Uboot-2010.03,Where do you want to store the project data files?(你想把你的工程文件存放在哪里),在这我们填在上一步创建的D:\SourInProject\Uboot-2010.03Pro\SourInPro。然后一路OK,出现一个名为:Add and Remove Project Files对话框,下面我们就针对此对话窗口操作;
(2)、在Add and Remove Project Files对话框中,我们点击左边Directory我们预先放好的Uboot-2010.03的源码包,此时在右边File Name将会显示所有的源码目录文件。那么我们如何选择哪些文件是我们以后查看源码更为紧密关联的呢?在Lib_arm目录下有一个Board.c,同样在Lib_i386目录下也会有一个Board.c。很明显我们不希望有那么多用不着的同名文件在工程出现,像有些目录是和单板相关的(例如:Lib_arm,Lib_i386,Lib_avr32等),很显然我们只关心Lib_arm目录。所有我们只要加入一些与我们所关心的单板有关的文件;
(3)、首先,我们可以把所有的文件都加进工程,毕竟大部分目录文件还是通用的,然后我们去除一些我们所不关心的目录和文件。点击右边File Name 框中顶层目录..(一个向上的箭头标识),这里把Show only known document types(所熟知的文件类型)去掉勾选,否则很多重要的文件像start.S,Config.mk等其它的文件没有被加入。然后点击Add All 在对话框中Add to Project 钩上Recursively add lower sub-directories(意思递归添加子目录文件);
(4)、去除我们所不关心的目录和文件。首先我们从目录的名字上就可以看出那些目录是与单板相关的,像Board目录就是个单板目录,里面有许多不同单板目录文件,那么我们先把整个目录Remove Tree,然后再添加我们所关心的单板目录,在这里我们进入Board/Samsung/Smdk2410点击Add All;
(5)、回到顶层目录我们再往下看,发现一个Cpu目录,从名字上知道这里肯定包括许多不同的CPU,在这里我们的单板是S3C2410属于ARM920T架构,进入/Cpu/Arm920t,首先看到许多单独的文件(比如Makefile、start.S、U-boot.lds等,一般顶层的单独文件都是通用的),我们点击Add All 在弹出的Add to Project对话框中去掉Include top level sub-directories,然后进入S3c24x0目录点击Add All全部加入;
(6)、我们再回到顶层目录,进入Include目录,发现有很多Asm-xxx的目录,从名字上知道,Asm-arm是arm相关的头文件,Asm-i386是x86相关的头文件。显然我们不需要那么多不相关的目录,我们回到顶层目录,选中Include目录,点击Remove Tree去除整个目录,然后再进入添加我们关系的目录和文件。同样看到许多单独的文件,我们点击Add All 在弹出的Add to Project对话框中去掉Include top level sub-directories,待会我们再处理这些子目录。进入/Include/Asm-arm目录,同样把这里面的单独文件先加入,同上步一样操作。同是ARM架构的也有不同的架构,在这里我们发现Arch-s3c24x0是我们所关系的,进入/Include/Asm-arm/Arch-s3c24x0目录,点击Add All加入所以文件。再回到/Include/Asm-arm目录有一个Proc-armv目录,进入,点击Add All加入里面全部文件。这时,/Include/Asm-xxx目录我们已经搞定Asm-arm,其它不用。接着回到/Include目录,发现Bedbug目录,我们不认识,没关系去不加入,进入/Include/Bedbug,点击Add All OK全部加入。再接着发现是Configs目录,显然是一些配置文件,对于不同的CPU不同的单板有不同的配置文件,在这里我们用的是Smdk2410.h,点击Add加入。最后接着是一些通用的目录和文件,从Cramfs目录开始,按shift,选择到最后一个目录,点击Add Tree加入剩下的目录。此时/Include目录我们全部搞定;
(7)、回到U-boot-2010.03顶层目录,接着/Include目录的是一些Lib_xxxx,显然是一些不同架构的库文件。首先,我们把所有的Lib_xxx目录去除,选中所有的Lib_xxx目录(除了Lib_generic通用库文件),点击Remove Tree全部去除。然后我们进入/Lib_arm目录,只是一些库文件,点击Add All我们全部加入。此时/Lib_xxx相关目录我们选择Lib_arm目录且全部解决;
(8)、最后再回到U-boot-2010.03顶层目录,剩下的从Nand_spI目录开始到最后的目录都是一些通用的,在第一步我们已经全部加入此时我们不用理会。关闭Add and Remove Project Files对话窗口;
(9)、最后我们点击Source Insight菜单栏下的Project->Synchronize Files进行同步生成索引。至此,一个比较满意的工程建立完毕。