Tiny210移植UBOOT 2012版之编译与移植指南

需积分: 14 4 下载量 48 浏览量 更新于2024-09-08 收藏 946KB PDF 举报
"tiny210 移植 2012 版 UBOOT" 在移植 2012 版 UBOOT 到 tiny210 平台时,需要解决编译 UBOOT 2012 版本时遇到的问题,包括修改部分代码和移植 SPL 的两种方法。 **移植 UBOOT 2012 版本遇到的问题** 在编译 UBOOT 2012 版本时,需要修改部分代码,例如定义 `CONFIG_SYS_INIT_SP_ADDR` 宏,以确保栈指针的正确初始化。同时,需要定义 `CONFIG_SYS_LOAD_ADDR` 宏,以确定加载地址。 `gd=(gd_t*)((CONFIG_SYS_INIT_SP_ADDR)&~0x07);` 这行代码用于初始化全局描述符表指针,确保正确的栈指针初始化。 **移植 SPL 的两种方法** 移植 SPL 有两种方法: **方法一:使用 CONFIG_SPL_FRAMEWORK** 在 `MAKEFILE` 中添加 `CONFIG_SPL_FRAMEWORK` 变量,以便编译 `spl.c` 文件。同时,需要定义 `CONFIG_SPL_STACK` 变量,以避免编译错误。 `a.` 首先,编译 `spl.c` 文件,并将其链接到执行文件中。 `b.` 然后,添加 `CONFIG_SPL_LIBGENERIC_SUPPORT` 变量,以便编译 `string.o` 文件。 `c.` 最后,添加 `CONFIG_SPL_LIBCOMMON_SUPPORT` 变量,以便编译 `common/console.c` 文件。 **方法二:修改 spl.c 文件** 在 `spl.c` 文件中定义 `Spl_boot_device` 变量,以选择启动设备。然后,编译 `spl.c` 文件,并将其链接到执行文件中。 **低级初始化** 在 `lowlevel_init` 函数中,需要进行时钟初始化,参考裸机开发文件中的汇编时钟初始化代码。宏定义在 `arch\arm\inc` 目录下。 **时钟初始化** 在时钟初始化中,需要使用汇编代码,以确保正确的时钟初始化。 **总结** 移植 2012 版 UBOOT 到 tiny210 平台需要解决编译时遇到的问题,包括修改部分代码和移植 SPL 的两种方法。同时,需要进行低级初始化和时钟初始化,以确保正确的系统启动。