u-boot-1.3.4移植到mini2440+128M nand boot(1)

简介:
阶段   下载源码


    1) U-boot 源码下载地址: ftp://ftp.denx.de/pub/u-boot/ 里边的 u-boot-1.3.4.tar.bz2 文件,放到你的开发目录里;
    2)
、解压文件: tar -jxvf u-boot-1.3.4.tar.bz2
    3)
、下载交叉编译工具  
http://www.handhelds.org/download/projects/toolchain/
,使用 3.3.2 ,如果使用 3.4.1 的编译 u-boot 会产生软件浮点的编译错误,建议使用 3.3.2 u-boot ,用 3.4.1 编译内核。当然你也可以使用友善之臂 http://www.arm9.net/download-arm-linux-gcc-4.3.2.asp arm-linux-gcc-4.3.2.tgz ,这个 arm-linux-gcc-4.3.2 with EABI 相当不错,可以编译所有的程序;本人就是使用 4.3.2
    4)
、建立交叉编译环境
首先: #tar xvzf arm-linux-gcc-4.3.2.tgz     C /     
注意: C 后面有个空格,并且  C 是大写的,它是英文单词“ Change ”的第一个字母,
在此是改变目录的意思。  
执行该命令,将把  arm-linux-gcc 安装到 /usr/loca/arm/4.3.2 目录。
然后:把编译器路径加入系统环境变量,运行命令  
#vi /root/.bashrc 
编辑 /root/.bashrc 文件,在最后一行   export PATH=$PATH:/usr/local/arm/4.3.2/bin  ,保存退出。
最后:重新登录系统 ( 不必重启机器,开始 ->logout  即可 ) ,使以上设置生效。

 

2 阶段   测试编译环境是否正确

 

1 )、在 u-boot-1.3.4/board 下找个与 2410 相似的开发板,这里 smdk2410 为例。
2
)、将 u-boot-1.3.4/board/smdk2410 目录复制到当前目录下,并改名为 mini2440
3
)、把 smdk2410.c 改名为 mini2440.c ,修改 Makefile 中的  COBJS := mini2440.o flash.o ,保存。
4
)、将 u-boot-1.3.4/include/configs/smdk2410.h ,复制到当前目录,并改名为 mini2440.h
6
)、在 u-boot-1.3.4/Makefile , 大概 2490 多行找到
smdk2410_config : unconfig
 @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
在它下边添加
mini2440_config : unconfig
 @$(MKCONFIG) $(@:_config=) arm arm920t mini2440 NULL s3c24x0
(注意 @$(MKCONFIG) 前面必须是 TAB 键)

7 )特别注意:   u-boot1.3.3 及以上版本 Makefile 有一定的变化,使得对于 24x0 处理器从 nand 启动的遇到问题。也就是网上有人说的:无法运行过 lowlevel_init 。其实这个问题是由于编译器将我们自己添加的用于 nandboot 的子函数 nand_read_ll 放到了 4K 之后造成的(到这不理解的话,请仔细看看 24x0 处理器 nandboot 原理)。 u-boot 根本没有完成自我拷贝,你可以看 uboot 根目录下的 System.map 文件就可知道原因。
解决办法其实很简单:
278 行的 __LIBS := $(subst $(obj),,$(LIBS)) $(subst $(obj),,$(LIBBOARD))
改为 __LIBS := $(subst $(obj),,$(LIBBOARD)) $(subst $(obj),,$(LIBS))

8 )、进入 u-boot-1.3.4 目录,先来个 #make distclean
然后 # make mini2440_config
Configuring for mini2440 board...
9
)、之后就可以 # make 了,如正常编译通过,表明环境搭建好。









本文转自 zjb_integrated 51CTO博客,原文链接:http://blog.51cto.com/zjbintsystem/209987,如需转载请自行联系原作者
目录
相关文章
|
6月前
|
Linux 内存技术
U-BOOT小全(六):BootLoader源码(UBoot-Kernel 1)
U-BOOT小全(六):BootLoader源码(UBoot-Kernel 1)
78 0
|
6月前
|
Linux 编译器 C语言
U-BOOT小全(四):BootLoader源码(SPL-UBoot 1)
U-BOOT小全(四):BootLoader源码(SPL-UBoot 1)
194 0
|
6月前
|
存储 缓存 安全
U-BOOT小全(五):BootLoader源码(SPL-UBoot 2)
U-BOOT小全(五):BootLoader源码(SPL-UBoot 2)
204 0
|
3月前
|
存储 缓存 监控
【嵌入式SD NAND】基于FATFS/Littlefs文件系统的日志框架实现
综上所述,构建一个基于FATFS/Littlefs文件系统的日志框架需要对文件系统的操作有深入理解,并以此为基础设计一套完整的日志处理机制。这样的框架不仅能够确保日志数据的完整性和系统的鲁棒性,同时还能够满足嵌入式系统对于性能和资源使用的严格要求。
126 4
|
6月前
NUC980修改内核支持spi-nand
NUC980修改内核支持spi-nand
74 2
|
6月前
|
Shell Linux 芯片
u-boot和bootloader到底有什么区别
u-boot和bootloader到底有什么区别
79 0
|
6月前
|
Shell Linux 芯片
嵌入式系统中u-boot和bootloader到底有什么区别
嵌入式系统中u-boot和bootloader到底有什么区别
452 1
嵌入式系统中u-boot和bootloader到底有什么区别