Blob在S3C44B0上的移植
发布时间:2007/4/23 0:00:00 访问次数:437
|
您现在的位置:MBA44B0 的货源和报价 MBA44B0 的相关技术信息 | 其他型号 | 北京万弛商贸有限公司联系人:销售部 电话:010-51653931 | |||||
>>更多供应商 |
Blob在S3C44B0上的移植
引 言
Bootloader对于嵌入式设备来说至关重要,它涉及到许多硬件相关的知识。对于自制的嵌入式开发板,它又是不可跳过的步骤,所以很多人对于它感到很头痛。本文将以一款优秀的Bootloader Blob为例,详细讲解它的运行原理以及在S3C44B0通用处理器上的移植过程,为在嵌入式设备上的后续软件开发打下基础 。
1 Blob简介
Blob是Boot Loader Object的缩写,是一款功能强大的Bootloader。它遵循GPL,源代码完全开放。Blob既可以用来简单的调试,也可以启动Linux kernel。Blob最初是Jan-Derk Bakker和Erik Mouw为一块名为LART(Linux ADVANCED Radio Terminal)的板子写的,该板使用的处理器是StrongARM SA-1100。现在Blob已经被移植到了很多CPU上,包括S3C44B0。
MBA44B0是一款基于S3C44B0的开发板。本文将以运行在MBA44B0开发板上的Blob的源代码为基础,再针对自己的开发板进行Blob的移植。
开发板的主要配置为:
◇三星ARM7处理器S3C44B0;
◇2MB的Flash,地址范围0x0000 0000~0x0020 0000;
◇8MB的SDRAM,地址范围0x0c00 0000~0x0c80 0000;
◇1个串口,2个LED灯;
◇JTAG接口;
◇6MHZ,系统主频为60MHz。
2 Blob的运行过程分析
图1为Blob程序启动流程。
Blob编译后的代码定义最大为64KB,并且这64KB又分成两个阶段来执行。第一阶段的代码在start.s中定义,大小为1KB,它包括从系统上电后在0x00000000地址开始执行的部分。这部分代码运行在Flash中,它包括对S3C44B0的一些寄存器的初始化和将Blob第二阶段代码从Flash拷贝到SDRAM中。除去第一阶段的1KB代码,剩下的部分都是第二阶段的代码。第二阶段的起始文件为trampoline.s,被复制到SDRAM后,就从第一阶段跳转到这个文件开始执行剩余部分代码。第二阶段最大为63KB,单词trampoline词义为“蹦床”,所以在这个程序中进行一些BSS段设置,堆栈的初始化等工作后,最后跳转到main.c进入C函数。
我们的移植主要需要对上述的几个文件进行修改。在进行移植以前,首先需要对存储器的地址空间分配了解清楚。关于存储器空间的定义在/include/ blob arch/MBA44B0.h中。
图2为在Flash中的存储器空间分布,图3为启动后在SDRAM中的存储器空间分布。
|
您现在的位置:MBA44B0 的货源和报价 MBA44B0 的相关技术信息 | 其他型号 | 北京万弛商贸有限公司联系人:销售部 电话:010-51653931 | |||||
>>更多供应商 |
Blob在S3C44B0上的移植
引 言
Bootloader对于嵌入式设备来说至关重要,它涉及到许多硬件相关的知识。对于自制的嵌入式开发板,它又是不可跳过的步骤,所以很多人对于它感到很头痛。本文将以一款优秀的Bootloader Blob为例,详细讲解它的运行原理以及在S3C44B0通用处理器上的移植过程,为在嵌入式设备上的后续软件开发打下基础 。
1 Blob简介
Blob是Boot Loader Object的缩写,是一款功能强大的Bootloader。它遵循GPL,源代码完全开放。Blob既可以用来简单的调试,也可以启动Linux kernel。Blob最初是Jan-Derk Bakker和Erik Mouw为一块名为LART(Linux ADVANCED Radio Terminal)的板子写的,该板使用的处理器是StrongARM SA-1100。现在Blob已经被移植到了很多CPU上,包括S3C44B0。
MBA44B0是一款基于S3C44B0的开发板。本文将以运行在MBA44B0开发板上的Blob的源代码为基础,再针对自己的开发板进行Blob的移植。
开发板的主要配置为:
◇三星ARM7处理器S3C44B0;
◇2MB的Flash,地址范围0x0000 0000~0x0020 0000;
◇8MB的SDRAM,地址范围0x0c00 0000~0x0c80 0000;
◇1个串口,2个LED灯;
◇JTAG接口;
◇6MHZ,系统主频为60MHz。
2 Blob的运行过程分析
图1为Blob程序启动流程。
Blob编译后的代码定义最大为64KB,并且这64KB又分成两个阶段来执行。第一阶段的代码在start.s中定义,大小为1KB,它包括从系统上电后在0x00000000地址开始执行的部分。这部分代码运行在Flash中,它包括对S3C44B0的一些寄存器的初始化和将Blob第二阶段代码从Flash拷贝到SDRAM中。除去第一阶段的1KB代码,剩下的部分都是第二阶段的代码。第二阶段的起始文件为trampoline.s,被复制到SDRAM后,就从第一阶段跳转到这个文件开始执行剩余部分代码。第二阶段最大为63KB,单词trampoline词义为“蹦床”,所以在这个程序中进行一些BSS段设置,堆栈的初始化等工作后,最后跳转到main.c进入C函数。
我们的移植主要需要对上述的几个文件进行修改。在进行移植以前,首先需要对存储器的地址空间分配了解清楚。关于存储器空间的定义在/include/ blob arch/MBA44B0.h中。
图2为在Flash中的存储器空间分布,图3为启动后在SDRAM中的存储器空间分布。
版权所有:51dzw.COM
深圳服务热线:13692101218 13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式
深圳服务热线:13692101218 13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)

深圳市碧威特网络技术有限公司
付款方式