uboot结合git开发流程总结
uboot结合git开发流程
系统环境:Linux czy-desktop 2.6.32-38-generic #83-Ubuntu SMP Wed Jan 4 11:13:04 UTC 2012 i686 GNU/Linux
交叉工具:gcc版本:gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203)
预备知识:
1、#建立一个我们自己的uboot目录,这里我用MYUBOOT变量代替
2、uboot源码包,这里假设叫做netra-uboot-2010.06.tar.bz2
3、注意用户权限,这里一直使用root权限
4、确认交叉编译器没有问题,我的交叉编译路径/opt/CodeSourcery/Sourcery_G++_Lite,这里我用变量MYCROSS_COMPILE代替
5、git的安装及操作
6、对自己开发板芯片架构需了解
当我们得到一个源码包后,通过解压命令tar解压至指定目录。
#tar xvf netra-uboot-2010.06.tar.bz2 -C $MUUBOOT
通常的,在安装了git的linux系统上,我们可以进入该目录执行git命令,使用git命令来托管我们的源代码,当我们开发的时候就不比担心修改源码失误导致混乱,当然如果没有安装就可以跳过下面的步骤:
#cd $MYUBOOT/netra-uboot-2010.06
#git init
#git config --global user.name "lichao"
#git config --global user.email "lichao@kedacom.com"
#git add .
#git commit -m "first submitted"
#git log
注意,为了不跟踪我们在编译的时候生成的文件和目录,我们可在git init的目录中新建.gitignore文件,并向其中写入不需要跟踪的文件,这里我们就不具体讨论git用法.
此时,你将会发现如下信息:
之后,我们就可以进行自己对源码的修改了。
这里假设我们拥有一块kedacom公司的开发板h800,cpu为TI公司生产的Netra系列DM8168芯片,架构ARM,我们开始配置属于自己板子的uboot.
#cd $MYUBOOT\netra-uboot-2010.06
1.修改主Makefile
#vi Makefile
找到最接近我们开发板的配置,复制一份,并进行修改,下面这个是h600的配置
上面最后一行@$(MKCONFIG) -a $(@:_config=) arm arm_cortexa8 h600 kedacom ti81xx参数意义如下:
arm: cpu架构(ARCH)
arm_cortexa8: cpu类型,对应于cpu/arm_cortexa8目录
h600 : 开发板型号(board),对应于board/kedacom/h600目录
kedacom: 开发者,经销商,对对应于board/kedacom目录
ti81xx : 片上系统(SOC)
阅读完上述配置后,我们根据他,向Makefile中添加自己的配置.
注意:在每行打头的@前面都是TAB分隔符.
修改完毕后保存退出.
2.建立自己的开发板目录,复制并修改代码文件
#mkdir board/kedacom/h800
我们配置了经销商kedacom,所以必须在board下建立相应的目录,如果次参数为null,则无需建立经销商目录.
#cp -rf board/kedacom/h600/* board/kedacom/h800/
#cd board/kedacom/h800
#vi config.mk
找到上述行,将连接脚本路径修改为我们自己的路径
保存退出!
3.创建开发板的配置文件
#cp $MYUBOOT/netra-uboot-2010.06/include/configs/h600.h h800.h
至此,所有配置文件和相关代码已经创建完毕,接下来如果你想看看我们修改了哪些uboot配置和增加了哪些
内容.我们通过git命令和之前的对比就可以查看到:
#cd $MYUBOOT/netra-uboot-2010.06
#git status
上面显示,我们修改了一个Makefile文件,增加了新文件夹h800和h800.h文件.
#git status board/kedacom/h800
上面显示我们在board/kedacom/h800文件夹中增加了新文件board.c等.
#git diff
上面显示我们在主Makefile中加入了新内容,及图中'+ '打头后的部分.
我们先保存当前的所有修改,并提交至仓库中,方便接下来的工作.
#git commit -a -m "create relevant h600 code file ok"
#git log
从上面我们可以看到我们一共提交了2次.
这里,我们试着编译一下我们自己刚配置的uboot.
在编译之前,我们我们最好先执行如下2条命令设置你开发板的架构和你交叉编译工具链路径
#export ARCH=arm
#export CROSS_COMPILE=$(MYCROSS_COMPILE)/bin/arm-none-linux-gnueabi-
#make h800_config
#make u-boot.bin
如果编译通过,在进行下面的修改,否则请检查你之前的操作或交叉编译器的配置以及你使用的uboot是否存在问题
我的可以正常编译通过,说明没有问题,接下来,我们需要针对性的对我们开发板的特性进行设置:
首先我们找到h800.h
#cd $MYUBOOT/netra-uboot-2010.06/include/configs
#vi h800.h
这里为了举例,只是选择性的进行配置,方便大家学习,基本上,所有关于uboot命令,开发板flash支持,内核载入地址等
都在此文件中进行配置.
# define CONFIG_BOOTDELAY 5 /*设置启动等待时间*/
#define CONFIG_SERIAL1 1 /*选择串口作为输出端口*/
#define CONFIG_EXTRA_ENV_SETTINGS /*配置所需要的环境变量*/
#define CONFIG_BOOTCOMMAND /*配置所需命令等*/
下面进入开发板相关代码目录
#cd board/kedacom/h800
一般添加分区,初始化等操作都在此目录的文件中,由于板子的差异,出现的文件名可能不相同,这里就不做修改.
当你认为修改好了自后你就可以执行入下操作了
#export ARCH=arm
#export CROSS_COMPILE=$(MYCROSS_COMPILE)/bin/arm-none-linux-gnueabi-
#make h800_config
#make u-boot.bin /*具体是u-boot.in还是uboot.bin,可以查看主Makefile文件*/
最后,会在$MYUBOOT/netra-uboot-2010.06/arch/arm/boot中生成你所需要的boot文件.
成功后不要忘记把我们现在的配置提交到git仓库,方便以后回滚的时候可以回到任意提交时的状态!
#git commit -a -m "fix h800 code file ok"
#git log
说明:上面在第二次提交时将提交信息里的"h800"误写成"h600",请读者注意.