标签:
u-boot移植
(1)移植环境
u-boot版本:u-boot-2011-03
Linux平台:XP下虚拟机Ubuntu12.04
交叉编译工具:arm-linux-gcc-4.5.1
arm开发板:mini6410
CPU:S3C6410
DDR:256M
Nand Flash:256M
网卡:DM9000EP
(2)移植目标
支持Nand启动
支持Nand读写
支持yaffs写入
支持tftp下载
下载UBoot把它解压,然后得到u-boot-2011-03的文件夹,然后进去,并且做下面几件事情:
1:进入arch这个文件夹,把出arm外的前部文件夹删掉
2:进入board这个文件夹,把除samsung外前部文件夹删掉
3:进入include/configs,把除smdk6400.h外的所有文件删除。
4: 把顶层目录下有一个叫onenand_ipl的文件夹删除掉,因为没有用到。
5:进入nand_spl/board,把除samsung外全部文件删除掉。
6:再进入arch/arm/cpu文件夹,把除arm1176外其他文件夹删除掉。
7:再进入arch/arm/include/asm文件夹,把除arch-s3c64xx文件外带arch-XX的文件夹删除
8:再进入board/samsung文价夹下,把除smdk6400外其他文价夹删除掉。
至此已经把没用到或者不想见到它的文件夹跟文件删除掉了。爽吧。
(3)因为6410和6400资源差不多,只是主频和外设有点差别,所以可以参考6400进行设置。首先在board/samsung/下建立自己开发板项目,取名mini6410
#cd u-boot-2011.03/board/samsung/ //进入目录
#mkdir mini6410 //创建mini6410文件夹
(4)参照board/samsung/smdk6400建立自己的mini6410模板,然后再修改
#cp -rf smdk6400/* mini6410/ //将6400下所有的代码复制到mini6410下
#cd mini6410 //进入th6410目录
#mv smdk6400.c mini6410.c //将th6410下的smdk6400.c改名为mini6410.c
#vim Makefile //修改mini6410目录下Makefile的编译项,如下:
COBJS := mini6410.o //因在mini6410下我们将smdk6400.c改名为mini6410.c
(5)修改u-boot根目录下的Makefile文件。还要指定交叉编译器为arm-linux-,查找到smdk6400_config的地方,在其下面按照smdk6400_config的格式建立mini6410_config的编译选项。
mini6410_noUSB_config \
mini6410_config : unconfig
@mkdir -p $(obj)include $(obj)board/samsung/mini6410
@mkdir -p $(obj)nand_spl/board/samsung/mini6410
@echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
@if [ -z "$(findstring mini6410_noUSB_config,$@)" ]; then \
echo "RAM_TEXT = 0x57e00000" >> $(obj)board/samsung/mini6410/config.tmp;\
$(MKCONFIG) $(@:_config=) arm arm1176 mini6410 samsung s3c64xx; \
else \
echo "RAM_TEXT = 0xc7e00000" >> $(obj)board/samsung/mini6410/config.tmp;\
$(MKCONFIG) $(@:_noUSB_config=) arm arm1176 mini6410 samsung s3c64xx; \
fi
@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
注:*说明:arm :CPU的架构(ARCH)
arm1176:CPU的类型
smdk6410 :对应在board目录下建立新的开发板项目的目录
samsung:新开发板项目目录的上级目录,如直接在board下建立新的开发板项目的目录,则这里就为NULL
s3c64xx:CPU型号
*注意:编译选项格式的第二行要用Tab键开始,否则编译会出错
(6)进入nand_spl/board/samsung/,新建目录mini6410并将smdk6400下的所有文件复制到mini6410中
cd nand_spl/board/samsung/
mkdir mini6410
cp -rf smdk6400/* mini6410/
(7)编译新建的mini6410开发板项目
#make mini6410_config ARCH=arm //如果出现Configuring for th6410 board...则表示设置正确
#make ARCH=arm //编译后在根目录下会出现u-boot.bin文件,则u-boot移植的第一步就算完成了
编译失败,提示:
arch/arm/cpu/arm1176/start.o: In function `_end_ofs‘:
/home/max/U-Boot/u-boot/arch/arm/cpu/arm1176/start.S:61: undefined reference to `_end‘
这个错误要修改
uboot.lds
nand_spl/u-boot.lds
nand_spl/board/samsung/smdk6400/u-boot.lds
board/samsung/smdk6400/u-boot-nand.lds
加入 _end = .;
在这一行的前面
标签:
原文地址:http://www.cnblogs.com/killer-xc/p/4381978.html