新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 嵌入式系统的Boot Loader分析

嵌入式系统的Boot Loader分析

作者: 时间:2011-03-08 来源:网络 收藏
3 Stage2的设计

本文引用地址:https://www.eepw.com.cn/article/150977.htm

  3.1 可执行映像Stage2的入口

  由于Glibc库支持的函数不能用于编译和链接Boot Loader这样用C语言编写的程序,因此把main()函数的起始地址作为第二阶段的入口点是最直接的想法。可以用汇编编写一段Trampoline小程序,用CPU跳转指令跳到main()函数去执行,当函数返回时会再次回到Trampoline程序,代码如下:

  

程序

  程序顺利时就不会再回到开始的Trampoline程序,不然就会回到最后的语句,系统就会重新启动。

  3.2 内存影射

  一般S3C2410上配置的SDRSAM大小为64 MB,该SDRAM的物理地址范围是Ox30000000~Ox33FFFFFF(属于Bank 6)。由Section的大小可知,该物理空间可被分成64个物理段。因为ARM体系结构中数据缓冲必须通过MMU开启,因此Boot Loader效率不是很高,但是MMU可以通过平板映射(虚拟地址和物理地址相同)方式被开启,这样使用内存空间Dcache,从而使Boot Loader的运行速度得到有效的提高。映射关系代码如下:

  

程序

  3.3 装载内核映像和根文件系统映像

  像ARM这样的嵌入式CPU通常都是在统一的内存地址空间中寻址FLASH等固态存储设备的,因此从Flash上读取数据与从RAM单元中读取数据一样,用一个简单的循环就可以完成从FLASH设备上拷贝映像的工作:其中count为根文件系统映像的大小或内核映像的大小。

  

程序

  3.4 内核的启动参数的设置

  内核启动可以从NAND FLASH(NOR FLASH)中启动运行Linux,需要修改启动命令如下:

  

程序

  LCD启动参数一般都包括root,init和console。noinitrd不使用ramdisk。root根文件系统在MTD分区。Init内核运行入口命令文件。co-nsol内核信息控制台,ttys0表示串行口0;tty0表示虚拟终端。

  4 结语

  通过对Boot Loader的分析可以看出,设计一个性能优良的Boot Loader可以提高系统的稳定性及实时性,它是嵌入式开发中不可或缺的一部分。只有设计出一个稳定的Boot Loader,才能进行下一步的系统开发工作,直至完成整个嵌入式系统的开发。设计Boot Loader是一项很复杂的工作,需要对硬件资源和所用的操作系统有很深的理解。


上一页 1 2 下一页

关键词:

评论


相关推荐

技术专区

关闭