- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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 字对齐
您可能关注的文档
最近下载
- 人教PEP版六年级上册Unit 5 What does he do 单元整体教学设计.pdf
- 2021年新生儿感染:抗菌药物预防性与治疗性使用指南解读(全文).pdf
- 《数字图像处理教程》试题库.pdf VIP
- 学校意识形态工作计划.pdf
- 战略模拟软件CESIM全攻略(课堂PPT).ppt
- 中国碳交易政策对可持续经济福利的影响.pptx VIP
- 反三违(典型“三违”)行为清单.docx
- (高清版)B-T 3836.1-2021 爆炸性环境 第1部分:设备 通用要求.pdf VIP
- 人教版高一化学必修一知识点梳理.docx
- 人教pep版英语三年级上册阅读理解专项复习试卷测试题(含答案).doc
文档评论(0)