器件与应用
PARTS & APPLICATIONS
]
【本文献信息】方冲,任海兰,王成丽 . 基于 MCU 的嵌入式在线升级系统的设计与实现[
. 电视技术,
J
2012
(
,
36
)
5
.
基于 MCU 的嵌入式在线升级系统的设计与实现
( 武汉邮电科学研究院研究生院 光纤通信技术和网络国家重点实验室,湖北 武汉 430074)
方 冲,任海兰,王成丽
【摘 要】在基于 MCU 的嵌入式应用中,应用程序一般是通过仿真器烧写到片内存储器中的,该方式的缺点是应用程序的更新
和升级必须依赖仿真器,而且程序一旦更新不成功,会破坏原有的程序。为了解决此问题,在 Xmodem 通信协议的基础上,设计
了一种基于 MCU 的嵌入式在线升级系统,并给出了该系统的详细设计流程。
【关键词】MCU
【中图分类号】TP316
Xmodem 协议; 软件架构
【文献标识码】A
; 在线升级;
Bootloader
;
Design and Realization of Embedded Online-upgrade System Based on MCU
(
SKL of OCTN
FANG Chong
,
REN Hailan
,
WANG Chengli
,
Wuhan Research Institute of Posts and Telecommunications
,
Wuhan 30074
)
,
China
【Abstract】In the embedded application system based on MCU
,
the application program is commonly written to internal memory by emulator
,
in which
the update and upgrade of the application program must rely on emulator
,
and once there is a failure of program update
,
the old program will be de-
stroyed. To resolve the problem mentioned above
,
on the basis of Xmodem protocol
,
a online-upgrade system based on MCU is designed
,
and the design
process of this system is discussed in detail in this paper.
【Key words】MCU
;
online-upgrade
;
Bootloader
;
Xmodem protocol
;
software framework
在嵌入式系统投入实际环境运行后,一旦用户有新的需
求或者原有系统出现问题时,就需要嵌入式系统在不断电或
保持系统正常运行的情况下,能够通过外围接口(
口,网
口或串口) 实现对自身程序的更新,完成系统的在线升级
JTAG
。
1-2
。
1b
所示
双系统
],如图
Bootloader
1a
结构[
3-4
随着在线升级越来越多的应用到嵌入式系统中,一
些在线升级方案逐渐被提出,当前嵌入式在线升级的方案
主要有两种典型的软件架构: 一是在
中嵌入通
信模块,对应用程序运行区直接进行更新[
所
示; 二是用两个应用程序进行切换,即
],
如图
其中第一种软件架构的特点是结构简单
、
易于实现但可靠性不高,第二种软件架构的特点是可靠性
高,但实现起来较为复杂,所占资源较多
结合这两种解
决方案的特点及其适用范围,本文在第一种软件架构的基
础上提出了一种可靠性好
灵活度高的在线升级解决方
、
案,并给出了其具体的实现
1 在线升级系统的整体设计
”
“
。
。
为了适应对可靠性
灵活性要求较高的嵌入式应用
、
系统,设计了一种改进的方案,其软件架构由
Bootloader
工程和应用程序工程构成,如图
的主
要区别如下: 一是增加了应用程序的备份区,每次升级时
首先拷贝至备份区,而不直接覆盖运行区程序,这样 通 信
其与图
所示
。
1a
2
基金项目: 国家 863 计划项目( 2007AA01Z229)
22 《电视技术》第 36 卷第 5 期( 总第 380 期) |投稿网址 http: www.VideoE.cn
图 1 升级系统典型的软件架构
过程中出现错误不会导致破坏原有程序,提高了升级的可
靠性; 二是将升级过程划分为两个阶段,第一阶段将应用程
序拷贝至备份区,第二阶段完成备份区到运行区的拷贝,以
便用户灵活的控制升级传输与完成升级的时机,提高了升
级的灵活性; 三是将
划分为不同的功能模块,这
样只需要根据不同的硬件平台完成相关的驱动及系统初
始化模块即可完成此系统的移植,提高了的通用性
Bootloader
。
此系统的主要工作流程为:
)
1
Bootloader
通过仿真器
器件与应用
PARTS & APPLICATIONS
) ,为了方便升级,在此设计了二级中断向量,完成系
根据以上分
FFFF
统中断向量到自定义二级中断向量的映射
析,可对
作如下分割( 逻辑划分) :
。
Flash
MYM8000- MYMC000
;
kbyte
MYM8000- MYMC000
;
kbyte
(
(
Page E0 - E3
) 应 用 程 序
运 行 区,共
Code
Page E4 - E7
) 应 用 程 序
备 份 区,共
Code
64
64
MYM8000-MYMA000
(
Page FC
) 应用程序
) 应用程序
Page FC
运行区,共
备份区,共
;
8 kbyte
;
8 kbyte
Lib
Lib
MYMA000-MYMC000
MYM8000-MYMC000
;
kbyte
(
(
(
MYM8000-MYMC000
(
MYM8000-MYM9800
Page F8 - F9
)
Bootloader Code
运 行 区,共
32
Page FA-FB
)
Bootloader Code
备份区,
32 kbyte
;
)
Page FE
Bootloader Lib
运行区,共
;
6 kbyte
;
6 kbyte
MYM9800-MYMB000
(
)
Page FE
MYMB000-MYMB800
(
)
Page FE
Bootloader Lib
运行区,共
Isr
备份区,共
;
2 kbyte
MYMB800-MYMC000
其中中断向量是两个工程所共用的,分配其存储区
Page FE
2 kbyte
Isr
(
)
备份区,共
;
。
时只需要划分一组
3 Bootloader 的设计与实现
3. 1 Bootloader 程序设计流程
3
4
划分为
Bootloader
通信模块
在此系统中,
升级控制模块
、
所示
。
串口的初始化
、
个模块,系统初始化
命令行模块,其
模块
、Xmodem
、
系统初始化模块主要完成时钟的初
流程图如图
中断的初始化以及定时器的初始化,
始化
、
为其他模块的运行准备条件; 升级控制模块主要完成应用
程序备份区到运行区拷贝的操作,以及应用程序的引导,
或者升级第二阶段拷贝失败时,
当系统中只有
会保持在
通信模块
实现了系统同上位机的通信; 命令行模块提供给用户灵活
控制升级的接口,下面详细介绍
通信模块及命令
行模块的实现
3. 2 Xmodem 通信模块的实现
的主循环中运行;
Bootloader
Bootloader
Xmodem
Xmodem
。
。
协议是一种串口通信中广泛用到的异步文
两种,前
分为标准
,
Xmodem
件传输协议
者以
1 kbyte
并且每个块都使用一个校验和过程来进行错误检测
为帧头(
1k-Xmodem
字节块的形式传输数据,后者字节块为
协议的格式如图
其中,
Xmodem
所示
128
和
。
Xmodem
。
字节) ; 信息包序号为当前信息包号(
4
SOH
字节) ,范围为
1
; 信息包序号的补码为当前信息包号的补码(
255
数据区段为数据区段的长度固定为
则为
字节) ; 算术校验和为
Xmodem
验和,只对数据区段计算后对
1 024
取模( 如果是
256
1k-Xmo-
1
128
0 ~
字节) ;
1
字节( 如果是
1k-
字节的算术校
1
MCU
图 2 在线升级系统的软件架构
中,其作用是完成应用程序的升级及其引导;
烧写到
) 新的应用程序在用户启动升级后,通过
或原应
2
Bootloader
) 对系
用程序中的通信协议模块拷贝到应用程序的备份区;
3
统进行复位( 跳转到
中
的升级模块实现新应用程序对原应用程序的替换,并跳转到
应用程序执行区的起始地址,完成了应用程序的升级
2 系统的软硬件平台及存储分配
2. 1 系统的硬件平台
的起始地址) ,由
Bootloader
Bootloader
。
该系统的设计及实现是基于
[
Freescale MC9S12XD256
]
7-8
芯片,该芯片以
的片内
4 kbyte
S12 CPU
E2PROM
划分为
个
16
Page
为内核,带有
,
的
14 kbyte
,每个
Page
256 kbyte
,其中
RAM
为
16 kbyte
的片内
,
Flash
的
256 kbyte
,其逻辑地
Flash
址为:
MYM4000-MYM8000
(
) ;
Page FD
MYM8000-MYMC000
(
Page E0-E7
,
F8-FC
,
FE
) ;
。
寄存器,其寻址方式是
Page
寄存器( 相当于偏移地址) ,完
(
)
MYMC000-MYMFFFF
Page FF
的
S12
CPU
有一个
Page
寄存器( 相当于基址)
成逻辑地址到物理地址的映射
2. 2 系统的软件平台
+ PC
。
该系统的软件环境为
开发工具,采用
CodeWarrior
编译出来的
CodeWarrior
编码的
C
程序文
为了方便下位
。
文件,并自定义
校验部分以保证传输的正确性,关于此
语言进行开发,经过
件,其格式为
ASCII
机进行解析,可以把
其格式,加入
部分细节,请读者查阅相关的文献,在此不作详细阐述
2. 3 存储分配
S-record
文件转化为
格式
CRC
. bin
S19
S19
。
经过
CodeWarrior
编译出来的代码,其地址是不连续
文 件,可 将 生 成 的 代 码 分 为 代 码 段
) ,其中系
)
的,经过 分 析
(
中断向量段(
、
Code
统自带的中断向量段地址是不变的(
S19
库函数段(
、
Lib
)
2nd ISR
MYMFF00 -MYM-
dem
则为
校验)
。
CRC
投稿网址 http: www.VideoE.cn |《电视技术》第 36 卷第 5 期( 总第 380 期) 23
器件与应用
PARTS & APPLICATIONS
}
ucCurtState
;
ucStateChange
;
U8
U8
/ *
/ *
当前状态
. * /
状态改变标志
. * /
;
XMD_STM_ST
根据
Xmodem
的状态机,用
switch
程,并完成每个状态下的处理函数,即可完成
议的接受端
3. 3 命令行模块的实现
。
结构实现其主流
协
Xmodem
命令行模块是升级系统与用户之间的接口,方便用
) 启
) 提供对系统进行复位
完成升级文件到
户灵活地控制升级时机,其至少需要提供两个接口:
动
的接口
应用程序备份区的拷贝,第二个接口是系统跳转到
进行文件传输的接口;
其中第一个接口配合
Xmodem
Xmodem
。
1
2
Boot-
loader
起始地址,完成程序的更新
。
命令行可以实现为,通过匹配命令接口,然后调用其
对应的回调方式,其数据结构定义如下:
typedef unsigned char
函数类型
* /
(
* prCmdProc
) (
) ;
void
/ *
定义命令处理回调
typedef struct CLI_CMD_ITEM_st
{
const char
* pcKeyword
prCmdProc
}
CLI_CMD_ITEM_ST
prCmdProcRutn
;
;
;
在此系统中,通过一个状态机实现了
提供的超级终端,
Xmodem
Xmodem
协议的
状态机
接收端,发送端可用
如图
所示
5
。
PC
图 5 Xmodem 状态机
其数据结构定义如下:
typedef enum
{
XMD_STM_START = 0
XMD_STM_WAIT
,
XMD_STM_MSGPROC
XMD_STM_QUIT
,
XMD_STM_CNT
}
XMD_STM_EN
;
typedef struct XMD_STM_st
,
{
,
/ *
开始状态
. * /
等待及校验状态
. * /
数据处理状态
. * /
退出状态
. * /
/ *
/ *
/ *
24 《电视技术》第 36 卷第 5 期( 总第 380 期) |投稿网址 http: www.VideoE.cn
const CLI_CMD_ITEM_ST m_astCmdList
{
{
" fwdl"
,
CLI_ProcFWDL
} ,
[]
=
/ *
定义启动
Xmodem
命
{
" swrst"
,
CLI _ ProcBOOT
}
定 义 重 启 系 统 命 令 接
/ *
令接口
* /
口
* /
} ;
通过实现命令处理函数
CLI_ProcFWDL
VOID
(
) ,
CLI_
) 即可完成命令行模块的设计
。
(
ProcSWRST
VOID
4 测试结果
1. 0
境后,将
的应用程序通过
PC
升级到运行区,如图
) 功能性测试
版本升级到
从
般不需要升级
1. 0
1
按照前面所述的硬件结构和软件实现搭建好测试环
版本
Bootloader
机提供的超级终端下载至备份区并
版本的
烧写到
Flash
,将
1. 0
6
。
。
所示
由图
6
版本,
可知,应用程序能够成功的
版本在必要时( 一
2
。
。
1. 1
1. 1
版本
Bootloader
) 稳定性测试
Bootloader
) 也能够升级到
在通信的过程中断电或者取消
的传输,升级标志位不会被置,系统均能够保持
Xmodem
在应用程序的当前版本运行; 在从备份区拷贝至执行区的
过程中断电,当前版本的应用程序被破坏,但系统能够维
) 循环中运行,由于此过程所
持在
while
需时间很少(
级) ,此种情况发生的概率很小,而且
一旦出现,系统能够通过再次升级,恢复至原应用程序
Bootloader
100 ms
中的
1
(
。
3
。
) 灵活性测试
在此系统中用户可以灵活地控制下
载新程序,以及升级到新程序的时机,在新程序成功下载
到备份区之后,只要用户不发
命令或遇到异常重启,
系统均不会更新至新版本,而保持在当前版本运行
Boot
。
图 6 在线升级系统测试结果
5 结束语
本文结合嵌入式产品的在线升级的需求,对比了两
种升级方案的实现,提出了一种改进的在线升级方案,由
测试结果可以看出,该方案可靠性好
通用性
、
强,设计达到了预期效果
该系统已成功应用于基于
系列单片机的嵌入式系统中,对实际
灵活度高
、
。
Freescale MC9S12XD
的嵌入式应用有一定的参考意义
。
器件与应用
PARTS & APPLICATIONS
处理器
Bootloader
的设计与实现[
]
.
J
微处理
嵌入式设备在线系统升级的设计与实现[
]
J
.
,
30
3085-3087.
) :
13
(
计算机工
]
一种针对嵌入式远程升级安全的存储解决方案[
J
.
计
. ARM7
103-106.
参考文献:
[
] 武国平,史仪凯
1
) :
机,
(
,
31
2010
5
] 邓中亮,孙静
[
2
.
程与设计,
] 尹恒,严华
[
3
.
算机应用,
2009
(
,
31
) :
992-994.
4
] 王恒,王颋,王泉,等
[
4
.
2011
基于
]
制[
J
.
微计算机信息,
Bootloader
,
20
:
2007
[
] 聂章龙,王宜怀
5
. Freescale HC08
计算机工程与设计,
]
技术[
J
.
57-59.
系列
,
31
2010
MCU
(
) :
3
] 马学文,朱名日,程小辉
[
6
,
31
计算机工程,
[
]
.
J
2005
.
(
嵌入式系统中
) :
7
96-97.
的可靠嵌入式软件远程更新机
集成开发系统的若干关键
518-520.
Bootloader
的设计与实现
[
] 孙同景,陈桂友
7
. Freescale 9S12
十六位单片机原理及嵌入式开发技
术[
M
]
.
[
] 邵贝贝
.
8
版社,
2004.
北京: 机械工业出版社,
单片机嵌入式应用的在线开发方法[
M
2008.
]
.
北京: 机械工业出
?
作者简介:
方 冲( 1987 - ) ,硕士生,主研光纤通信及嵌入式软件;
任海兰( 1970 - ) ,女,博士、研究生导师,主研光纤通信与光电子
技术;
王成丽( 1987 - ) ,女,硕士生,主研光纤通信及嵌入式软件。
责任编辑: 时 雯
收稿日期:
2011-08-16
17
页)
( 上接第
频序列的运动类型进行划分,并结合原点预测
模板替换
、
和提前终止,从四个方面对
算法进行改进和
仿真结果表明,新改进的算法在维持图像质量基本
优化
不变甚至略有改善的情形下,较大幅度地减少了搜索点
,能够更好地
数,使得运动估计的时间节省了
满足许多实时场合( 如实时视频监控
物联网)
、
的应用要求,具有较强的实用价值
,
HSIEH H J. Multi-direction search algorithm for block
,
中国图象图形学报,
[
] 申舟,李正明,潘天红
7
]
基于方向自适应的运动估计混合模板搜索算法[
J
.
动估计[
]
J
.
,
LIN Y
. H. 264 / AVC
中国图象图形学报,
中基于搜索区域划分及评估的运
[
] 丁鑫,樊慧津
6
motion estimation in H. 264 / AVC
可视电话
、
. IEEE Trans. Image Processing
]
的快速运动估计算法[
J
.
UMHexagonS
10% ~ 23%
计算机工程
[
]
J
242-246.
[
]
8
LIN C C
14-20.
88-99.
,
15
,
16
,
(
3
2010
2009
2011
。
) :
) :
) :
1
2
2
(
(
.
。
参考文献:
[
] 毕厚杰,王健
1
.
邮电出版社,
[
]
2
CHEN Zhibo
新一代视频压缩编码标
H. 264 / AVC
[
M
]
.
北京: 人民
motion estimation for JVT
2009.
,
,
HE Yun. Fast integer pel and fractional pel
ZHOU Peng
]
[
C
,
2002.
基于快速运动估计算法
/ / Proc ISO / IEC MPEG & ITU -T VCEG
研究
JVT
S. l.
[
]:
]
的改进和优化[
J
.
UMHexagonS
6th Meeting.
[
] 罗哲
3
.
与开发,
2011
[
] 熊承义,白云
4
(
) :
3
29-31.
]
基于方向信息的快速整像素运动估计优化[
J
.
.
中南
民族大学学报,
2010
,
29
[
] 杨晓珍,吴延海,王锋
5
.
(
) :
62-67.
1
基于块运动类型的自适应菱形运动估计搜索
]
算法[
J
.
计算机工程,
2007
(
,
33
23
) :
220-222.
.
(
[
H. 264
与应用,
基于
) :
2011
] 卢政,卢俊
] 杨晓琴,季晓勇
[
9
,
47
4
基于
.
,
(
) :
7
,
FERNANDO W A C
SHI Zhiru
技术,
174-175.
UMHexagonS
29-31.
2011
[
]
11
10
35
]
的快速运动估计算法优化[
J
.
电视
,
DE SILVA D V S X. A motion estima-
[
]
12
[
]
C
AVC
WU Xiaomin
[
]
C
for H. 264
tion algorithm based on predictive intensive direction search for H. 264 /
/ / Proc. 2010 ICME.
,
ZHU Nanhao. A fast motion estimation algorithm
,
XU Weizhang
IEEE Press
667-672.
S. l.
[
]:
,
2010
:
/ / Proc. 2010 ICSAP.
[
S. l.
]:
IEEE Press
,
:
2010
112-116.
?
作者简介:
杨 齐( 1987 - ) ,硕士生,主要研究方向为视频编解码技术;
李子印( 1978 - ) ,博士,硕士生导师,主要研究方向视频压缩与通
信、图像处理技术。
责任编辑: 时 雯
收稿日期: 2011-10-26
投稿网址 http: www.VideoE.cn |《电视技术》第 36 卷第 5 期( 总第 380 期) 25