新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > U-Boot在LPC2210上的移植分析

U-Boot在LPC2210上的移植分析

作者:时间:2012-03-22来源:网络收藏

移植相关硬件地址空间分配为:FLASH 2MB 0x80000000~0x801FFFFF;PSRAM 8MB 0x81000000~0x817FFFFF;以太网控制器RTL8019 0x83400000~0x8340001F。由于源码包中已经包含强大的网络技术的支持和丰富的硬件驱动代码,因此移植到新的开发板我们上只需修改和硬件相关代码。

移植U-Boot工作就是添加开发板硬件相关文件、配置选项、然后配置编译。由于目前U-Boot并不支持处理器,比较后我们选择与 同基于ARM7TDMI-S架构的S3C44B0处理器及相关的B2开发板,以S3C44B0和B2开发板为基础来完成移植工作。

首先在cpu目录下建立lpc2210目录并在其下建立和处理器移植相关文件,为开发板取名为dx2210并在board文件夹下建立dx2210 子目录,在SHELL环境下输入命令cp –rf board/dave/B2 board/dx2210将B2开发板的内容复制到dx2210中,并注意修改文件中开发板名称;在include/configs文件夹中建立配置头文件dx2210.h,用命令cp include/configs/B2.h include/configs/dx2210.h将B2.h文件的内容复制到dx2210.h中以便与后面修改;修改顶层Makefile文件为开发板建立新的编译选项,由于U-Boot的源代码是通过GCC和Makefile组织编译的。在源代码顶层目录下的Makefile首先设置开发板的定义,然后递归地调用各级子目录下的Makefile文件,最后把编译过的程序链接成U-Boot可执行映像。因此利用vim在Makefie文件中添加配置命令:

dx2210_config : unconfig

@ ./mkconfig $(@ : _config=) arm lpc2210 dx2210 NULL

各项定义如下:

arm CPU架构(ARCH)

lpc2210 CPU的类型(CPU),其对应于cpu/lpc2210子目录

dx2210 开发板型号(BOARD), 其对应于board/dx2210子目录

NULL 开发板或硬件经销商(VENDER)

这样在执行配置命令make dx2210_config,通过./config脚本可生成include/config.mk的配置文件,硬件平台依赖文件的目录文件可以根据这些定义来确定。

5.2修改include/configs/dx2210.h文件

在include/configs/dx2210.h文件中包含了大部分的全局宏定义。主要修改的宏定义有:#define CONFIG_ 1 //CPU配置型号

#define CONFIG_LPC2210_CLOCK_SPEED 60 //最大CPU操作频率

#define CONFIG_DRIVER_RTL8019 1 //定义以太网控制器型号

#define RTL8019_BASE 0x83400000 //RTL8019的硬件地址

#define CONFIG_SERIAL 1 //串口设置

#define CFG_LOAD_ADDR 0x81008000 //kernel映像加载到RAM空间中的起始地址

此外还需要修改开发板的波特率,配置网络信息,FLASH ROM和RAM的容量大小、地址信息,操作时序等参数。

5.3 cpu/lpc2210目录下相关文件

该目录中包含了Makefile、config.mk、cpu.c、interrupts.c、serial.c、start.S几个文件。其中汇编文件start.S是整个程序的入口,主要设置系统堆栈和工作方式为进入C程序奠定基础。根据RAM地址将中断向量表起始地址 0x0c000000修改为0x81000000,根据LPC2210的芯片手册完成设置CPU速度和时钟频率、为加载Stage2准备RAM空间并将 Stage2加载到RAM中执行、设置堆栈、看门狗、屏蔽所有中断部分的修改。这里注意的是TEXT_BASE变量是在board/dx2210 /config.mk文件中定义,它规定了主程序TEXT段在内存RAM中的起始地址,当u-boot从FLASH中启动后会把Stage2阶段的代码和数据重定位到这个地址开始的RAM中运行以提高速度。复制时要明确Stage2的可执行映像在固态存储设备的存放的起始地址和终止地址,一般来说给 Stage2部分在RAM地址顶端分配1MB的空间,因此经过计算得出TEXT_BASE=0x81700000;serial.c文件是串口设备的驱动代码,在调试部分主要依靠串口产生调试信息,串口波特率设置为115200bit/s;cpu.c文件初始化CPU、由于LPC2210中并没有指令 Cache和数据Cache,则应用源码提供的icache_disable(void)和dcache_disable(void)两个函数禁止这部分代码功能;interrupt.c文件设置系统的各种中断和异常,在阶段应禁止中断的产生。



关键词: Bootloader U-Boot LPC2210

评论


相关推荐

技术专区

关闭