【经验分享】AN2295 bootloader文档解析(一)

2020-02-11 08:53发布

本帖最后由 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资料大本营飞思卡尔论坛支持小组【经验分享】帖汇总链接进入。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
57条回答
FSL_TICS_ZP
1楼-- · 2020-02-15 23:13
tjcf 发表于 2015-1-15 11:16
楼主你好,近期有个DSP6747下载程序问题出现,之前没有接触过bootloader,不知道楼主怎么理解不同型号MCU的 ...

就我个人的理解来讲,bootloader的协议肯定是一样的,但是针对不同的MCU,由于寄存器名称完全不同,所以导致代码间没有用共用性,
所以你只能根据bootloader协议的特点,同向比较各个MCU的bootloader工程中的各个代码功能模块,举个例子:比如与HOST建立连接代码模块,接收数据代码模块,烧写flash代码模块,调转到application代码模块。
tjcf
2楼-- · 2020-02-16 00:17
FSL_TICS_ZP 发表于 2015-1-15 11:38
就我个人的理解来讲,bootloader的协议肯定是一样的,但是针对不同的MCU,由于寄存器名称完全不同,所以 ...

很好,谢谢楼主的回答,有问题我再请教您!
374533905
3楼-- · 2020-02-16 02:47
谢谢楼主 先学习下。
Michael_STM
4楼-- · 2020-02-16 05:43
你好,楼主,请教一下KL25 Bootload的问题
想要实现的功能:通过win_hc08sprg程序加载AP程序,将AP程序放到0x00001000处开始执行
遇到的问题:connect可以成功,一点击win_hc08sprg上的Program按钮程序就自动退出
麻烦帮我看一下ICF文件中这两个内存分配是否有问题,该如何解决?
tdchenke
5楼-- · 2020-02-16 08:43
 精彩回答 2  元偷偷看……
Michael_STM
6楼-- · 2020-02-16 08:52
FSL_TICS_ZP 发表于 2014-9-28 15:44
你好,
关于是否进入Bootloader模式,完全可以通过Debug设置对应的断点来判断,
而你说的关于KL25的bootl ...

楼主,麻烦看一下我的问题,在41楼

一周热门 更多>