一、啰嗦的话
开发板是去年买的,之前由于工作原因,时间不是很充足,遇到少许困难很快放弃了。导致开发板荒废了很久。后来想想实在不应该,这样的学习态度不可取,变下定决心把FL2440研究个通透,如果想以后更好的从事嵌入式技术这条道路,这些东西还是要学会的,坚韧的学习态度也是必须的。在把内核和相关驱动移植完后才发现,之前一直畏惧的也并不是那么可怕,只要肯花心思和时间,问题总会得到解决的。看着蛋疼的FL2440自带的bootloader,萌发出为FL2440移植u-boot的念头。移植完成后写下的移植过程的学习日记以供自己日后反省和参考用。 移植工作刚开始的时候,起初以为和内核移植相差不大,满怀信心。上网找了很多资料,熟悉bootloader原理之后,又找了很多u-boot原理和u-boot移植的资料,准备好后便参照tekkaman等大牛的移植文档着手,等花了好几天把相关程序移植好,把过程中的错误解决后,心里那个激动,终于可以下载到开发板运行了。谁知运行u-boot后串口什么信息都没输出。又是花了几天时间也没有搞掂。最后做了一下总结,我犯了一个严重的错误就是依葫芦画瓢,一下子参考大牛们的移植文档把我的u-boot全部改完再编译运行,修改的地方太多,期间哪里出现错误也很难定位。学习最忌不肯脚踏实地而想登天,于是乎我决定重新按部就班一步步地开始我的u-boot移植工作。最终移植驱动了成功。
二、开发环境
主 机: Fedora14(Linux-2.6.33.7) 开发板: FL2440--128MB Nandflash(Linux-2.6.33.7) 编译器: arm-linux-gcc-4.3.2 u-boot: u-boot-2009.08
三、移植步骤 移植的步骤主要如下: 1. u-boot从SDRAM运行。 2. u-boot从nand flash启动。
四、u-boot简易原理 1. 了解u-boot主要的目录结构和启动流程,如下图。

u-boot的stage1代码通常放在cpu/xxxx/start.S文件中,他用汇编语言写成; u-boot的stage2代码通常放在lib_xxxx/board.c文件中,他用C语言写成。 各个部分的流程图如下:
 |