根据实验,已修改补充原作者漏掉的部分。
闲来无事,给自己的开发板移植一下新的U-boot 最新的为2011.03
步骤1
在移植中首先用
tar -jxvf u-boot-latest.tar.bz2
解压到自己的目录下
步骤2
然后进入u-boot-2011.03文件夹
cd u-boot-2011.03/board/samsung/
建立smdk6410文件夹
mkdir smdk6410
复制6400文件夹下的所有代码到6410下
cp -rf smdk6400/* smdk6410
进入smdk6410
cd smdk6410
将smdk6400_and_spl.c和smdk6400.c改为
smdk6410_and_spl.c和smdk6410.c
打开smdk6410中的Makefile
将COBJS-y := smdk6400.o
改为COBJS-y := smdk6410.o
打开board/samsung/smdk6410/u-boot-nand.lds
在.bss __rel_dyn_start (OVERLAY) : {
前加上 _end = .;
这个是Uboot中的一个bug,会导致undefined reference to `_end'
还要修改后面步骤4中nand_spl/board/samsung/smdk6410文件夹的u-boot.lds
回U-boot根目录 进入include/configs/
复制smdk6400.h 并改名为smdk6410.h
步骤3
打开U-boot根目录下的Makefile
首先指定交叉编译工具
找到CROSS_COMPILE?=在等号后面添加arm-linux-
找到smdk6400_noUSB_config \
将有关6400的所有行复制并将其中的6400替换为6410
smdk6410_noUSB_config \
smdk6410_config : unconfig
@mkdir -p $(obj)include $(obj)board/samsung/smdk6410
@mkdir -p $(obj)nand_spl/board/samsung/smdk6410
@echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
@if [ -z "$(findstring smdk6410_noUSB_config,$@)" ]; then \
echo "RAM_TEXT = 0x57e00000" >> $(obj)board/samsung/smdk6410/config.tmp;\
else \
echo "RAM_TEXT = 0xc7e00000" >> $(obj)board/samsung/smdk6410/config.tmp;\
fi
@$(MKCONFIG) smdk6410 arm arm1176 smdk6410 samsung s3c64xx
@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
步骤4
从U-boot根目录,进入nand_spl/board/samsung/
cd nand_spl/board/samsung/
新建目录smdk6410并将smdk6400下的所有文件复制到smdk6410中
mkdir smdk6410
cp -ar smdk6400/* smdk6410/
进入nand_spl/board/samsung/smdk6410文件夹
打开u-boot.lds
在.bss __rel_dyn_start (OVERLAY) : {
前加上 _end = .;
还要修改nand_spl/board/samsung/smdk6410下的文件名,把6400相关的改成6410
步骤5
再修改u-boot根目录进入nand_spl/board/samsung/smdk6410/Makefile中的,把6400改成相关的6410,与第四步修改的文件匹配。
步骤6
然后make smdk6410_config
make编译通过,呵呵
阅读(1724) | 评论(0) | 转发(0) |