利用Flash实现单片机系统的在线维护
由于SST29EE010是以128字节的页方式写入,所以实现加载指令时,对SST29EE010的写操作以128字节为分组,不足128字节的分组填充至128字节再处理。在加载程序时,主机将加载程序.BIN文件以128字节为单位分组,并为每个分组加上升级指令代码和位置参数后通过串口发送给MCU,MCU接收数据后进行判断,若是加载指令则将接收的数据写入到参数指定的FLASH区,并返回操作代码;处理流程如图4所示。
图4 程序加载的处理流程图
5 注意事项
在系统设计与程序设计过程中需要注意以下几点:
(1)对FLASH芯片进行读/写操作时,将其当作扩展的外部存储器(用MOVX @DPTR,A指令);执行程序时,将其作为扩展的程序存储器。
(2)在写数据之前要打开SST29EE010的保护锁,写操作完成后要将SST29EE010的保护锁关闭,关锁之前要有一定的延时(通过需要10ms)。
(3)为了保证整个系统的可用行,需要对加载程序进行可用行检测机制,最简单的方法就是为所要加载的.BIN文件增加3字节的内容,在文件前面增加2字节的.BIN文件长度指示,并在加载程序之后增加1字节的程序校验值(如异或值),写入FLASH中的内容如图5所示。
图5加载程序的格式与内容
(4)为了进一步提高系统的安全性,需要进行相关的身份认证获取加载的权限如口令验证,否则不予开放加载功能。
(5)还应该添加一些版本控制和校验功能,进行版本控制,只有在AT89C52与待加载的程序具有相同的版本时才能进行程序加载。
(6)因为加载的程序起始地址从8000H开始,又有2字节的长度指示,所以在加载程序之前增加“ORG 8002H”伪指令。
6 结束语
以单片机为基础的需求越来越多,也就带来了更多的维护问题。通过上层应用程序维护通常比直接进行单片机底层程序的维护要方便得多!本文基于实现单片机系统在线维护的思想,介绍了一种通过PC机串行接口维护单片机系统的方法,从而为版本管理、程序的动态维护以及程序存储器的扩展都提供了十分便利的手段。
参考资料
[1] 张友德,赵志英,涂时亮.单片微型机原理、应用与实验.上海:复旦大学出版社,2000
[2] 李朝青.PC机及单片机数据通信技术,北京:北京航空航天大学出版社,2001
[3] 余永权.ATMEL89系列单片机应用技术,北京:北京航空航天大学出版社,2002
评论