基于ARM Cortex-M3BootLoader技术.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于ARM Cortex-M3BootLoader技术(武昌理工学院信息工程学院,湖北武汉430223) 摘要:本文主要介绍了基于ARM Cortex-M3内核的BootLoader技术的源代码组成、结构和设计思路,通过掌握其启动原理,以便于更好地应用BootLoader。 关键词:ARM Cortex-M3 ; 源代码;启动原理;BootLoader技术 中图分类号:TP273文献标识码:A 1.引言 现今嵌入式系统越来越受到人们的重视。随着系统复杂程度的提高,小型化和网络化也成为嵌入式系统发展的必然趋势。如何利用现成的通信网络,安全、快捷的对各个节点控制器进行在线软件升级(ISP),成为了嵌入式系统发展的一项重要课题,对工业控制、航空航天、通信等领域意义重大。而实现这一功能,需要一段核心代码的支持,这段代码就是BootLoader。 2. BootLoader 简介 2.1 功能介绍 BootLoader 是位于 Flash 起始地址处的一小段代码,占据空间默认为 2K。如果没有BootLoader,硬件启动成功后,将直接运行用户应用程序(Application)。反之,BootLoader的启动代码(Start-up Code)将先被执行,进行一系列的初始化操作后,根据预先设定的条件,选择执行用户应用程序(Application)或升级控制程序(Updater)。 Updater在升级Flash的过程中,需要与上位机通信,通信的端口可选用UART,SSI,I2C或以太网端口。为了保证数据的无差错传输,BootLoader采用了控制传输的通信协议:UART,SSI,I2C端口均采用了自定义的串行加载协议;而以太网采用了UDP协议。对接收到的格式正确且校验成功的数据包,Updater能够将其解包,并将得到的加载命令转化为对Flash底层寄存器的操作。 2.2 源代码组成 BootLoader的源代码由多个文件组成,如表1所示。 表1:BootLoader 源代码组成 文件分类 文件名 文件说明 启动代码 bl_startup_ewarm.S BootLoader 启动代码 配置文件 bl_config.h 定义 BootLoader 配置选项 bl_config.c 数据包收发 bl_packet.h 定义 Updater 命令及响应代码 bl_packet.h 串行数据包收发控制 bl_packet.c 数据传输 bl_enet.c 以太网端口数据传输 UART bl_uart.h UART 端口数据传输 bl_uart.c bl_autobaud.h SSI bl_ssi.h SSI 端口数据传输 bl_ssi.c I2C bl_i2c.h I2C端口数据传输 bl_i2c.c 升级控制 bl_check.h 检测 Updater 运行条件 bl_check.c bl_main.c 升级控制主程序及升级端口配置 其它 bl_decrypt.h Application 代码加密控制 bl_decrypt.c bl_link.xcl IAR EWARM 链接器脚本文件 3.BootLoader 技术 3.1BootLoader 的启动原理 3.1.1 Cortex-M3 存储及启动机制 Cortex-M3 内核具有固定的存储器映射,这使得相同内核的芯片具有了更好的兼容性。 特定厂商 专用外设总线 外部总线 外部RAM 片内外设 SRAM(保留区) SRAM 代码(保留区) Flash 图1:Cortex-M3 存储器系统示意图 如图1所示,Cortex-M3 的地址空间中,0~0.5G被映射为Flash空间,0.5G~1G被映射为SRAM空间。由于SRAM是易失性存储器,故系统上电时,SRAM中并没有内容,系统必须从Flash开始启动。 Flash 空间起始地址处必须存放向量表。向量表是异常产生时获取异常处理函数入口的一块连续内存,每一个异常都在向量表固定的偏移地址处(偏移地址以字对齐),通过该偏移地址可以获取异常处理函数的入口指针。向量表中前4个字分别为:栈顶地址、复位处理函数地址、NMI ISR 地址、硬故障 ISR 地址。一张向量表至少由这四项组成。 在程序代码开始运行后,向量表的基地址也可以改变。通过软件设置 NVIC 中的向量表偏移寄存器(NVIC_VTABLE,0xE000ED08),可以在任意 32 字对齐

文档评论(0)

linsspace + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档