3017|0

23

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

Bootloader 的概念 [复制链接]

    简单地说,Bootloader 就是这么一小段程序,它在系统上电时开始执行,初始化硬件设备、准备好软件环境,最后调用操作系统内核。
    可以增强Bootloader 的功能,比如增加网络功能、从PC 上通过串口或网络下载文件、烧写文件、将Flash 上压缩的文件解压后再运行等,这就是一个功能更为强大的Bootloader,也称为Monitor。实际上,在最终产品中用户并不需要这些功能,它们只是为了方便开发。
    Bootloader 的实现非常依赖于具体硬件,在嵌入式系统中硬件配置千差万别,即使是相同的CPU,它的外设(比如Flash)也可能不同,所以不可能有一个Bootloader 支持所有的CPU、所有的电路板。即使是支持CPU 架构比较多的U-Boot,也不是一拿来就可以使用的(除非里面的配置刚好与你的板子相同),需要进行一些移植。
1、Bootloader 的启动方式
    CPU 上电后,会从某个地址开始执行。比如MIPS 结构的CPU 会从0xBFC00000 取第一条指令,而ARM 结构的CPU 则从地址0x0000000 开始。嵌入式开发板中,需要把存储器件ROM 或Flash 等映射到这个地址,Bootloader 就存放在这个地址开始处,这样一上电就可以执行。
    在开发时,通常需要使用各种命令操作Bootloader,一般通过串口来连接PC 和开发板,可以在串口上输入各种命令、观察运行结果等。这也只是对开发人员才有意义,用户使用产品时是不用接串口来控制Bootloader 的。从这个观点来看,Bootloader 可以分为以下两种操作模式(Operation Mode)。
(1)启动加载(Boot loading)模式。
    上电后,Bootloader 从板子上的某个固态存储设备上将操作系统加载到RAM 中运行,整个过程并没有用户的介入。产品发布时,Bootloader 工作在这种模式下。
(2)下载(Downloading)模式。
    在这种模式下,开发人员可以使用各种命令,通过串口连接或网络连接等通信手段从主机(Host)下载文件(比如内核映象、文件系统映象),将它们直接放在内存运行或是烧入Flash 类固态存储设备中。
    板子与主机间传输文件时,可以使用串口的xmodem/ymodem/zmodem 协议,它们使用简单,只是速度比较慢;还可以使用网络通过tftp、nfs 协议来传输,这时,主机上要开启tftp、nfs 服务;还有其他方法,比如USB 等。
    像Blob 或U-Boot 等这样功能强大的Bootloader 通常同时支持这两种工作模式,而且允许用户在这两种工作模式之间进行切换。比如,U-Boot 在启动时处于正常的启动加载模式,但是它会延时若干秒(这可以设置),等待终端用户按下任意键,而将U-Boot 切换到下载模式。如果在指定时间内没有用户按键,则U-Boot 继续启动Linux 内核。
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表