关于Boot loader的几点个人见解



对于刚接触bootloader的职场新人而言,要掌握它可以从以下几点下手:

1、bootloader究竟是什么,有什么用?

答:回答第一问之前,先来举个例子:我们对于手机都不陌生,买后不久的手机有时提示更新系统。然后点击就可以更新系统了。但是回过头来想想看,手机为什么可以更新?其实手机自身能够更新系统出了网络传输(下载)外,其实是其主控芯片在出厂前已经烧写过bootloader,有了bootloader,产品主控芯片就可以脱离编译器的限制,可以通过专用工具或其他设备更新应用程序。说了这么多,bootloader的作用就是用来更新应用程序的。对于嵌入式单片机产品而言,bootloader是存储在单片机flash空间的一部分代码。


2、如何设计bootloader并开发实现代码?

答:设计Bootloader大致可以分为以下几步:

传输

可以通过CAN总线传输,需要实现CAN的初始化、发送与接收驱动

烧写

传输的目的其实还是为了烧写,即把应用程序对应的格式文件如.hex、.s19、.mot、.mhx等中的数据烧进分配好的flash空间。而烧写可以通过对flash的擦写来实现,故需要完成flash的擦写驱动

时序

烧写是有时序控制的,因此需要实现定时器的驱动

中断重定

下面就是了


3、Bootloader中中断向量表为什么要重定向?如何通过软件实现中断向量表重定向?

想想看,bootloader中有中断向量表,应用程序也有中断向量表,当应用程序有中断请求时,如果没有重定向中断向量表,程序pc指针会跳到对应的中断向量的硬件地址,(此地址上存放着对应的中断服务函数的入口地址,之后就执行中断服务函数,之后退出回到中断前的位置接着跑),而该硬件地址大多数单片机都是处在靠前的位置也就在bootloader程序中。因此问题就来了,应用程序发生中断后程序pc指针跳到bootloader,执行完中断服务函数后直接从bootloader跳到应用程序,这样做有时可能会出现意料之外的情况。并且在bootloader中一般情况是不允许使用中断的


4、Bootloader中断向量表一定要重定向吗?

不一定。原因主要有两点:1) 中断向量表可能在应用程序区2) 中断向量表不在flash中其实,只有在中断向量表在bootloader区时才需要重定向



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值