Blob 在ARM上的移植

Blob 在ARM上的移植

ID:38177407

大小:93.50 KB

页数:6页

时间:2019-05-24

Blob 在ARM上的移植_第1页
Blob 在ARM上的移植_第2页
Blob 在ARM上的移植_第3页
Blob 在ARM上的移植_第4页
Blob 在ARM上的移植_第5页
资源描述:

《Blob 在ARM上的移植》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Blob在ARM上的移植时间:2007-06-26 来源: 作者:赵俊良李哲英 点击:1071 字体大小:【大中小】-   Bootloader是嵌入式系统软件开发的第一个环节,它紧密地将软硬件衔接在一起,对于一个嵌入式设备后续的软件开发至关重要。Blob是一款功能强大的Bootloader,S3C44B0是三星公司一款基于ARM7TDMI的嵌入式通用处理器。本文详细介绍Blob在基于S3C44B0的开发板上的运行原理与移植过程。   Bootloader对于嵌入式设备来说至关重要,它涉及到许多硬件相关的知识。对于自制的嵌入式开发板,它又是不可跳过的步骤

2、,所以很多人对于它感到很头痛。本文将以一款优秀的BootloaderBlob为例,详细讲解它的运行原理以及在S3C44B0通用处理器上的移植过程,为在嵌入式设备上的后续软件开发打下基础。1Blob简介   Blob是BootLoaderObject的缩写,是一款功能强大的Bootloader。它遵循GPL,源代码完全开放。Blob既可以用来简单的调试,也可以启动Linuxkernel。Blob最初是Jan-DerkBakker和ErikMouw为一块名为LART(LinuxAdvancedRadioTerminal)的板子写的,该板使用的处理器是Stro

3、ngARMSA-1100。现在Blob已经被移植到了很多CPU上,包括S3C44B0。   MBA44B0是一款基于S3C44B0的开发板。本文将以运行在MBA44B0开发板上的Blob的源代码为基础,再针对自己的开发板进行Blob的移植。开发板的主要配置为:·三星ARM7处理器S3C44B0;· 2MB的Flash,地址范围0x00000000~0x00200000;· 8MB的SDRAM,地址范围0x0c000000~0x0c800000;· 1个串口,2个LED灯;· JTAG接口;·晶振为6MHz,系统主频为60MHz。2Blob的运行过程分析 

4、   图1为Blob程序启动流程。    Blob编译后的代码定义最大为64KB,并且这64KB又分成两个阶段来执行。第一阶段的代码在start.s中定义,大小为1KB,它包括从系统上电后在0x00000000地址开始执行的部分。这部分代码运行在Flash中,它包括对S3C44B0的一些寄存器的初始化和将Blob第二阶段代码从Flash拷贝到SDRAM中。除去第一阶段的1KB代码,剩下的部分都是第二阶段的代码。第二阶段的起始文件为trampoline.s,被复制到SDRAM后,就从第一阶段跳转到这个文件开始执行剩余部分代码。第二阶段最大为63KB,单词t

5、rampoline词义为“蹦床”,所以在这个程序中进行一些BSS段设置,堆栈的初始化等工作后,最后跳转到main.c进入C函数。   我们的移植主要需要对上述的几个文件进行修改。在进行移植以前,首先需要对存储器的地址空间分配了解清楚。关于存储器空间的定义在/include/blobarch/mba44b0.h中。图2为在Flash中的存储器空间分布,图3为启动后在SDRAM中的存储器空间分布。     如图2所示,2MB的Flash空间分别分配给了Blob、kernel、ramdisk。系统上电后,先执行第一阶段代码,进行相应的初始化后,将Blob第二阶

6、段代码复制到RAM地址blob_abs_base,然后跳转到第二阶段开始执行。   在第二阶段中,从汇编跳转到C的Main()函数,继续进行如下工作:·外围的硬件初始化(串口,USB等);·从Flash中将kernel加载到SDRAM的kernel区域;·从Flash中的ramdisk加载到SDRAM的ramdisk区域;·根据用户选择,进入命令行模式或启动kernel。   在我们使用的开发板上,kernel选用uClinux。由于Flash的存储空间有限,所以存放在Flash中的uClinux内核是经过压缩的。Blob将压缩的uClinux内核加载到

7、SDRAM地址0x0c300000。如果选择启动uClinux,那么压缩的uClinux内核将自解压.Text段到0x0c00800(见uClinux/arch/armnommu/Makefile),然后再跳转到该处,开始运行uClinux。具体的uClinux移植在此就不详细讨论了。   在SDRAM的存储器空间分配图中,可以看到有blob_base和blob_abs_base两部分。blob_abs_base大家已经知道了,是Blob将自身的第二阶段代码复制到SDRAM所在的区域,而blob_base则是从Blob进行自升级或调试的区域。举例说明,假

8、如Blob已经能正常运行了,但是对于Flash的擦写还不能支持得很好,就可以使用

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

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

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