应用
Bootloader,即在线程序烧写。很多汽车电子产品,都需要具备在线固件更新功能。这主要是因为产品在装车后,往往不方便单独拆卸,如果要对其进行软件更新,就只能通过通用外部接口ODBII上的CAN线来进行烧写升级。
基本原理
要实现在线程序烧写,那么就需要把单片机的存储空间分成两个部分,分别用来存放自举程序和应用程序。
自举程序,我们一般称为boot程序,它主要有两个功能:用于引导应用程序执行;实现应用程序的更新刷写。应用程序,我们一般称为app程序,也就是我们不带boot功能的源程序。这有点像我们的PC,PC开机并不是直接进windows操作系统,而是先进bios主板引导程序。这里的boot就相当于PC的bios,app就相当于windows,实际上是一个道理。
地址分配
由于在一个单片机内同时存在两个独立的程序,boot和app。这两个程序独立运行,但有一定先后顺序。单片机上电之初,应该默认执行boot程序,因此boot程序一般分配在flash的起始位置。将app整个程序放在boot程序之后,boot和app之间预留一段空间,使得两个程序在空间上完全隔离开来,保证各自的独立性。
地址空间
目前,单片机按位数来分,主要分为8位、16位和32位。32位的单片机地址空间比较简单,按128k的flash来算,地址就是从0x00000000到0x00020000,32位连续地址;8位和16位就稍微复杂点,由于地址位比较短,地址空间有限,地址一般都需要分页管理。像这种情况,一段完整的程序,往往要分成好几块,分别放在不同的页面里。那么,