原创 利用Flash实现单片机系统的在线维护

2009-8-13 19:05 2348 6 6 分类: MCU/ 嵌入式
摘要:本文讨论了单片机系统在线维护的原理,并以AT89C52单片机为例,介绍了通过串行通信在线维护单片机系统的实现方法及其注意事项。;D%s'@5DH0 电子园51单片机学习网d9E.NYH(| bd7|

关键词:单片机系统;在线维护;AT89C52;串行通信

8w)o(Yt M0 电子园51单片机学习网Y,o'r+_$mU0I

1 引 言

^s!Vmyg0 电子园51单片机学习网2w dYQ7z

单片机应用系统具有结构简单,可靠性高,灵活性强,性能价格比高等特点,如今已被广泛地应用于计算机行业的各个领域。随着单片机应用的推广,相应地带来了单片机系统的维护问题,特别是在相同硬件结构条件下多个版本软件的管理问题,因此实现单片机系统的在线维护是非常必要的。电子园51单片机学习网 F/Q;n H9U"I Z

电子园51单片机学习网s'g |7O3A)`

2 系统设计原理电子园51单片机学习网[gW a"j{


gL#To"I P0J;hY0单片机系统的在线维护有两种情况,一种就是就将系统的程序分成两个部分,并分别装载到单片机的EPROM与FLASH中,如AT89C52等,因为EPROM一般需要通过专门的编程仪器才能实现编程,所以一般是不能在线更改的;但是由于FLASH可以在线进行改写,通过对FLASH的在线编程就可实现单片机系统的在线维护了。此时的FLASH芯片也可以看成是一个扩展的程序存储器。另一种情况就是具备程序加载功能的芯片,如TMS320VC33、TMS320F206等,它们在系统启动时从FLASH中加载程序并执行,此时只要动态维护FLASH中程序就可以实现对系统的维护了。

5~&A9F xb0B,VG+C0

H8_+cZd0本文以ATMEL公司的AT89C52单片机为例,采用串行通信方式,对单片机系统在线维护的实现进行阐述。在系统中,程序按一定规则分别装载在AT89C52以及FLASH中,在保持AT89C52中程序不变的情况下,根据系统的需求可以动态更新FLASH中的程序。AT89C52中的程序与FLASH中的程序有如下的结构关系。

6BF/M*s4Pu3sc^0

%G"z/t wYL0电子园51单片机学习网 XzsA Aa


6136_200904061927011HDAt.gif

'N1u ID#`%P0

图1  AT89C52与FLASH的程序结构关系图电子园51单片机学习网}0Mu-M[

电子园51单片机学习网"ia/n3s v!z

上图中,通常称AT89C52中的程序为引导程序,FLASH中的程序称为加载程序。引导程序应该具有基本的功能,如初始化、系统的公用功能、中断向量定义等,还要有加载程序的功能(具有串行通信的能力,并对FLASH芯片进行读/写操作)。维护时,将.BIN程序文件通过PC机串口发送给AT89C52,AT89C52接收数据并将其写入到FLASH芯片中,这样只要更新BIN程序文件就可以对单片机系统的软件进行维护。

*X'dH!@o'Ef0 电子园51单片机学习网}/^dyZ

3 硬件结构图示与说明电子园51单片机学习网Yl3B-W%dz


&e-|u{6DYe,P z0硬件电路如图2示。电子园51单片机学习网sM7I jc

电子园51单片机学习网[os9K%z4V"|c!o~b.S

电子园51单片机学习网s3^~W;Ue:r


点击看大图电子园51单片机学习网4c Y3K6^9@/M6srW


图2  AT89C52与SST29EE010的接口电路电子园51单片机学习网6OEto*q)~1TE

电子园51单片机学习网&Qeu1t1D6N

图2中SST29EE010的22引脚(6136_200904061927013QQX8.gif信号)接地址线A15的反,这样就可以在MCU产生8000H~0FFFFH寻址范围时选通SST29EE010,相应地对SST29EE010芯片的开锁与关锁写操作的2AAAH、5555H地址值也要分别加上8000H(有关SST29EE010芯片的开锁、关锁控制,请参考《单片机与嵌入式系统应用》2003年第8期P31-32)。电子园51单片机学习网i T+c$B;u1C%Y P&}

电子园51单片机学习网 @ ?g oQx

SST29EE010空间大小为128K字节,而AT89C52的最大寻址空间为64K,本文不考虑扩展的问题,直接将高地址A15、A16分别接地,只使用SST29EE010芯片的128K字节空间中的0000H~7FFFH的32K空间。要利用更多的空间,需要对寻址进行扩展。电子园51单片机学习网 _Fl k? `i,T ^ L


D`p+H;w04 软件的设计与开发电子园51单片机学习网 I?_ }4k7o:fa


cnkY]2x)kN9x0系统软件的开发包括两个方面:即引导程序的开发和加载程序的开发。引导程序的开发是系统的基础,主要的功能是实现MCU的初始化,存储器检查,FLASH可用性检查,串行通信功能的实现,对FLASH程序的加载以及出错报警等,引导程序的工作流程如图3所示。电子园51单片机学习网2l0[/hk8N*c-olK


$g ]ft2D0

h i v+W } h:G0

6136_200904061927014ffg0.gif电子园51单片机学习网R5v;W7g?5Pb zv9PhWH


图3 引导程序工作流程图电子园51单片机学习网_Xh0Oh(e

电子园51单片机学习网,lgU|(goi*AK2~#iz

引导程序中有四个重要部分,AT89C52初始化、串行中断服务程序以及程序加载指令的实现,以及命令代码的解析等。在系统没有加载程序之前引导程序处在等待加载的状态,直到加载完成才可能进入正常工作模式,并且在引导程序进入正常工作模式时,也还可以通过调用程序加载模块(子程序)进行程序的更新。

,aS&r"JowU0 电子园51单片机学习网F[/x(C} i:F

由于SST29EE010是以128字节的页方式写入,所以实现加载指令时,对SST29EE010的写操作以128字节为分组,不足128字节的分组填充至128字节再处理。在加载程序时,主机将加载程序.BIN文件以128字节为单位分组,并为每个分组加上升级指令代码和位置参数后通过串口发送给MCU,MCU接收数据后进行判断,若是加载指令则将接收的数据写入到参数指定的FLASH区,并返回操作代码;处理流程如图4所示。

sjZ}4k9kG |0 电子园51单片机学习网yU6V5~;C f\9{

电子园51单片机学习网 e3o;^ Ihk$@ z


6136_2009040619270159EoL.gif

+x rE ?,~2QA D#p0

图4 程序加载的处理流程图

N.^'l5QG N;B0 电子园51单片机学习网^0Hus8{+]&sd\P1a s

5 注意事项电子园51单片机学习网 ~IRs.o9`


0v'Y @SW q0在系统设计与程序设计过程中需要注意以下几点:

Z'R0Jb5N,A$W]0 电子园51单片机学习网'|*~/Lt&h:\

(1)对FLASH芯片进行读/写操作时,将其当作扩展的外部存储器(用MOVX @DPTR,A指令);执行程序时,将其作为扩展的程序存储器。

#qA*?6el TQ^0 电子园51单片机学习网4t!j[J$d4g.x)k#n

(2)在写数据之前要打开SST29EE010的保护锁,写操作完成后要将SST29EE010的保护锁关闭,关锁之前要有一定的延时(通过需要10ms)。电子园51单片机学习网5qQ qW#\L"r


c%n0gc"U0(3)为了保证整个系统的可用行,需要对加载程序进行可用行检测机制,最简单的方法就是为所要加载的.BIN文件增加3字节的内容,在文件前面增加2字节的.BIN文件长度指示,并在加载程序之后增加1字节的程序校验值(如异或值),写入FLASH中的内容如图5所示。电子园51单片机学习网hNW6P,fNh7N%s(V4B5M


9Vm\.d.G&`/VNR0

6136_200904061927016wszb.gif电子园51单片机学习网2GxUK\z#U


图5加载程序的格式与内容电子园51单片机学习网o`2^4XhA dr!S

电子园51单片机学习网?2Y{H"jjy Cr

(4)为了进一步提高系统的安全性,需要进行相关的身份认证获取加载的权限如口令验证,否则不予开放加载功能。电子园51单片机学习网p dp#|7Pg/o3@F

电子园51单片机学习网7`Mvr"N q@9OP#}

(5)还应该添加一些版本控制和校验功能,进行版本控制,只有在AT89C52与待加载的程序具有相同的版本时才能进行程序加载。电子园51单片机学习网,kbO)a8CI!|]L I6v


Y2Ln1[4l{O0(6)因为加载的程序起始地址从8000H开始,又有2字节的长度指示,所以在加载程序之前增加“ORG   8002H”伪指令。电子园51单片机学习网 Y.Su&kr(I)r%~

电子园51单片机学习网4P [5Zf;h ^E7WFh8w@

6 结束语

icKQ"[ f@`j0

|NZR"Jc+xc m4t0以单片机为基础的需求越来越多,也就带来了更多的维护问题。通过上层应用程序维护通常比直接进行单片机底层程序的维护要方便得多!本文基于实现单片机系统在线维护的思想,介绍了一种通过PC机串行接口维护单片机系统的方法,从而为版本管理、程序的动态维护以及程序存储器的扩展都提供了十分便利的手段。

~$V|ABd(v0

X K)Q7?+k%MV'it$Y{m d0参考资料

$qL8TVT\^0

c;`.X:A n9t#s7s ^)zp0[1]   张友德,赵志英,涂时亮.单片微型机原理、应用与实验.上海:复旦大学出版社,2000电子园51单片机学习网N)~3QpCq9|3U TP yQ

电子园51单片机学习网p/h#Tu+w7D2\p

[2]   李朝青.PC机及单片机数据通信技术,北京:北京航空航天大学出版社,2001

t*BFy-KX0 电子园51单片机学习网4m#~h6M.Q*Dj

[3]   余永权.ATMEL89系列单片机应用技术,北京:北京航空航天大学出版社,2002

mv1})dHy0
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /3 下一条