查看: 15357|回复: 33

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

[复制链接]

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2014-7-11 11:47:17 | 显示全部楼层 |阅读模式
 

AN2295 bootloader文档解析

       上个星期,[url=https://www.freescale.co
m/webapp/sps/site/prod_summary.jsp?code=KBOOT&tid=vanKBOOT]KBOOT1.0.2[/url]
版本终于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对应地址内。
4.jpg
Ø 波特率同步校准
        MCU作为Target上电复位后,开始初始化硬件模块,配置时钟模式和建立内存空间的映射图,串口的波特率配置也在此过程完成。但是实际波特率与期望值可能会有出入,所以为保证Target与Host tool之间实现准确无误的数据传输,需要进行波特率同步校准,同步校准步骤:首先,MCU按照配置完成的波特率发送ACK(0xFC),作为Host tool的PC按照预先协定的波特率,接受从MCU过来的“ACK”,PC可接收数据的波特率容差范围为:33%~300%;接着,只要PC接收到非零的字节数据,马上按照预先协定的波特率发送ACK(0xFC)到MCU,当然MCU可接收数据的波特率容差范围跟PC一样,也为:33%~300%,如果MCU实际波特率与期望值有出入的话,接收到“0XFC”会不等于0xFC,表1所列即为MCU真实波特率与协定波特率不匹配情况下所接收到数据。然后,当MCU发觉接收到的“0XFC”与实际不符时,就不向PC发送ACK(0xFC),PC由于在指定时间范围内未收到ACK,就会发送间断字节符,而间断字节符一般由10个连续周期的低电平组成,假设PC以波特率9600bps发送间断字节符,那么传输时间为10 x 104µs=1.04ms;最后,MCU检测接收间断字节符的时间,并与标准时间进行比较,跟着调整波特率的设置,直到MCU与PC两者的波特率同步校准成功,在此期间PC可能会多次发送间断字节符,波特率同步校准流程如图2所示。
 
1 Target与Host tool波特率不同,导致数据接收不匹配


5.jpg
6.jpg
 
 

回复

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
 楼主| 发表于 2014-7-16 17:43:06 | 显示全部楼层

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

回复第 8 楼 于2014-07-16 10:34:04发表:
[face]006[/好东西ce]
 
欢迎下载学习,如有疑问可来论坛中交流!
 
回复 支持 0 反对 1

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
 楼主| 发表于 2014-7-11 11:52:29 | 显示全部楼层

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

 Ø Read指令
       PC发送Read(0x52)指令,并紧跟2个地址字节符,1个数据长度字节符,如果使能CRC功能的话,还会在最后发送2 个字节的校验码。而MCU在接收到Read(0x57)指令后,识别出地址字节符和数据长度字节符,接着向PC发送以地址字节符为起始地址,对应数据长度的数据字节符。具体流程如图6所示。
2.jpg
6 Read指令

Ø Quit指令
 
       PC发送Read(0x51)指令,后面不跟任何字节符,而MCU则在识别出Quit(0x51)指令后,马上跳转到应用程序。具体流程如图7所示。
3.jpg
图7
 Quit指令

 

 [size=19.09090805053711px]文档下载
AN2295—Developer’s Serial Bootloader 解析(一).pdf (607.06 KB, 下载次数: 936)
回复 支持 1 反对 0

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
 楼主| 发表于 2014-7-11 11:50:49 | 显示全部楼层

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

 3.                指令
Ø Ident指令
      当MCU与PC完成波特率同步校准并确立连接后,PC就会发送Ident(0x49) 指令, MCU接收Ident指令后,跟着将Boot loader的相关属性信息发送给PC,如Boot loader版本信息、应用程序的起始与结束地址、boot loader及应用程序的中断向量表地址等(如图3所示),而且Boot loader版本不同,发送给PC的数据也会有所不同,如果使能CRC功能的话,还会在最后发送2 个字节的校验码。
7.jpg
3 Ident指令

Ø Erase指令
 
      PC发送Erase(0x45)指令,并紧跟2 个地址字节符,而MCU在接收到Erase(0x45)指令后,接着会擦写Flash中包含此地址的Block,如果使能CRC功能的话,还会在最后发送2 个字节的校验码;MCU在执行完擦写Flash操作后,则会发送ACK(0xFC)给MCU,具体流程如图4所示。
8.jpg
4 Erase指令

Ø Write指令
 
       PC发送Write(0x57)指令,并紧跟2个地址字节符,1个数据长度字节符及对应长度的数据字节符,如果使能CRC功能的话,还会在最后发送2 个字节的校验码。而MCU在接收到Write(0x57)指令后,识别出地址字节符和数据长度字节符,然后以地址字节符为起始地址,将所有的数据字节符写入到Flash中。MCU在执行完烧写Flash操作后,则会发送ACK(0xFC)给MCU,具体流程如图5所示。
1.jpg
5 Write指令


 

回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
 楼主| 发表于 2014-7-11 11:53:13 | 显示全部楼层

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

不足之处,欢迎指正,未完待续!!
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
 楼主| 发表于 2014-7-11 17:18:37 | 显示全部楼层

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

 AN2295文档:
AN2295.pdf (1.36 MB, 下载次数: 721)
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

273

帖子

0

高级会员

Rank: 4

积分
718
最后登录
1970-1-1
发表于 2014-7-14 09:56:42 | 显示全部楼层

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

谢谢斑竹分享,好贴啊。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2017-1-24 09:50
  • 签到天数: 2 天

    [LV.1]初来乍到

    654

    主题

    3262

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    11058
    最后登录
    2019-1-27
    发表于 2014-7-14 16:11:50 | 显示全部楼层

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

    这么好的内容不能沉了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-4-28 12:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    8

    主题

    280

    帖子

    0

    高级会员

    Rank: 4

    积分
    802
    最后登录
    2021-9-5
    发表于 2014-7-16 10:34:04 | 显示全部楼层

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

    [face]006[/好东西ce]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    63

    主题

    263

    帖子

    0

    高级会员

    Rank: 4

    积分
    921
    最后登录
    2021-2-23
    发表于 2014-7-16 10:55:37 | 显示全部楼层

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

    谢谢斑竹分享,好贴啊。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-26 05:14 , Processed in 0.138589 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表