logo资料库

基于MCU的嵌入式在线升级系统的设计与实现.pdf

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
器件与应用 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
分享到:
收藏