### U-boot 1.1.6 的移植到 TQ2440 开发板
#### 移植背景与目的
U-boot(Universal Boot Loader)是一个开放源码的启动加载程序,广泛应用于各种嵌入式系统中,特别是基于ARM架构的设备。TQ2440是天嵌科技的一款开发板,基于Samsung的S3C2440处理器,拥有丰富的外设资源,包括SDRAM、NorFlash、NANDFlash和网卡等。
然而,由于官方文档的缺失,对于希望在TQ2440上运行U-boot的用户来说,移植过程可能会遇到一定的困难。本移植文档旨在填补这一空白,提供了详尽的步骤和说明,帮助用户顺利完成U-boot的移植工作,从而实现对TQ2440开发板的全面控制和利用。
#### 移植环境配置
为了确保移植工作的顺利进行,首先需要准备一个合适的开发环境。具体而言:
- **交叉编译器**:使用crosstools_3.4.5_softfloat版本,这是一个专门用于嵌入式系统开发的工具链。
- **硬件平台**:S3C2440处理器作为核心,配备256M SDRAM、2048K×8bit NorFlash、256M×8Bit NANDFlash Memory和DM9000网卡。
- **软件资源**:U-boot 1.1.6版本,从SourceForge网站下载获取。
#### 文件删减优化
为了使移植过程更加高效,可以针对性地删减一些不必要的文件,以减少文件浏览和管理的复杂性。主要操作包括:
- 删除board/目录下除smdk2410以外的所有其他目标板文件夹。
- 删除cpu/目录下除arm920t以外的所有其他cpu目录。
- 删除根目录下的lib_XXX库文件目录,保留lib_arm和lib_generic。
- 删除include/目录下asm-XXX的文件目录,仅保留asm-arm。
- 删除include/configs目录下除smdk2410.h以外的所有其他配置头文件。
#### 编译测试流程
建立自己的目标板系统并进行编译测试是移植过程中的关键步骤。具体操作包括:
1. **创建目标板目录**:将board/smdk2410目录复制为TANG2440目录,修改smdk2410.c为TANG2440.c,并调整Makefile中的COBJS。
2. **配置目标板**:在include/configs/目录下复制smdk2410.h为TANG2440.h,并在顶层Makefile中增加相应的配置项,明确指定架构、CPU类型、开发板型号、开发者和SOC。
3. **配置交叉编译器**:在顶层Makefile中设置交叉编译器的路径,以便编译过程中正确调用。
4. **编译测试**:执行make clean清理之前的构建结果,然后执行make TANG2440_config进行配置,最后make all进行编译。若无错误,将生成u-boot.bin文件。
#### 增加对S3C2440的支持
为了让U-boot能够完美适配S3C2440,还需要对内存配置、外设驱动等方面进行详细的调整。例如,在board/TANG2440/lowlevel_init.S中,通过修改相关寄存器配置来适应S3C2440的硬件特性,如SDRAM的配置等。
整个移植过程不仅涉及到对U-boot源代码的修改,还涵盖了编译环境的搭建、硬件资源的识别与配置,以及最终的测试验证。完成这一系列操作后,U-boot将能够在TQ2440上稳定运行,为后续的操作系统引导、硬件调试和应用开发打下坚实的基础。