uboot移植,自己试了好几次都没成功,昨天有幸看到一位同学的博文,按其方法终于初步成功了,这里只是自己整理了下,便于自己查看。
不说废话,列出本人移植平台:
硬件:OK6410开发板,256MB DDR 2GB NAND FLASH
软件:系统——ubuntu10.04
交叉编译环境——arm-linux-gcc-4.3.2
移植源码——u-boot-2010.03
现在一步步开始:
第一步:安装交叉编译环境
(1)直接下载交叉编译环境到根目录:arm-linux-gcc-4.3.2.tgz
root**#tar -jxvf arm-linux-gcc-4.3.2.tgz (默认解压到/usr/local/arm目录下)
现在交叉编译程序集都在/usr/local/arm/4.3.2/bin目录下
(2)修改环境变量,把交叉编译器的路径加入到PATH
修改~/.profile gedit ~/.profile 在最后加入 export PATH=$PATH:/usr/local/arm/4.3.2/bin
(3)立即使新的环境变量生效: root**#source ~/.profile (以后每次开机后都都要输一次才能有用)
(4)检查是否加入到PATH路径 root**#echo PATH
(5)测试是否安装成功 arm-linux-gcc -v (如果正确安装会显示交叉编译环境的编译信息)
第二步:uboot移植
在网站上
解压文件,然后
1.进入u-boot-2010.03/board,把除samsung以外的文件夹删除
2.进入u-boot-2010.03/cpu,把除arm1176以外的文件夹删除
3.进入u-boot-2010.03\include,把asm-*(注意,仅仅是asm-开头的文件夹)中的,除了asm-arm和asm-generic以外的文件夹删除。
4.进入u-boot-2010.03\include\configs,只要留下smdk6400.h,其他的东西删除
5.在u-boot-2010.03,把lib_*开头的文件夹,除了lib_arm和lib_generic以外的文件夹删除
7.进入board/samsun目录下,会发现有smdk6400文件夹,建立新文件夹smdk6410,并将smdk6400里的所有文件复制到smdk6410中,进入smdk6410文件夹将smdk6400.c更名为smdk6410.c,并且打开此文件,将里面的6400全部改为6410。打开Makfile,将里面的6400改为6410。结束到 u-boot-2010.03根目录
8.进入到nand_spl/board/sansung/,复制smdk6400,并黏贴,将副本smdk6400更名为smdk6410,更改Makefile文件,将里面的6400全部改成6410。进入到include/asm/arch复制s3c6400.h 并改名为s3c6410.h
9.进入到 include/configs/ 复制smdk6400.h,并将副本改为smdk6410.h。
10.进入到 u-boot-2010.03根目录,打开Makefile,将CROSS_COMPILE ?=改成为CROSS_COMPILE ?=arm-linux-,然后搜索6400,会跳转到如下图所示
复制以上代码,并把6400改为6410
这个时候如果直接运行make smdk6410_config 然后在运行make可能会出错。
解决办法:
1:在修改后的smdk6410.c中,头文件包含 #include <asm/arch/s3c6410.h>的话,因为在文件夹asm/arch中没有s3c6410.h,先暂时使用asm/arch/s3c6400.h或者把asm/arch中的s3c6400.h复制后修改为s3c6410.h
2:在/u-boot-2010.03/include/asm/arch-s3c64xx中s3c6400.h,复制一份,并将副本名改为s3c6410.h,用gedit 打开文件,将里面的6400全都改为6410,保存退出。
上述两者选其一之后,运行make smdk6410_config 然后在运行make 暂时运行正确,输出最后一行为 cat nand_spl/u-boot-spl-16k.bin u-boot.bin > u-boot-nand.bin |
|