网络安全参考 | UNIX参考 | GPS参考 | 无线参考 | 在线手册 | OSBUG.ORG | SUNNY-NETWORK.COM
天线制作 GPS 地标
网站地图 RSS订阅
高级搜索 收藏本站
Home | 业界动态 | Open source | GNU | Linux | BSD | Solaris | AIX | HP-UX | IRIX | Mac OS X | Minix | Tru64 | SCO UNIX | Network | Security | X-Window | Database | 应用服务 | Programming | 经典著作 | 永远的纪念 | 杂项
 当前位置: Home > Linux > 嵌入式系统 > Boot loader > 文章  
bootloader的加载和运行
文章来源: good02xaut.21ic.org 文章作者: good02xaut 发布时间: 2006-04-02   字体: [ ]  
 

  bootloader作为内核引导程序,先于内核运行。程序存在位置0x0000 0000。可以运行在ram,和flash空间。

  1。运行于ram空间

  bootloader分为头部和主体2部分。头部包括中断向量,系统初始化部分(初始化SDRAM等)。主体包括bootloader功能的具体实现代码。头部把主体程序段加载到SDRAM空间,然后跳转到SDRAM中的主体程序开始部分。

  2。运行于flash空间

  bootloader程序的主体部分仍然在flash中运行。需要说明的是,bootloader程序的bss段还是需要分配在SDRAM的某个空间。不管程序在哪里运行,需要的SDRAM都不可能由flash提供。

  bootloader的运行

  1。加载kernel

  bootloader可以通过串口,网口,USB口等等通讯口,完成内核从主机的下载。下载内核的存放位置必须是在SDRAM中。下载后,内核可以在SDRAM中直接运行,也可以写到flash中。

  2。加载文件系统

  如果内核使用ramdisk作为根,那么bootloader可以把文件系统从主机或者flash中加载到SDRAM中的ramdisk中。这样启动内核时就可以访问ram0了。

  还有一点就是在uclinux中对romfs的支持。直接把romfs编译到内核里面,在调试阶段很不方便。通常采用在内核中使用固定的物理地址指明 romfs的起始位置。而在该位置上初始化romfs仍然是由bootloader完成的。在调试阶段,最好把romfs的起始位置定在SDRAM中;而发布阶段,bootloader把下载的romfs写到flash中即可。

  特别注意:bootloader在SDRAM中运行时,一般会把自己加载到内存的末端。因此该段内存在bootloader运行期间是不允许被覆盖的!!比如bootloader运行于0x0c70 0000,内核为1.5M,如果加载的地址为0x0c60 0000,则发生内存冲突。bootloader崩溃。

--
原文链接: http://blog.21ic.com/more.asp?name=good02xaut&id=12527

 
推荐文章
·ARM的嵌入式Linux移植体验之Boot
·嵌入式系统 Boot Loader 技术内
 
 
↑返回顶部   打印本页   关闭窗口↓  

Google
 
Web oldhand.org unixreference.net meshmea.org
相关分类
热点文章
·U-Boot简介
·U-BOOT的启动流程及移植
·ARM的嵌入式Linux移植体
·嵌入式系统 Boot Loader
·Bootloader存在的必要性
·U-Boot在S3C2410上的移
相关文章
·Bootloader存在的必要性
·ARM的嵌入式Linux移植体
·U-Boot简介
·制作基于软盘的Linux系
·基于嵌入式Linux的智能
·双内核嵌入式处理器及其
·Linux 2.6 内核的嵌入式
·ARM入门
更多...
 
 

Copyright(c) 2001-2009 OLDHAND ORGANIZATION, All Rights reserved.
Power by DedeCms 织梦内容管理系统