关于三星S3C44B0X目标板的uClinux Bootloader

技术分类: 嵌入式系统  | 2005-09-12
来源:电子产品世界 | 作者:盛磊

       1.6 硬件初始化阶段二
       遵循“必要”原则继续对硬件资源进行初始化,包括S3C44B0X内置的GPIO、Cache、中断控制器和UART等。Bootloader中暂未用到的设备可以留待使用之前再进行初始化。

       S3C44B0X内置有数据/指令合一的8KB Cache,且允许按照地址范围设置两个Non-Cacheable的区间。合理的配置是打开对RAM地址区间的Cache,关闭对其它地址区间的Cache,以避免可能存在的Cache一致性问题。

       1.7 建立人机界面
       引导过程的最后一步是在串行终端上建立人机交互界面。常见的做法是先等待固定的时间,若未接收到用户输入,则直接从Flash中加载或调用uClinux Kernel;若接收到用户输入,则显示菜单模式或命令行模式的交互界面,并等待进一步的命令。

       2. 加载uClinux Kernel
       Bootloa
der是否需要执行加载操作,取决于uClinux Kernel Image的类型。根据不同的配置方式,可以生成以下几种uClinux Kernel Image:

       2.1 非压缩,非XIP
       XIP(eXecute In Place)是指在存放代码的位置上就地运行程序;而非XIP就是指在运行之前需要对代码进行重定位。该类型的uClinux Kernel Image以非压缩格式存放在Flash中,需由Bootloader加载到RAM然后调用。该类型在开发调试阶段最为常用。

       2.2 非压缩,XIP
       该类型的uClinux Kernel Image以非压缩格式存放在Flash中,不需加载,由Bootloader直接调用。复制Data段和清零BSS段的工作由Kernel自行完成。该类型常用于RAM空间非常有限的系统中,缺点是程序在Flash中运行的速度稍慢。

       2.3 RAM自解压
       压缩格式的uClinux Kernel Image由开头的一段自解压代码和其后的压缩数据组成。由于是以压缩格式存放,因此Kernel只能以非XIP方式运行。RAM自解压的uClinux Kernel Image存放在Flash中,由Bootloader加载到RAM中的临时空间,然后调用自解压代码。Kernel被解压到最终的目标空间然后运行;压缩镜像所占据的临时空间在随后由uClinux回收利用。该类型占用Flash较少,且运行速度较快,在最终产品中更为常见。

       2.4 ROM自解压
       解压缩代码也能够以XIP的方式在Flash中运行。ROM自解压的uClinux Kernel Image存放在Flash中,不需加载,由Bootloader直接调用其自解压代码,将uClinux Kernel解压到最终的目标空间并运行之。与RAM自解压相比,ROM自解压并不真正节省RAM,而且解压缩的速度较慢,因此实用价值不大。

       3.设置内核启动参数
       Linux 2.4版本以后的内核都期望以标记列表(tagged list)的形式来接收启动参数。每个标记存放在一个tag结构中,每个tag结构由标识被传递参数的tag_header结构以及随后的参数值组成。通常由Bootloader设置的启动参数有:ATAG_MEM、ATAG_CMDLINE、ATAG_SERIAL等。启动参数的标记列表以ATAG_CORE开始,以ATAG_NONE结束,代码示例如下。其中0x0C000100是内核启动参数在RAM中的基地址,Bootloader应当将要传递的启动参数复制到该处RAM中;指针params的类型是struct tag。宏tag_next()以指向当前标记的指针为参数,计算下一个标记的起始地址。
1】【2】【3】【4
加载中

对文章的评论

剩余字数:  

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销