打印

弱问:bootloader的作用

[复制链接]
9670|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
huamunv| | 2010-2-2 15:03 | 只看该作者
这个你一搜一堆
比如有如下说法

BootLoader 是系统加电后运行的第一段代码。一般它只在系统启动时非常短的时间内运行。对于由DaVinci构成的嵌入式系统来说,这是至关重要的一步。
在PC中,整个BootLoader由BIOS(主板上固化的一段程序)、位于硬盘MBR区的OS Loader一起组成。BIOS完成第一级引导加载工作,OS Loader完成第二级引导加载工作(可能有些系统不只两级加载)。上电后,系统开始执行BIOS中的代码,这段代码负责进行硬件检测和资源分配,完成这步工作后,将按照CMOS中设定的顺序检索硬盘。BIOS将第一个检索到的硬盘上MBR中的内容读到系统RAM中,然后将系统控制权交给相应的OS Loader。最后由OS Loader负责将所要引导的操作系统的内核映象从硬盘上读到系统RAM中,然后跳转到内核的入口点上。
在由DaVinci平台构成的嵌入式系统中,通常不存在BIOS那样的一段固定内容的固化的程序。原因是PC平台尽管品牌等有差异,但通常都有相近甚至是相同的体系结构,遵循一个共同的工业标准,因而可以使用同一个BIOS代码来引导。而通常对嵌入式系统来说,即使是使用相同的架构,甚至是同一个CPU如都是DM6446来构建,但因为并不能遵的一个共同的工业标准。因而基于DaVinci平台构建的嵌入式系统上除非两者的各方面与引导过程相关设计完成一致,否则不能使用同一个BootLoader。
可以说BootLoader是一个由DaVinci平台构成的嵌入式系统的钥匙。没有这把钥匙就无法进入系统的大门。也就是说在完成自己的硬件研发后,首要的工作就是BootLoader的移植。

使用特权

评论回复
板凳
harden75|  楼主 | 2010-2-2 15:18 | 只看该作者
谢谢!网上是很多这方面的资料
但大部分是关于PC机或者是嵌入了操作系统的单片机。
我想知道没嵌入操作系统的单片机上,bootloader有什么作用?


2# huamunv

使用特权

评论回复
地板
cheungman| | 2010-2-2 16:02 | 只看该作者
主要用于远程升级或实现自更新

使用特权

评论回复
5
meyong08| | 2013-11-30 18:33 | 只看该作者
同样遇到的类似的问题,希望路过的大牛能够扼要的介绍一下单片机bootloader细节

使用特权

评论回复
6
飞雪季节| | 2013-11-30 21:06 | 只看该作者
假如类似uboot的代码叫做bootloader,那么简单的系统不需要bootloader,你只要在开机时设置好基本的处理器模式,异常处理接口,以及栈指针,后面就可以进入你的C函数了。中间还要涉及到一些RAM数据的初始化,可以由编译器来配置(编译器一般会跳转到main函数),当然你也可以自己写。这是我们初学单片机,接触最直接的过程。

一般单片机启动分几个步骤:CHIP ROM---bootloader----真正的系统OS(比如linux,ucos等),复杂的系统比上述会复杂。

假如你只想做个简单的工作,升级系统只需要连接PC通过串口,或者JTAG,使用芯片商自带的工具,那么你不需要bootloader,好比你只有K级的RAM和ROM,要bootloader反而是个累赘。

假如你觉得芯片商的升级工具不好用,想通过USB、SD卡、网口等升级,你就需要一个专门的bootloader来干这些事,因为这个时候真正的系统还没有运行,系统比较简单,可以直接去操作存储设备。
说太多,假如没有实际接触的话,会比较难理解,如果你使用linux做开发的话,就需要一个bootloader,一般是uboot,uboot里可以进行芯片驱动初始化,板级驱动初始化,LCD初始化,USB初始化等,bootloader就是一个简单的系统(对比linux会简单很多),UBOOT可以通过USB或者串口,以太网口等同PC通信,进行linxu内核的下载等,最后会把linux从存储设备上拷贝到RAM里,进行跳转,CPU权限交到了linux。

最好搞个板子或者项目,去跟下代码,就清楚了,敲键盘一言半语也说不清

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
oyqiqin + 1 很给力!
7
wnwnwn| | 2014-7-23 14:00 | 只看该作者
飞雪季节 发表于 2013-11-30 21:06
假如类似uboot的代码叫做bootloader,那么简单的系统不需要bootloader,你只要在开机时设置好基本的处理器 ...

学习了,谢谢

使用特权

评论回复
8
latincompass| | 2020-4-5 11:03 | 只看该作者
本帖最后由 latincompass 于 2020-4-5 11:05 编辑
飞雪季节 发表于 2013-11-30 21:06
假如类似uboot的代码叫做bootloader,那么简单的系统不需要bootloader,你只要在开机时设置好基本的处理器 ...

老哥:跟您请教,以下结构的程序源代码(是AVR单片机的Hidbootloader源程序)如何编译?用什么软件编译,多谢C:\Users\Administrator\Desktop\6\7.png

7.png (46.8 KB )

程序列表

程序列表

1K HID Bootloader for AVR-BootHID-master.zip

41.7 KB

使用特权

评论回复
9
smartpower| | 2020-4-5 20:00 | 只看该作者
1. 配置芯片中用户不可见的寄存器。比如ADC校准寄存器,片内基准电压源较准寄存器。。。
2. 提供ISP烧录功能及FLASH读写保护。
这种BootLoader已内嵌到MCU,买回的每一片MCU内都已固化该程序。
当然有的芯片通过硬件实现上述功能,芯片内没有BootLoader.
BootLader也就是把用户不可见的硬件初始化通过MCU软件来实现。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

41

帖子

0

粉丝