winCE之bootloader的学习

1、 bootloader的作用

bootloader是BSP的一部分,BSP除了bootloader还有driver以及OAL等。

很多嵌入式系统都会有bootloader的概念,想vxbox、嵌入式的linux等

最基本的作用就是把os的镜像文件读入到RAM中运行。什么意思呢?就是所有的系统都是从固定的地址开始启动,像arm就是从0x00000000开始执行;像X86就是从一个不为0的地址开始执行的。我们要是用bootloader的话,这部分地址放得就是bootloader。为什么说要用到bootloader的话呢?因为bootloader不是必须的。

有一种内存掉电不丢失,像norFlash(比较小,价格比较贵),可以自启动。我们可以将os镜像写到norFlash中,这样就不需要bootloader。

但是bootloader应用非常广泛。首先如果我们足够大的norFlash的话,我们可以将整个系统镜像放进去,但是norFlash比较小,比较贵,比dram的速度慢,所以这种架构不常用。

现在常用的架构师什么呢?就像我们的pc机,有一个类似ddr内存的ram,加上类似硬盘的NANDFlash。这样我们就需要某种方式将os镜像从nandFlash中读入到ram中运行。这个方式其实就是bootloader的功能,这也是bootloader的主要功能。(想想pc机,很容易明白啦,bios就是好比bootloader,bios将硬盘中的系统加载的ddr内存中,这样不就开启了系统吗?同理,嵌入式系统是bootloader讲nandflash中的os镜像加载到ram中,那么嵌入式系统就起来了)

bootloader还有其他的一些功能,如电源管理,系统升级。举个例子:现在嵌入式往往会提供升级的功能,比如系统有bug,但是产品已经发出去了,怎么办?那么我们可以发布一个os的镜像,放到sd卡中,让用户在开机的时候按某个键,然后直接从sd卡上读os镜像,并烧到nandflash上。这个过程就是bootloader在起作用。通过捕获按键消息,然后检测sd卡等。。。


bootloader的功能模块:

硬件平台初始化
 是bootloader里面最先执行的代码
 初始化寄存器
 设置cpu主频,初始化cache
 设置系统时钟
调试端口
 以太网
 串口
 usb接口
 debug led
下载image的代码
 下载算法,是否要压缩或解压
 下载接口 以太网,串口,usb
擦除或者写flash的代码
其他附加功能代码


bootloader流程

分两部分:


bootloader VS OS
os 是多任务的、能用win32API、能用中断
但是bootloader不是多任务,不能调用win32API、屏蔽所以中断


bootloader的调试
bootloader调试比较困难,调试工具比较少。如何来解决呢?
首先要确认bootloader烧录的地址时候正确,如果不正确,启动都会出问题。大部分cpu从地址0开始执行。


调试工具:
jtag
led
串口


wince提供的bootloader架构分析
bootloader代码:


bootloaderMain伪代码

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值