移植uboot到armer9开发系统上.pdf
首先了解ARMer9开发系统硬件设计上和三星原装SMDK2410之间的区别。让uboot在
ARMer9开发系统上跑起来,目前只需要关注如下的硬件区别,解决了下面这个问题,uboot
就可以在ARMer9开发系统上正常地从串口输出,进入提示符。很多命令都可以使用,当然有
些命令需要做修改。
SMDK2410:norflash是AMD的1M的;
ARMer9:是IntelE28F128J3A,两片并联,一共32MBytes.
一个uboot-1.1.1.tar.bz2.;
tarjxvfuboot-1.1.1.tar.bz2;
在ubootboard/smdk2410下的flash.c需要修改。这个是Flash的驱动,如何写,需
要参考E28F128J3A的Datasheet.这里我们提供一个我们修改好的flash.c文件,您只需要
将这个文件覆盖掉board/smdk2410下的文件即可。
(注意:你要安装了交叉编译器才行哦)
修改uboot下的Makefile,将
ifeq($(ARCH),arm)
CROSS_COMPILE=arm-linux-
endif
修改成
ifeq($(ARCH),arm)
CROSS_COMPILE=/opt/host/armv4l/bin/armv4l-unknown-linux-
endif
修改processor.h中:
uniondebug_insn
{
u32arm;
u16thumb;
}
修改成:
uniondebug_insn
{
u32arm_mode;
u16thumb_mode;
}
然后配置板子
makesmdk2410_config
然后
make
在uboot生成uboot.bin;
通过sjf2410w程序将uboot.bin到norflash中,地址为0的地方;
串口接在UART0上,uboot的启动信息将输出。
你将发现很多命令都可以使用了。uboot果然强大。
关于网络部分,因为ARMer9开发系统使用也是CS8900A,所以代码部分几乎不用做改动,
只需要在include/configs/smdk2410.h中看看,有没有定义CONFIG_ETHADDR,
CONFIG_IPADDR,CONFIG_SERVERIP这些宏没有,如果没有,请定义好。
#defineCONFIG_ETHADDR00:00:e0:ff:cd:15
#defineCONFIG_IPADDR
#defineCONFIG_SERVERIP00
就这样修改一下,网络部分功能就通了,哈哈。
可以使用tftpboot命令从tftp服务器程序到系统内存中。
#tftpboot0zImage
#bootm0
利用uboot可执行映象的通用方法
uboot源代码的tools/下有mkimage工具,这个工具可以用来制作不压缩或者压缩的多
种可启动映象文件。
mkimage在制作映象文件的时候,是在原来的可执行映象文件的前面加上一个0x40字节的头,
记录参数所指定的信息,这样uboot才能识别这个映象是针对哪个CPU体系结构的,哪个OS
的,哪种类型,加载内存中的哪个位置,点在内存的那个位置以及映象名是什么
root@Glym:/tftpboot#./mkimage
Usage:./mkimage-limage
-llistimageheaderinformation
./mkimage-Aarch-Oos-Ttype-Ccomp-aaddr-eep-nname-d
data_file[:data_file...