"本文档是关于将u-boot-2012.04版本移植到SMDK6410开发板的总结,主要涉及了针对S3C6410处理器的移植步骤和关键代码修改。移植完成后,可以通过设置IP地址、服务器IP和MAC地址等环境变量来启动u-boot,并通过TFTP等命令进行网络操作。"
在移植u-boot-2012.04到S3C6410(SMDK6410)的过程中,主要涉及到以下几个关键知识点:
1. **CPU架构适配**:
S3C6410是一款基于ARM1176JZ-S内核的处理器,因此需要对u-boot中的`arch/arm/cpu/arm1176/start.S`文件进行调整。在代码的132行添加`uboot_cmd_start`和`uboot_cmd_end`标签,用于标记命令段的起始和结束位置。
2. **板级支持**:
在`arch/arm/lib/board.c`文件中,通常需要根据目标硬件的具体配置进行修改。例如,如果开发板没有NOR闪存,可能需要删除或修改与NOR相关的代码。在373行到375行之间,添加了特定地址(0x57e00000)的设定,以适应开发板的需求。
3. **EABI兼容性**:
对于`arch/arm/lib/eabi_compat.c`,在移植过程中可能需要处理EABI(Embedded Application Binary Interface)的兼容性问题。在本例中,第17行的`intraise`函数被注释掉,这可能是由于特定的信号处理未完成或者不适用于该特定的配置。
4. **环境变量设置**:
在u-boot启动后,需要手动设置IP地址、服务器IP和MAC地址等环境变量,以进行网络通信。例如:
```
[zhangsan@nand]# setipaddr 192.168.1.20
[zhangsan@nand]# setserverip 192.168.1.254
[zhangsan@nand]# setethaddr 11:22:33:44:55:66
```
这些变量也可以在`smdk6400.h`头文件中以宏定义的方式预设。
5. **编译与烧录**:
完成代码修改后,执行`make`命令进行编译,生成的`u-boot-nand.bin`文件烧写到NAND的0x0-0x40000区域,系统会从NAND启动并运行新的u-boot。
6. **调试与问题排查**:
文档中提到nand、tftp等功能经过测试均可用,但若遇到问题,可以联系作者邮箱寻求帮助。
移植u-boot的过程需要熟悉目标硬件的特性、处理器架构以及u-boot源码结构。上述修改仅仅是移植过程的一部分,实际操作中可能还需要根据具体的硬件配置和需求进行更多的定制化工作,如中断初始化、设备驱动加载、内存配置等。对于初学者,建议参照官方文档、相关教程以及已有的移植经验进行操作。