当前位置: 主页 > 论文下载 > 计算机论文 >

远程更新ARM 程序的设计与实现

作者:周宁刚 日期:2014-04-18 09:49 来源:电子技术与软件工程
摘要:本文介绍一种通过串口远
程更新ARM 程序的设计思想,并
以美国ATMEL 公司的ARM7 芯片
AT91SAM7S512 为例,给出了其设
计要点及设计方法,并对可靠性
进行了设计。
【关键词】AT91SAM7S512 FLASH bootloader
远程更新
1 引言
在实际工程应用中,ARM 程序通常采用
JTAG 口进行更新,在ARM 电路板单板阶段
通过JTAG 口调试也是ARM 开发的一种理想
选择。但当ARM 电路板装入整机投入真正的
使用环境后,当用户对ARM 软件功能或性能
提出新的要求时,ARM 软件的更新维护如果
仍然通过JTAG 调试口,将较大的提高维护
成本。本文提出一种通过RS232 串口远程实
现ARM 软件的更新机制,通过在ARM 内部
FLASH 中植入一段bootloadr 来更新应用程序
和引导应用程序的运行。现以AT91SAM7S512
为例,对此更新机制的设计思想、设计方法及
可靠性设计进行介绍。
2 设计思想
整个系统由三部分组成,分别为ARM 模
块,串口模块和上位机模块。通过串口建立上
位机和ARM 之间的远程通信,系统框图如图
1:
设计中将ARM 芯片内部FLASH 分为两
块存储区域如图2,一部分存放bootloader 镜
像文件,一部分存放应用程序的镜像文件。
2.1 bootloader
bootloader 是ARM 芯片上电或复位后最
先执行的程序代码,利用此段代码可建立与上
位机之间的交互,实现应用程序的存储,并将
远程更新ARM 程序的设计与实现
文/周宁刚
本文介绍一种通过串口远
程更新ARM 程序的设计思想,并
以美国ATMEL 公司的ARM7 芯片
AT91SAM7S512 为例,给出了其设
计要点及设计方法,并对可靠性
进行了设计。
摘 要
应用程序为ARM
实际工作时的目标程
序。
设计的工作流程
为:先将bootloader 镜
像文件利用JTAG 口烧
写到ARM内部FLASH
的第一部分。芯片上电
或复位后,ARM 总会
自动进入bootloader,
通过bootloader 判断是
否有上位机发送的程序
更新请求, 如果有程
序更新请求, 则上位
机将应用程序的镜像
文件发送至ARM,并
利用bootloader 将应用
程序存储至ARM 芯片
内部FLASH 的第二部
分;如果没有更新程序
请求,则bootloader 将
ARM 操作地址跳转到
ARM 内部FLASH 的
第二部分,运行应用程
序。程序设计的流程框
图如图3。
3 设计方法
3.1 bootloader设计
bootloader 的设计
主要分为三部分程序设
计模块:ARM 和上位
机交互模块,存储应用
程序模块和加载应用程
序模块。
3.1.1 ARM 和上位机交
互模块
ARM 和上位机之
ARM 操作地址跳转到应用程序入口。
2.2 应用程序
间的通过RS232 串口通信,主要完成的功能为:
判断是否需要更新ARM 的应用程序;接收上位机发送的应用程序镜像文件。
设计流程:ARM 上电后,bootloader 在
一定的时间内判断是否需要更新应用程序,如
果需要更新则bootloader 和上位机进行握手应
答,握手成功后上位机发送应用程序的镜像文
件发送至bootloader,发送完成后,bootloader
对应用程序镜像文件的所有字节进行校验;
如果不需要更新应用程序,则bootloader 将
ARM 的操作地址跳转到应用程序入口,运行
应用程序。
可靠性设计:ARM 和上位机交互的可靠
性主要体现在ARM 和上位机之间的数据传输
可靠,防止出现
误码、缺码现象,
因此两者必须建
立健全的通信机
制。本设计两者
之间的通信方式
采用应答方式,
即其中一个发出
命令后,另一个
收到命令后必须
给出反馈信息后,
才能进行下一步
操作。除此之外
两者之间传输的
数据应包裹在一
个完整帧内,格
式为: 帧头+ 数
据+ 帧尾+ 校验
和,数据传输过
程中在任何一点
出现错误,应立
即给出错误指示,
中止进行下一步
操作。
3.1.2 存储应用程
序模块
AT
9 1 SAM
7S512 芯片内部
FLASH 总大小
为512Kbytes,
共有两个单
元, 每个单元
为256Kbytes。
第一个存储单
元的地址范围
为: 0 x 1 0 0 0 0 0
- 0 x 1 3 F F F F ,
第二个存储单
元的地址范围
为:0x140000 -
0x17FFFF。每个
单元均有独立的
FLASH 控制器,
EFC0 和EFC1。利用对FLASH 控制器的操
作,可进行ARM 内部FLASH 的读,写及擦
除操作。现将应用程序的镜像文件存储在第二
个FLASH 单元中,起始地址为0x140000 。
EFC1 的基地址为0xFFFFFF00,EFC1 的寄存
器见表1。
设计流程:bootloader 接收到应用程序镜
像文件后,将数据以一个PAGE(256 字节)
的大小为一组依次写入AT91SAM7S512 内部
FLASH,对AT91SAM7S512 一个PAGE 写操
作的流程如图5 所示。
可靠性设计:存储应用程序的可靠性主要体现在数据应完全正确写入AT91SAM7S512
内部FLASH,因此设计中在对每个PAGE 进
行写操作前和写操作后,均需通过MC_FSR
寄存器检查内部FLASH 是否空闲,除此之外
在每个PAGE 写完成后可增加适当的延时,确
保数据完全写入。
3.1.3 加载应用程序模块
加载应用程序模块的主要功能为将ARM
的操作地址跳转到应用程序入口。
设计流程:ARM 上电或复位后, 在一
定时间内没有接收到更新应用程序请求后,
bootloader 将ARM 的操作地址跳转到应用程
序的入口地址0x140000,运行应用程序。将
操作地址跳转到0X140000 地址处,使用的汇
编指令为:ldr pc=0x140000。
可靠性设计:加载应用程序模块的可靠
性设计主要体现在bootloader 能够准确、快速
将操作地址跳转到0X140000 处,并且应用程
序能够可靠运行,不受bootloader 的干扰。因
此在bootloader 设计中应禁止软件看门狗功能,
防止应用程序还未完全启动而系统自动复位;
其次应严格设定bootloader 判断是否有更新应
用程序请求的时间,最好控制在10ms 内。
3.2 应用程序设计
在应用程序设计中,为使bootloader 成
功加载到应用程序,应用程序在使用编译器
生成镜像文件时,必须将编译器的ROM 地
址设置为0X140000。本设计采用的编译器为
ADS1.2,编译器的ROM 设置如图6。
为保证应用程序的高速、可靠运行,在
应用程序设计中,应将应用程序从FLASH 中
完全复制到SDRAM 中,本部分代码需在应用
程序启动代码(.S 文件)中完成。
4 结论
本文浅谈了通过RS232 串口更新ARM 芯
片AT91SAM7S512 程序的基本设计思想及设
计方法。通过对一些关键点进行可靠性设计,
使设计具有较高的实用性,能够直接应用到工
程中。本设计思想具有一定的扩展性,可以应
用到多种微处理器中,如单片机、ARM 等。
其次也可应用于多种接口中,如RS422 接口,
CAN 接口、以太网接口等。
参考文献
[1] 杨宗德. 嵌入式ARM 系统原理与实例开发
[M]. 北京: 北京大学出版社,2007.
[2] 杜春雷.ARM 体系结构与编程[M]. 北京:
清华大学出版社,2003.
[3] 周立功,张华. 深入浅出ARM7[M]. 北京:
北京航空航天大学出版社,2006.
作者单位
北京明航科技发展有限公司 北京市 100096

 


  博深论文网( www.bosslunwen.com ),是一个专门从事期刊推广、论文发表论文投稿指导的机构。本站提供整体论文发表解决方案:省级论文/国家级论文/核心论文/CN论文。
  论文投稿:bosslunwen@126.com
  咨询电话:18602588568
  在线咨询:
论文发表-论文投稿-发表论文86099078

版权所有:博深论文网 苏ICP备06011074号
论文投稿咨询电话:18602588568,在线咨询:论文发表-论文投稿-发表论文86099078,论文投稿:bosslunwen@126.com
本站点提供如下服务:论文发表 发表论文 论文投稿 职称论文发表 学术论文发表
山东省济南市城南路213号 本网站隶属于-济南富东化工有限公司