用户中心

资讯 > 嵌入式系统

Blob在S3C44B0上的移植

来源:嵌入式学习网2006.07.22阅读 2955

    Bootloader对于嵌入式设备来说至关重要,它涉及到许多硬件相关的知识。对于自制的嵌入式开发板www.cechina.cn,它又是不可跳过的步骤CONTROL ENGINEERING China版权所有,所以很多人对于它感到很头痛。本文将以一款优秀的Bootloader Blob为例www.cechina.cn,详细讲解它的运行原理以及在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又分成两个阶段来执行第一阶段的代码在starts中定义大小为1KB它…

 
   图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中的存储器空间分布。
 
   

Blob在S3C44B0上的移植如图

如图2所示2MB的Flash空间分别分配给出Blob、kernel、ramdisk系统上电后先执行第一阶段代码进行相应的初始化后将Blob第二阶段代码复制…


    
 
    如图2所示CONTROL ENGINEERING China版权所有,2MB的Flash空间分别分配给出Blob、kernel、ramdisk。系统上电后,先执行第一阶段代码,进行相应的初始化后,将Blob第二阶段代码复制的RAM地址bloc_abs_base,然后跳转到第二阶段开始执行。
    在第二阶段中,从汇编跳转到C的Main()函数,继续进行如下工作:
    *外围的硬件初始化(串口,USB等);
    *从Flash中将kernel加载到SDRAM的kernel区域;
    *从Flash中的ramdisk加载到SDRAM的ramdisk区域;
    *根据用户选择,进入命令行模块或启动kernel。
    在我们使用的开发板上,kernel选用uClinux。由于Flash的存储空间有限,所以存放在Flash中的uClinux内核是经过压缩的。Blob将压缩的uClinux内核加载到SDRAM地址0x0C300000。如果选择启动u



























版权声明:版权归控制工程网所有,转载请注明出处!

频道推荐

关于我们

控制工程网 & CONTROL ENGINEERING China 全球工业控制、自动化和仪器仪表领域的先锋媒体

CE全球

联系我们

商务及广告合作
任小姐(北京)                 夏小姐(上海)
电话:010-82053688      电话:18616877918
rendongxue@cechina.cn      xiashuxian@cechina.cn
新闻投稿:王小姐

关注我们的微信

关于我们 | 网站地图 | 联系我们
© 2003-2020    经营许可编号:京ICP证120335号
公安机关备案号:110102002318  服务热线:010-82053688