热门关键字:  ubuntu  分区  linux系统进程  函数  Fedora

uboot移植记录之一

来源: 作者: 时间:2008-06-19 Tag: 点击:
uboot的整个移植过程我们可以分为两个阶段:一,移植可以从Nor flash启动的uboot 二,移植可以从Nand flash启动的uboot.

首先移植可以从Nor flash启动的uboot,这个阶段相对简单一点,不需要修改太多的东西。
测试一下默认的smdk2410_config配置能否在你的板子上正常运行
1.编译uboot1.1.4

#make smdk2410_config
#make ARCH=arm

注:编译针对arm的平台时,uboot默认使用arm-linux-gcc编译,若交叉编译器名字不一样,需要自行在Makefile里修改。
错误信息一:
make[1]: *** No rule to make target `hello_world.srec', needed by `all'. Stop.
make[1]: Leaving directory `/work/src/u-boot-1.1.4/examples'
解决方法:
打开 examples/Makefile
把example文件夹下的Makefile中的
第116行
%.srec: % 改成 %.srec: %.o
第129行的
%.bin: % 改成 %.bin: %.o
错误信息二:
cc1: Invalid option `abi=apcs-gnu'
  make[1]: *** [hello_world.o] Error 1
  make[1]: Leaving directory `/root/u-boot-1.1.4/examples'
  make: *** [examples] Error 2  
解决办法:
出错的文件是/cpu/arm920t/下的config.mk:

  PLATform_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu)
改成:
  PLATform_CPPFLAGS +=$(call cc-option,-mapcs-32,$(call cc-option,-mabi=apcs-gnu,))

2.若编译成功,则会在uboot源码下产生u-boot.bin文件。将这个文件烧录到nor flash。
注意: 默认u-boot的smdk2410_config是不支持nandflash的,只能在nor flash内运行,所以只能烧录到nor flash内运行。如果烧录到nandflash下是不能运行的。

3.参考开发板资料,设置好跳线,从nor flash启动。
启动信息如下:

U-Boot 1.1.4 (Dec 30 2007 - 23:25:02)
U-Boot code: 33F80000 -> 33F9696C BSS: -> 33F9AC58
RAM Configuration:
Bank #0: 30000000 64 MB
*** Warning - bad CRC, using default environment
Flash: 512 kB
In: serial
Out: serial
Err: serial

发现有3个问题:
1) 启动时开发板蜂鸣器一直在响。
怀疑是我的开发板蜂鸣器对应的GPIO口和smdk2410的GPIO口地址不对应,从而导致启动时误赋了值,一直在响。
2) Warning - bad CRC, using default environment
这个问题是因为第一次使用uboot时没有设置过变量,设置保存一下就不会在出现了。
3) Flash: 512 kB
我的板子Nor flash是1MB的,而这里显示512KB

4.下面进行uboot源码修改
这里主要根据开发板硬件的实际情况,基于smdk2410的源码进行修改(主要是配置文件include/smdk210/smdk2410.h),并解决如上碰到的问题1和3。
若对硬件板子的情况不是太了解,可以参考2410的datasheet以及开发板供应商提供的硬件资料。

从我开发板uboot第一次启动的情况来看,问题不是太大。
首先修改include/smdk210/smdk2410.h。里面包含了很多对目标板设置的宏。
smdk2410.h的内容和要修改的地方如下:


#define CONFIG_BOOTDELAY 3
/*#define CONFIG_BOOTARGS "root=ramfs devfs=mount console=ttySA0,9600" */
#define CONFIG_ETHADDR 08:00:3e:26:0a:5b
#define CONFIG_NETMASK 255.255.255.0
#define CONFIG_IPADDR 192.168.1.103
#define CONFIG_SERVERIP 192.168.1.102
#define CONFIG_BOOTFILE "uImage"
#define CONFIG_BOOTCOMMAND "tftp 30000000 uImage\; bootm 30000000"
//这是bootdelay后运行的命令

//这些宏对应与uboot的变量,即在uboot命令行下执行printenv打印出的变量。可以在这里设置(定义为默认值),也可以在uboot启动后通过setenv命令设置。
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册