嵌入式Linux:u-boot-2009.08在2440开发板的移植实践

5星 · 超过95%的资源 需积分: 3 26 下载量 193 浏览量 更新于2024-08-01 收藏 335KB DOC 举报
"嵌入式Linux系统中,u-boot是一个重要的引导加载程序,本文详细介绍了如何将u-boot-2009.08移植到基于Samsung S3C2440微处理器的Mini2440开发板上。该移植过程包括了对NandFlash、NorFlash、网卡、Yaffs文件系统的支持,并且提到了USB下载功能的未来规划。" 移植u-boot到S3C2440平台首先需要了解u-boot的基本结构和启动流程。u-boot分为两个阶段,stage1通常由汇编语言编写,位于`cpu/xxxx/start.S`,负责初始化硬件和设置堆栈;而stage2是用C语言编写的,位于`lib_xxxx/board.c`,执行更复杂的系统初始化任务。 在具体移植过程中,由于u-boot原生不直接支持S3C2440,需要在`board/samsung`目录下创建一个新的开发板项目`my2440`。因为S3C2440和S3C2410硬件资源相近,可以借鉴S3C2410的代码作为起点。通过复制`smdk2410`目录下的所有内容到新建的`my2440`目录,并将`smdk2410.c`重命名为`my2440.c`,然后根据S3C2440的具体差异进行必要的修改。 移植的目标功能包括: 1. **NandFlash支持**:使u-boot能够读写NandFlash,这是嵌入式设备常见的存储介质。 2. **NorFlash启动**:除了NandFlash,u-boot还需要能从NorFlash启动,提供额外的启动选项。 3. **网络支持**:集成对CS8900或DM9000网卡的支持,实现网络功能。 4. **Yaffs文件系统**:Yaffs是专为NandFlash设计的文件系统,需要在u-boot中支持其挂载和操作。 5. **USB下载**:虽然在移植时未实现,但计划支持通过USB进行固件更新。 在完成代码修改后,需要配置u-boot的Makefile,确保针对S3C2440的配置正确。接着,使用arm-linux-gcc-4.3.2编译工具链进行编译,生成适合S3C2440的u-boot映像文件。最后,将编译好的u-boot烧录到开发板的NandFlash中,通过调试工具验证启动和各项功能是否正常工作。 整个移植过程涉及到的知识点包括: 1. **嵌入式系统引导流程**:理解u-boot的启动阶段和各自职责。 2. **硬件平台适配**:针对特定处理器(S3C2440)进行驱动和配置文件的修改。 3. **文件系统支持**:Yaffs的原理和在u-boot中的应用。 4. **网络驱动编程**:如何在u-boot级别集成和初始化网络控制器。 5. **交叉编译**:使用arm-linux-gcc进行目标平台的代码编译。 6. **固件烧录**:将编译后的u-boot映像写入开发板的存储介质。 通过这个移植过程,读者不仅可以掌握u-boot的基本移植方法,还能了解到嵌入式系统从硬件初始化到软件运行的整体流程,对于学习嵌入式Linux开发具有很高的实践价值。