打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
该如何编写单片机的bootloader (1)
userphoto

2023.02.02 浙江

关注

        从上传第一份bootloader资料到现在,一直收到网友的邮件索取资料。说真的,那些资料已经遗失(上次搬家的时候移动硬盘丢失,导致很多资料丢失)。网上流传的uboot等,又都是为ARM这样的片子准备的。市场上也没有完整的为了freescale S8、S16芯片编写的Bootloader。为了让大家更好地学习单片机bootloader如何编写,特整理如下文章(很抱歉,文章分章节发布,因为工作实在是忙!)。在此,也请大家原谅,我不能贴出我们的源代码,因为和项目相关。但,我总相信:授人以鱼不如授人以渔。文章中很多见解纯属个人意见,有不当之处,敬请指明。为了更好地解释下文内容,先说明工作的平台是:MC9S12XS128,bootloader基于标准CAN UDS (ISO-14229-6,ISO-15765-3)且适用于汽车级应用。

        首先,我们需要理解什么是bootloader。Bootloader包含了两个名词: boot和loader。很明显,从字面上讲,要实现bootloader就必须分步实现boot和loader过程。相信大家都在用电脑(不然怎么能看这篇文章?:-)),可以想象,在你按电脑电源开关的时候,也就是我们所说的Power-On-Reset的时候,Windows首先要初始化硬件,当所有初始化结束后,加载操作系统,并运行。该过程某种程度上和我们在单片机要实现的功能类似,只是单片机资源有限,以及单片机要执行的功能有限。因而,我们直接给单片机上的bootloader取名为嵌入式bootloader。嵌入式bootloader严重依赖于硬件实现,这也就说明了在嵌入式系统中难以建议一个通用的bootloader。

        言归正传,bootloader要实现的功能就是:在系统上电或者复位后,将系统的软硬件环境带到一个合适的状态,为最终调用应用程序准备好正确的环境。它包括:

- 初始化硬件设备

- 建立正确的内存空间映射

- 初始化栈

- 检测并初始化内存

- 初始化全局变量

- 加载程序,将非易失性存储器中的特定软件组拷贝到RAM中,并运行。

        在汽车ECU中,bootloader通常指代码更新程序。ECU在programming session模式下,tester通过CAN总线向ECU发送S19文件格式的binary文件。ECU将代码下载并烧录到Application区域,ECU代码得以更新。下次上电或复位后即运行新的Application程序。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
单片机知识是Linux驱动开发的基础之一以及如何学单片机
Arduino是什么样的硬件?
STM32单片机Bootloader设计(下)
单片机在线编程技术纵览[单片机在线编程网]
汽车Bootloader介绍
精品! 我们如果了解单片机Bootloader程序
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服