u-boot-2010.06移植到TQ2440过程
[复制链接]
移植了半个月,一个国庆假期都被我用掉了,终于把u-boot移植到了我的TQ2440,做了一些记录贴出来吧!
环境:Windows XP + 虚拟机Fedora14 交叉编译器:arm-linux-gcc-4.3.2(EABI) u-boot版本:u-boot-2010-06.tar.bz2 开发板资源: TQ2440 Nor Flash 2M NAND Flash 256M SDRAM 64M DM9000 为了查看源码:在XP 下装了Source Insight便于源码的追踪,很多问题稍微看看源码就知道怎么运用 了。 难点:NAND FLASH的移植,引导问题 主要是依据smdk2410移植TQ2440,两者CPU的主要差别在时钟和Nand Flash控制器上,同时2440 额外增加了一些控制器。因此在时钟中和Nand Flash控制部分需要着重注意。同样Nand Flash的控制 部分是移植的关键问题之一。 我写这个主要是本着学习的态度去做,对ARM更加的了解,同时明白各个开发过程的分析,熟悉嵌 入式Linux的技术细节。 其中可能存在很多的借鉴(抄袭),但是毕竟是自己做过了,就会有收获的。 开始我的u-boot之旅吧。 第一阶段主要是实现板级创建和时钟的配置 1、首先,解压缩源码 [root@Gong-Computer u-boot-2010.06]# tar -jxvf /mnt/hgfs/Linux/u-boot-2010.06.tar.bz2 -C /opt 查看README中的基本信息,对源码有所了解,这个我建议大家看看,其中很多的问题从中找到答案。 [root@Gong-Computer u-boot-2010.06]# vi README 创建自己的板子SMDK2440 1.1、在根目录下打开Makefile文件,添加编译器: [root@Gong-Computer u-boot-2010.06]#vi Makefile 查找CROSS_COMPILE,然后补齐如下 #/*修改编译器,设定为arm-linux-,编译器应该是arm-linux-gcc, #这里只是arm-linux-具体的原因请参看根目录下的config.mk文件,就会发现gcc #在config.mk文件中自动补齐,所以只需要arm-linux-*/ # set default to nothing for native builds ifeq ($(HOSTARCH),$(ARCH)) CROSS_COMPILE = arm-linux-
endif 1.2在board/samsung下创建smdk2440,复制smdk2410目录下的代码到smdk2440中,修改相应的代码。 [root@Gong-Computer u-boot-2010.06]# cd board/samsung/ [root@Gong-Computer samsung]# mkdir smdk2440 [root@Gong-Computer samsung]# cp -fr smdk2410/* smdk2440/ [root@Gong-Computer samsung]# cd smdk2440/ [root@Gong-Computer smdk2440]# mv smdk2410.c smdk2440.c [root@Gong-Computer smdk2440]# vi Makefile 修改目标文件 #COBJS := smdk2410.o flash.o COBJS := smdk2440.o flash.o SOBJS := lowlevel_init.o 1.3、添加库文件 [root@Gong-Computer smdk2440]# cd ../../ [root@Gong-Computer board]# cd ../ [root@Gong-Computer u-boot-2010.06]# cp include/configs/smdk2410.h include/configs/smdk2440.h 1.4、添加编译目标板的编译项 [root@Gong-Computer u-boot-2010.06]# vi Makefile smdk2410_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 samsung s3c24x0 smdk2440_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm920t smdk2440 samsung s3c24x0 然后保存。 *说明: arm :CPU 的架构(ARCH) arm920t:CPU 的类型 mini2440 :对应在board 目录下建立新的开发板项目的目录 samsung:新开发板项目目录的上级目录,如直接在board 下建立新的开发板项目的目录,则这里就为 NULL s3c24x0:CPU 型号 *注意:编译选项格式的第二行要用Tab 键开始,否则编译会出错 1、5编译自己的板子 [root@Gong-Computer u-boot-2010.06]# make smdk2440_config Configuring for smdk2440 board... [root@Gong-Computer u-boot-2010.06]# make
..... t-2010.06/arch/arm/lib/eabi_compat.o -L /usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linuxgnueabi/ 4.3.2/armv4t -lgcc -Map u-boot.map -o u-boot arm-linux-objcopy -O srec u-boot u-boot.srec arm-linux-objcopy --gap-fill=0xff -O binary u-boot u-boot.bin 说明自己的板子以及配置好了。接下来就是配置板子相关的信息。
|