mini2440开发板u-boot移植详细步骤

需积分: 4 116 下载量 25 浏览量 更新于2024-11-29 收藏 10KB TXT 举报
"mini2440 u-boot移植手册提供了详细的步骤,适用于在mini2440学习开发板上进行u-boot的移植工作。手册涵盖了从配置、编译到最终运行的关键过程,确保用户能够成功移植u-boot到该平台。" 在进行u-boot移植时,首先要了解的是MACH_TYPE,它是用来标识硬件平台的常量。在Kernel的`include/asm-arm/mach-types.h`文件中定义了MACH_TYPE_SMDK2440A782,这对应于SMDK2440开发板。同样,在u-boot的`include/asm-arm/mach-types.h`中也有相同的定义,这是为了确保u-boot与内核之间的一致性。在`board/smdk2440a/smdk2440a.c`文件中,通过设置`gd->bd->bi_arch_number`为MACH_TYPE_SMDK2440A来明确开发板类型。 移植过程中,有几个关键的源文件需要关注: 1. `/u-boot.1.1.6/cpu/arm920t/start.S`:这是启动汇编代码,初始化CPU和内存管理单元(MMU)。 2. `/u-boot.1.1.6/board/smdk2440a/lowlevel_init.S`:包含了低级初始化操作,比如设置时钟频率。 3. `/u-boot.1.1.6/lib_arm/board.c`中的`start_armboot()`函数负责调用C语言的初始化过程。 4. `/board/smdk2440a/smdk2440a.c`的`board_init()`函数执行具体的硬件初始化,如MPLL设置,这对于设置系统时钟速度至关重要。 5. `/cpu/arm920t/s3c24x0/serial.c`的`serial_init()`用于初始化串口通信。 6. 同样在`smdk2440a.c`中的`dram_init()`函数用于检测和配置系统内存。 7. `/u-boot.1.1.6/common/main.c`中的`main_loop()`是u-boot的主要循环,处理用户输入和系统操作。 移植过程中还需要注意配置文件的使用,例如`u-boot-1.1.6/Makefile`中的`smdk2440a_config`目标,它用于生成针对SMDK2440的配置。执行`make smdk2440a_config`会生成特定于SMDK2440的配置文件,并且`unconfig`命令可以清除当前配置。 配置完成后,编译u-boot,生成的映像文件会包含如`CONFIG_SETUP_MEMORY_TAGS`和`CONFIG_CMDLINE_TAG`等配置项,它们用于传递启动参数到内核。在`lib_arm/armlinux.c`中的`do_bootm_linux()`函数负责加载和启动Linux内核,传入参数包括内核地址、架构编号(即`bd->bi_arch_number`)以及引导参数地址(`bd->bi_boot_params`)。 总结来说,mini2440 u-boot移植涉及的步骤包括:配置开发板的MACH_TYPE,修改和编译源代码,执行硬件初始化,配置内存,初始化串口和内存,最后设置并启动内核。整个过程需要对嵌入式系统、ARM架构和u-boot有深入理解。通过遵循这个移植手册,开发者可以在mini2440平台上成功运行u-boot,为后续的系统开发和调试打下基础。