慢慢学Linux驱动开发,第十一章,开始U-boot移植第一步
老婆去逛街了,不知道是不是给我省电话费呢,最近几天通话时间都很少,也不知道她在那边生活费够不够,也不让我给她打点钱,估计饿瘦了都,老婆……她去逛街了,我只好继续奋斗喽,为了将来好好照顾她,hehe:)
买tiny6410时,虽然说什么东西都给我们弄好了,但也是这什么都弄好了,以至于可以让我们弄得东西没有了,比如上面的LED驱动啊等等,都不是模块形式的,或者说是没法卸载的,所以我想自己学习移植一套Linux上去,自己写驱动会不会学得多一点,这几天一直在纠结学习的方法论的问题,最后还是实践派打败了理论派,于是,开始…………
首先是开发环境的搭建,不用多说,arm-gcc交叉编译器应该都会装吧,记得加入环境变量以方便使用。
还有就是u-boot和Linux内核的源代码的下载,去官网下吧,别去别的地方了。
这里使用的U-boot版本是u-boot-2010.09,Linux版本为linux-2.6.29。
u-boot-2010.09这个版本其实对对很多CPU都是直接支持的,首先进入board目录看一下,我的Tiny6410使用的是三星的S3C6410,进入board/samsung/目录下,发现有smdk2400、smdk2410和smdk6400,很遗憾没有6410,不过以前了解过三星6400和6410几乎是差不多的,应该是可以在其基础上进行修改的。
1)在board/samsung/下建立开发板的项目文件夹,取名叫tiny6410,并把smdk6400文件夹里的东西全部复制过去,并修改其文件名,如图所示。
2)进入u-boot根目录/include/configs/,复制smdk6410.h粘贴更名为tiny6410.h。
3)进入u-boot根目录的makefile文件中,首先指定交叉编译器找到CROSS_COMPILE?=在等号后面添加arm-linux-,然后找到SMDK6400的配置信息,依样画葫芦,來一个tiny6410的
#########################################################################
## ARM1176 Systems
#########################################################################
tiny6410_noUSB_config \
tiny6410_config : unconfig
# 注意下面应为tab健,不可以用4个空格代替
@mkdir -p $(obj)include $(obj)board/samsung/tiny6410
@mkdir -p $(obj)nand_spl/board/samsung/tiny6410
@echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
@if [ -z "$(findstring tiny6410_noUSB_config,$@)" ]; then \
echo "RAM_TEXT = 0x57e00000" >> $(obj)board/samsung/tiny6410/config.tmp;\
else \
echo "RAM_TEXT = 0xc7e00000" >> $(obj)board/samsung/tiny6410/config.tmp;\
fi
@$(MKCONFIG) tiny6410 arm arm1176 tiny6410 samsung s3c64xx
@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
4)测试编译新建的th6410开发板项目
出现如图Configuring for tiny6410 board...字样,说明设置成功,继续
#make ARCH=arm //编译后在根目录下会出现u-boot.bin文件,则u-boot移植的第一步就算完成了
当然编译是需要一段时间的,耐心等待吧,不过别高兴太早,可能有人说这也太简单了吧,其实这里编译出来的u-boot.bin对自己的tiny6410开发板是没有任何用处,以上的移植只是搭建了一个tiny6410开发板u-boot的框架,要使其功能实现,还要根据tiny6410开发板的具体资源情况比如晶振频率等来对u-boot源码进行修改,方才可以使用。
------------------------------------------------------------------------------------------------------------------
作者:庞辉
出处:http://www.cnblogs.com/pang123hui/
本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名庞辉(包含链接).