u-boot 在arm开发板上的移植以及代码分析

u-boot 在arm开发板上的移植以及代码分析

ID:9302570

大小:63.00 KB

页数:18页

时间:2018-04-27

u-boot 在arm开发板上的移植以及代码分析_第1页
u-boot 在arm开发板上的移植以及代码分析_第2页
u-boot 在arm开发板上的移植以及代码分析_第3页
u-boot 在arm开发板上的移植以及代码分析_第4页
u-boot 在arm开发板上的移植以及代码分析_第5页
资源描述:

《u-boot 在arm开发板上的移植以及代码分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、U-Boot在44B0X开发板上的移植以及代码分析1.u-boot介绍      u-boot是一个opensource的bootloader,目前版本是1.1.2。u-boot是在ppcboot以及armboot的基础上发展而来,相当的成熟和稳定,已经在许多嵌入式系统开发过程中被采用。由于其开发源代码,其支持的开发板众多。      为什么我们需要u-boot?显然可以将uClinux直接烧入flash,从而不需要额外的引导装载程序(bootloader)。但是从软件升级的角度以及程序修补的来说,软件的自动更新非常重要。事实上,引导装载

2、程序(bootloader)的用途不仅如此,但仅从软件的自动更新的需要就说明我们的开发是必要的。同时,u-boot移植的过程也是一个对嵌入式系统包括软硬件以及操作系统加深理解的一个过程。2.u-boot移植的框架移植u-boot到新的开发板上仅需要修改和硬件相关的部分。在代码结构上:1)在board目录下创建gold44b目录,创建gold44b.c以及flash.c,memsetup.S,u-boot.lds等。不需要从零开始,可选择一个相似的目录,直接复制过来,修改文件名以及内容。我在移植u-boot过程中,选择的是Dave/B2目录

3、。由于u-boot已经包含基于s3c24b0的开发板目录,作为参考,也可以复制相应的目录。2)在cpu目录下创建s3c44b0x目录,主要包含start.S,interrupts.c以及cpu.c,serial.c几个文件。同样不需要从零开始建立文件,直接从arm720t复制,然后修改相应内容。3)在include/configs目录下添加gold44b.h,在这里放上全局的宏定义等。4)找到u-boot根目录下Makefile修改加入gold44b_config:unconfig@./mkconfig$(@:_config=)arms3

4、c44b0gold44b5)运行makeev44bii_config,如果没有错误就可以开始硬件相关代码移植的工作3.u-boot的体系结构1)总体结构u-boot是一个层次式结构。做移植工作的软件人员应当提供串口驱动(UARTDriver),以太网驱动(EthernetDriver),Flash驱动(Flash驱动),USB驱动(USBDriver)。目前,通过USB口下载程序显得不是十分必要,而且开发板上也没有USB接口,所以暂时没有移植USB驱动。驱动层之上是u-boot的应用,command通过串口提供人机界面。我们可以使用一些命

5、令做一些常用的工作,比如内存查看命令md。Kermit应用主要用来支持使用串口通过超级终端下载应用程序。TFTP则是通过网络方式来下载应用程序,例如uClinux操作系统。2)内存分布gold44b的flash大小2M(8bits),现在将0-40000共256k作为u-boot的存储空间。由于u-boot中有一些环境变量,例如ip地址,引导文件名等,可在命令行通过setenv配置好,通过saveenv保存在40000-50000(共64k)这段空间里。如果存在保存好的环境变量,u-boot引导将直接使用这些环境变量。正如从代码分析中可以

6、看到,我们会把flash引导代码搬移到DRAM中运行。u-boot的代码在DRAM中的位置在u-boot-1.1.2/board/gold44b/config.mk配置如下:TEXT_BASE=0x0C700000。这样,引导代码u-boot将从0x00000000处搬移到0x0C700000处。特别注意的由于gold44buClinux中断向量程序地址在0x0c0000000处,所以不能将程序下载到0x0c0000000出,通常下载到0x0c0080000处。4.start.S代码结构1)定义入口一个可执行的Image必须有一个入口点并

7、且只能有一个唯一的全局入口,通常这个入口放在Rom(flash)的0x0地址。例如start.S中的.globl_start_start:值得注意的是你必须告诉编译器知道这个入口,这个工作主要是修改连接器脚本文件(lds)。开发板上的u-boot.lds如下:OUTPUT_FORMAT("elf32-littlearm","elf32-littlearm","elf32-littlearm")OUTPUT_ARCH(arm)ENTRY(_start)SECTIONS{.=0x00000000;.=ALIGN(4);.text:{cpu/s

8、3c44b0/start.o(.text)*(.text)}.=ALIGN(4);.rodata:{*(.rodata)}.=ALIGN(4);.data:{*(.data)}.=ALIGN(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。