DIY编程器网
标题:
单片机程序远程升级技术
[打印本页]
作者:
liyf
时间:
2014-9-29 20:08
标题:
单片机程序远程升级技术
单片机程序远程升级技术
周天兵,刘国忠
( 山西科泰微技术有限公司,山西太原030006)
摘要: 介绍一种单片机程序远程升级技术,并详细描述了此方法的设计和实现过程。该技术是通过在单片机Flash 存储器中
置入引导加载程序来实现的,解决了不具备IAP 功能的普通单片机程序远程升级问题。
关键词: 单片机; 远程升级; 引导加载程序; 在应用编程
中图分类号: TP39 文献标识码: A 文章编号: 1006 - 2394(2011)09 - 0025 - 03
Remote Upgrade Technology for the MCU Program
ZHOU Tian-bing,LIU Guo-zhong
( Shanxi Kotel Micro Technique Co.,Ltd,Taiyuan 030006,China)
Abstract: A remote upgrading technology for the MCU programs is introduced in this paper,and the design and
implementation process is described in detail. This technology is achieved by using a MCU Flash-resident bootloader program,
and by which the problem of the MCU without IAP function to downloading and uploading programs is solved.
Key words: MCU; remote upgrade; bootloader; IAP
0 引言
单片机程序烧录是一个关键技术,主要有以下3
种方法: 1) 采用传统的并行编程器烧录; 2) 通过串行
口( 如JTAG 接口) 进行在系统编程,即ISP( In-System
programming) 技术; 3 ) 基于IAP ( In-Application programming)
技术的在应用编程。ISP 方式相对于传统
的并行编程方式有了极大的进步,它不需要将单片机
从电路板上卸下就可对单片机芯片进行编程,方便调
试,也简化了产品设计制造流程,大大缩短了开发时
间。但ISP 也有其不足之处,每次烧录时必须通过专
用编程设备。而在某些特殊应用场合,尤其是对一些
无人值守的单片机程序升级时,需要进行远程升级,
ISP 无法适用,而IAP 能很好地解决这一问题。IAP 和
ISP 是一脉相承的,只是IAP 将芯片的编程融入到通
信系统中。IAP 技术对仪器仪表的智能化意义重大,
高档的智能设备都具有自诊断、自修复、自适应和自升
级功能。随着芯片技术的高速发展,各厂家相继推出
了支持IAP 技术的芯片,如Philips 的P89C669 和ATMEL
的ATmega 系列AVR 单片机等,但对于大多数的
普通单片机都不具备IAP 功能,而大多应用中又都带
有通信接口,则可以借鉴带有IAP 功能的单片机编程
技术,在普通单片机上实现IAP技术。本文以Silabs公
司的C8051F120 为例说明在普通单片机上实现单片
机程序远程升级的设计过程。
1 远程升级原理概述
目前,多数单片机程序远程升级都是基于单片机
的IAP 技术, IAP 技术是应用在Flash 程序存储器的一
种编程模式,它从结构上将Flash 存储器映射为两个
存储区域,通过运行其中一个存储区域上特定的IAP
程序来对另一个存储区域进行编程操作,编程完成后
跳转到新用户程序开始运行。这就要求预先在其中一
个存储区域中装入引导加载程序,即Bootloader 程序。
在一些支持IAP 的单片机中,本身就带有Bootloader
程序,芯片出厂时由厂家写入,有的还允许用户对其进
行修改。对于一些本身不具备IAP 功能的单片机,可
以利用其已有的通信接口,再编写Bootloader 程序实
现单片机程序远程升级。
C8051F120 采用高速、流水线结构的CIP - 51 内
核,与MCS - 51 兼容,其内部PLL 可倍频至100 MHz,
具有2 个UART 串口,128 KB 可在系统编程的Flash
存储器, 8448( 8 K + 256) 字节的片上RAM,有JTAG 接
口,其完全具备单片机程序远程升级的条件。在
C8051F120 单片机上实现程序远程升级,除了用户
程序之外,还需要另外编写用于引导加载的Bootload-
2011 年第9 期仪表技术·25·
er 程序,该程序必须通过JTAG 接口烧入相应的
Flash 区域,而用户程序可以通过Bootloader 程序的
IAP 功能写入,或通过JTAG 接口烧入。当芯片上电
后,首先,程序跳至Bootloader 程序开始运行,然后检
查升级条件或标记,如果需要进行升级,则接收数
据,执行升级服务程序进行程序更新,否则跳至用户
程序开始执行。
2 远程升级的设计与实现
2.1 远程升级系统构成
单片机程序远程升级系统由计算机和设备终端两
部分组成,计算机和设备终端之间的连接可以根据具
体的应用和现有资源选用相应的通信接口,如RS -
232、RS - 485,CAN、USB 等总线接口,或是无线网络、
TCP /IP、GPRS 等网络接口,本设计选用RS - 485 接
口。由于单片机开发环境生成的代码文件( 如* . bin
或* . hex 代码文件) 通常都包含一些附加格式等信
息,所以需要在计算上设计上位机应用软件将单片机
代码文件中代码信息提取出来,然后按照规定的格式
打包,并发送至单片机设备终端。单片机程序远程升
级系统组成框图如图1 所示。
图1 单片机程序远程升级系统组成框图
2.2 存储器规划及Bootloader 的启动
鉴于51 单片机的特点,从0 地址开始的区域存放
中断向量表,实现复位以及中断的跳转。把存放用户
应用程序的区域称为APP 区,用于存放Bootloader 程
序的区域称为BOOT 区,原则上APP 区和BOOT 区可
以存放在Flash 存储器的任意位置,但考虑到Bootloader
程序的通用性,以及对用户程序开发的约束条
件尽量少,且用户程序一般不超过64 K( 因为单片机
的长跳转指令LJMP 只能在64 K 范围内跳转,若程序
超过64 K,则要应用Bank Switch 技术) ,Bootloader 程
序较小,因此,将0 ~ 0xEFFF 区域作为APP 区,后面4
K,即0xF000 ~ 0xFFFF 作为BOOT 区。但由于51 单
片机上电后执行的第一条便是0x0000 至0x0002 处的
指令,即一条LJMP 跳转语句,所以在从0 地址开始的
3 个字节处写入一条跳转指令,使得单片机上电或复
位后能够进入Bootloader 程序。
Bootloader 程序的启动主要有两种方式,一种是,
芯片上电后,先运行用户程序,当需要升级程序时,
再从用户程序调用Bootloader 程序,即将程序指针跳
转至Bootloader 程序开始执行; 另一种方式是,芯片
上电后,先跳至Bootloader 程序开始运行,无升级条
件或标记再跳至用户程序开始执行。前者若在程序
升级过程中出现断电或是死机,则重启后无法再通
过IAP 方式进行升级,只能通过JTAG 接口恢复,而
第二种方式,只要在从0 地址开始的前3 个字节( 该
处存放Bootloader 程序入口地址向量) 写入过程没出
现断电或是死机,就总是能进入Bootloader 程序,因
此,相对前者,后者安全性要高得多。本设计采用第
二种方式。
2.3 Bootloader 的设计和实现
Bootloader 程序通常由时钟和通信接口等硬件初
始化、监测程序、升级服务程序( 包括数据接收、Flash
擦除和读写等操作) 、跳转指令组成,以保证Bootloader
程序能正常进行引导加载。监测程序主要是检测升级
命令,本设计中是检测上位机发送的升级命令,这种方
式需要Bootloader 程序有握手等待时间,该时间大概
需要10 ~ 200 ms( 通信波特率大于115200 bit /s 时) 。
对于要求启动时间较小的系统,可以采用检测I /O 的
方法。收到握手命令后发送握手成功命令,等待升级
命令,若收到升级命令,则置升级允许标志,并接收数
据进行升级,否则,跳转至用户程序开始运行。
为保证接收数据的正确性和远程在线升级的可靠
性,对下载传输的代码数据打包,并规定了打包的帧格
式,帧头( EB 55) + 帧长度+ 帧ID + 数据+ 帧计数+
CRC 校验码。并且在传输过程中增加回传确认机制,
即当引导加载程序发现数据有误时,便会发送重发上
一帧的请求。通过不同的帧ID 来区分首帧、末帧和其
他帧。因为首帧中包含用户程序入口地址,所以,当判
断收到首帧且数据校验正确后,先备份Bootloader 入
口地址,即单片机Flash 从0 地址开始的3 个字节,然
后擦除用户程序Flash 区,再恢复Bootloader 入口地
址,并将首帧数据的前3 个字节,即用户程序入口地
址,写入到Bootloader 区指定位置,其余数据从单片机
Flash 的第4 个字节开始写入,对用户程序进行更新;
等待更新完末帧后,在Bootloader 区指定地址写入用
户程序有效标志,再将单片机软件复位,然后进入到用
户程序。为避免和用户程序中冲突,在Bootloader 程
序中没有使用中断。Bootloader 程序流程图如图2 所
示。
3 可靠性分析
由于C8051F120 中Flash 一次擦除最小单位是一
·26· 仪表技术2011 年第9 期
图2 Bootloader 程序主流程图
页( 1024 字节) ,且第一页存有中断向量表,所以,当对
软件进行升级时,必须擦除第一页。而从0 地址开始
的3 个字节处存有一条跳转至Bootloader 程序的跳转
语句,一旦擦除第一页后,在恢复从0 地址开始的3 个
字节( 即Bootloader 程序入口地址) 过程中出现断电后
死机,将使系统不能启动,则必须返厂采用JTAG 接口
才能重新烧写Bootloader 程序,因此,应尽量避免在升
级过程中断电。可以在收到首帧程序数据后擦除第一
页,并立即写入Bootloader 程序入口地址,以尽可能地
降低Bootloader 程序入口地址被破坏的几率。
4 结束语
本文介绍了一种简单易行、方便实用的普通单片
机程序远程升级方法。其优点显而易见,不仅为系统
地维护和升级提供了方便,还节省了大量的人力、物力
( 下转第31 页)
2011 年第9 期仪表技术·27·
4 自动控制算法
本系统主要控制对象是淀粉浆料经蒸汽喷射加热
器后的温度,对该温度控制的好坏,直接决定了淀粉浆
料的蒸煮效果及系统的节能降耗。
本系统中淀粉浆料经蒸汽喷射器后的温度参数是
在PID 控制、模糊控制等控制策略的基础上,利用机械
装置中的蒸汽喷射器及各流量、压力、温度参数有机集
合,形成的一种控制策略,其基本思想是将系统的调节
量,按照系统偏差及机械喷射器补偿信号的变化特点
来决定。其组成如图6 所示。
图6 控制器组成框图
图6 中,r( t) 为输入信号,输入到控制系统的主令
信号; b( t) 为反馈输入信号,与输出量成正比或某种函
数关系,量纲与输入信号相同; e( t) 和M( t) 为控制器
输入,分别表示偏差信号和机械喷射器补偿信号,是系
统表现出来的运动特征,给出相应动作的控制点; 逻辑
控制器接收偏差信号及机械喷射器补偿信号,决定给
出控制对象的相应输出信号; u( k) 为控制量,是逻辑
控制决定作用到被控对象的信号; 执行元件作用于被
控对象,并使其完成预定的性能; c( t) 为被控量( 或称
系统输出) ,是被控制的物理量; 测量元件将被控量转
换为反馈输入信号的装置,可对被控量进行测量并转
换成能与输入信号进行比较的量纲和数值。误差检测
器( 又称比较环节) 的输出等于输入和反馈信号之差。
5 实现工厂联网
通过数据总线,本PLC 自动控制系统可以作为子
系统与上位机、工厂的DCS 控制系统( Distributed Control
System) 通信,实现工厂联网。中央控制室通过本
子系统查看各监控点的实时参数,结合整个生产线的
需求下达控制指令,由本子系统执行,子系统根据指令
生产满足需要的浓度和流量的淀粉糊。
6 结言
在淀粉蒸煮器中引入PLC 自动控制系统,无疑是
对淀粉糊制浆过程、设备的一次革命性更新。并且,此
设备是以成套形式提供给使用者的,PLC 控制系统又
具有编程方便、易操作、维修简单的特点,能使此类产
品迅速融入到工厂的生产线中。具有PLC 自动控制
功能的淀粉蒸煮器现已形成系列化产品,可以应用于
造纸、食品等行业,满足不同客户的要求,尤其是迷你
型及干粉型淀粉连续蒸煮设备中自动控制系统的研制
成功,更能满足实验室应用及工厂老设备的改造。在
提高生产效率、节约能源、降低劳动强度及节约厂房用
地等方面都有着得天独厚的优势。
参考文献:
[1] 管江华,王静军,杨俊凯,等. 一种淀粉在线蒸煮器: 中国,
ZL2010 2 0249311. 9[P]. 2010 - 02 - 02.
[2]管江华,杨峻恺,夏思民. 马赫蒸汽喷射加热器的二次开发
[J]. 机电一体化, 2010( 12) : 87. ( 许雪军编发
櫚櫚櫚櫚櫚櫚櫚櫚櫚櫚櫚櫚櫚櫚櫚櫚櫚
)
( 上接第24 页)
2 结束语
该控制系统可满足无风扇的系统设计,确保系统
整机零噪音运行在温度范围变动较大的各种工业环
境; 硬件拓展性好,软件模块化设计,是一款通用型的
工业控制系统。
参考文献:
[1]刘世荣. 工业控制计算机系统及其应用[M]. 北京: 机械工
业出版社, 2008.
[2]任哲. 嵌入式实时操作系统μC/OS - II 原理及应用[M]. 2
版. 北京: 北京航空航天大学出版社, 2009.
[3]Jean J. Labrosse. 嵌入式系统构件[M]. 2 版. 北京: 机械工
业出版社, 2002. ( 丁云编发
櫚櫚櫚櫚櫚櫚櫚櫚櫚櫚櫚櫚櫚櫚櫚櫚櫚
)
( 上接第27 页)
和财力等资源,同时,大大延长了产品系统软件的生命
周期,降低单片机产品的维护成本。本文仅讨论了通
过串口方式进行升级的方式,如果将串口方式改换为
其他接口方式,如GPRS 模块、无线网络接口等,可将
该技术应用到更多的场合。
参考文献:
[1]潘琢金,施国君. 单片机原理及应用[M]. 北京: 北京航空
航天大学出版社, 2002.
[2]牛旭. 基于C8051F02X 单片机的远程在线升级技术[J]. 无
线电工程, 2006, 36( 3) : 1 - 3.
[3]黄家升. 基于IAP 的单片机软件远程升级[J]. 船舰电子对
抗, 2007, 30( 3) : 2 - 3.
[4]高时兵,马宏平,陈建福. C8051F130 的远程在线升级程序
设计[J]. 单片机与嵌入式系统应用, 2008( 9) : 2 - 3.
( 许雪军编发)
2011 年第9 期仪表技术·31·】
单片机程序远程升级技术.pdf
(500.11 KB, 下载次数: 0)
2014-9-29 20:10 上传
点击文件名下载附件
下载积分: 银子 -10 两
欢迎光临 DIY编程器网 (http://www.diybcq.com/)
Powered by Discuz! X3.2