Linux环境: Ubuntu 11.10
交叉编译工具:arm-linux-gcc4.3.2
目标板:mini2440 Flash 256M
u-boot源代码:由友善之臂提供,基于1.1.6版本修改后的FriendlyARM修改过的U-Boot.1.1.6
下载在Linux公社的1号FTP服务器里,下载地址:
FTP地址:ftp://www.linuxidc.com
用户名:
密码:
在 2011年LinuxIDC.com\12月\Android_sdk_linux_x86.tar.gz 下载
下面马上进入我们的编译之旅!
1、解压缩源码包
tar zxvf u-boot-1.1.6-FA24x0.tar.gz
2、make clean这时候将会出现第一个问题:
/bin/sh: lex: command not found
解决方法可以参见:Linux命令make报错总结 见3、make open24x0_config
配置板子资源
Configuring for open24x0 board...
4、删除Makefile.l文件,否则make的时候会出现一些错误
5、make
编译出现错误:
undefined reference to ‘raise’
解决方法参见:undefined reference to ‘raise’ 见之后编译还是会出现问题。通过找查找论坛资料,一位网友提出make distclean可以解决问题!
make distclean
make open24x0_config
make
6、编译成功
7、在display_banner()函数里面加入自己的一些调试显示信息
printf("###Hello u-boot!My name is care###n\");
8、再次编译u-boot
9、将u-boot.bin烧写到板子的0x33000000地址上
10、复位一下板子,通过超级终端可以看到调试信息
###hello u-boot!My name is care###
大功告成。
最近公司忙着赶项目,我负责的是之前没有接触过的u-boot 。浪费了3天时间,都是在做无用功。主要的原因是切入点不对,3天的时间主要都用来跟着网上的高手移植u-boot。对于源码的阅读反而不是很多。看到了一篇文章(),描述了作者初学u-boot的心得。很有体会,在此附上连接。希望对和我一样的bootloader初学者能有帮助。