本帖最后由 FSL_TICS_Robin 于 2014-7-18 14:29 编辑
AN2295 bootloader文档解析
上个星期,
KBOOT1.0.2版本终于release,着急等待的小伙伴可以去下载,而且在本届在
深圳FTF研讨会上,就有FSL工程师对其进行了详细的介绍,大伙也可以去浏览一下。
而今天这个文档以FSL的AN2295—Developer’s Serial Boot loader应用手册为引子,跟大伙交流一下Bootloader的相关知识,不足之处,欢迎大家指正。好的闲话少叙,正式开整。
1. Boot loader
Boot loader基本概念:
Boot loader是嵌入式系统上电启动时,执行的一小段引导加载程序,又称作固件。通过这段程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用应用程序准备好正确的环境。其中Boot代码由MCU启动时执行的指令组成,而loader则指向MCU的Flash中新写入的应用程序。Boot loader是依赖于特定的硬件实现的,因此,在众多嵌入式产品中,目前还不可能实现通用的Boot loader。
Boot loader优点:
Boot loader可以实现在不需要外部编程器的情况下,对嵌入式产品的应用代码进行更新升级,并且使得通过局域网或者Internet远程更新程序成为可能。由此可见,Boot loader功能对于嵌入式系统的广泛应用具有十分重要的意义。
Boot loader代码特点:
1. 代码量尽可能小,尤其对于Flash空间很有限的MCU来说至关重要。
2. 应用代码更新通信接口所需引脚数要尽可能少。
3. Boot loader按照协定的接口接受、解析应用代码数据,然后写入到Flash中。
2. FC 协议
AN2295应用手册中的Boot loader程序运行流程如图1所示,Target与Host tool通信过程中以0xFC为应答信号,程序运行流程:首先,MCU根据开发者的预先设置,判断是进入Boot loader模式还是直接运行应用程序;当MCU进入Boot loader模式后,第一步要同步校准Target与Host tool两者的波特率,保证通信数据在两者之间能够正确的传输;接着Target接收Host tool传输过来的数据;然后按照预先协定好的IDENT(0x49)、ERASE(0x45)、WRITE(0x57)、READ(0x52)、Quit(0x51)指令操作,将应用程序写入到Flash对应地址内。
3.jpg (21.84 KB, 下载次数: 1)
下载附件
2014-7-11 11:33 上传
图7 Quit指令
AN2295—Developer’s Serial Bootloader 解析(一).pdf
(607.06 KB, 下载次数: 234)
2014-7-11 11:35 上传
点击文件名下载附件
AN2295.pdf
(1.36 MB, 下载次数: 164)
2014-7-11 17:03 上传
点击文件名下载附件
AN2295代码太大,无法上传,给大家一个链接,自行下载吧。
http://cache.freescale.com/files ... nt_pageType=product
PS:本帖可从飞思卡尔版块置顶帖:飞思卡尔Kinetis资料大本营的飞思卡尔论坛支持小组【经验分享】帖汇总链接进入。
就我个人的理解来讲,bootloader的协议肯定是一样的,但是针对不同的MCU,由于寄存器名称完全不同,所以导致代码间没有用共用性,
所以你只能根据bootloader协议的特点,同向比较各个MCU的bootloader工程中的各个代码功能模块,举个例子:比如与HOST建立连接代码模块,接收数据代码模块,烧写flash代码模块,调转到application代码模块。
一周热门 更多>