远程自动抄表系统BootLoader的设计
2016-06-14张国勤国电南瑞三能电力仪表南京有限公司
张国勤国电南瑞三能电力仪表(南京)有限公司
远程自动抄表系统BootLoader的设计
张国勤
国电南瑞三能电力仪表(南京)有限公司
摘要:为了方便基于ARM体系的电力远程抄表系统中的功能应用程序的变化更新,特将程序划为二部分,一部分为引导程序(BootLoader);另一部分为功能应用程序。引导程序的主要功能是加载或升级功能应用程序。
关键词:电力远程抄表系统;BootLoader
现今移动设备得到了广泛的应用和发展,嵌入式系统受到了更多的关注和发展。随着计算机和微电子技术的发展,微控制芯片的功能也越来越强大,从而得到了越来越广泛的应用。嵌入式系统在功耗、成本、可靠性及硬件的体积大小等方面有着相当严格的要求。随着技术的发展,UCOS、linux、WINCE等操作系统也对嵌入式系统进行了成熟稳定支撑,这也提高了处理器的要求。当今,ARM体系的微处理器精简指令构架及其兼顾复杂指令的设计,使其做到了高性能低功耗,从而得到了广泛的应用。
本文主要研究的是采用ARM体系的电力远程抄表终端的BootLoader的设计与实现。BootLoader是电力远程抄表终端中执行功能应用程序前的一段程序,它的作用主要是升级或加载功能应用程序。
1 硬件设计
BootLoader的硬件平台是根据整个电力远程抄表的需求,选择合适的硬件环境,从而以最优的性价比实现系统的功能为原则而选择的。本系统的硬件平台是经过慎重考虑后选择了基于512kB程序空间的ARM微控制器搭建起来的。
2 软件分解
BootLoader程序分为上下两层,分别是硬件驱动与应用层。底层驱动包含串口通信、定时器、SPI、DATAFLASH、外扩RAM与LCD显示等。应用层主要含有升级信息检测、接收待升级的应用软件、软件跳转、程序加载,升级进度显示等五大功能。
2.1硬件驱动
硬件驱动主要实现对芯片资源的直接访问,硬件驱动接口提供了应用层访问硬件资源的一个接口。
2.2应用层
图1 工作流程图
上述提到应用部分主要实现升级信息检测、接收待升级的应用软件、软件跳转、程序加载,升级进度显示等五个功能。工作流程图如图1所示。
3 地址分配
BootLoader软件设计完成后,接着需要设计BootLoader的存放位置、功能应用程序的存放位置。严密准确的地址分配,才能避免相互冲突,系统失控。
ARM系统复位后,首先从物理地址0x00000000开始运行,该地址是MCU预先设定的。我们设计BootLoader程序在此处运行,当BootLoader运行到程序的末尾时,程序将跳转到预定的功能应用程序地址0x00008000继续运行。为BootLoader预留的程序空间是32KB,下图2为具体的地址分配图:
图2 地址分配图
4 设计应用
本公司的电力远程抄表终端在多个省份已广泛使用,本节介绍BootLoader在设计使用中遇到的瓶颈。
4.1程序空间大小限制
在设计使用中,由于我们选用的ARM芯片总的程序空间只有512kB,我们的主应用程序使用程序空间已达到470kB左右,这样留给BootLoader的空间实际不到40kB,为了给主应用程序空间留点余量,我们将BootLoader程序空间预留了32kB,在设计完基本的串口升级,存储、显示简单的页面等功能后,BootLoader程序空间已达到了30kB左右,如果要在BootLoader中实现GPRS升级以及图片显示等功能,程序空间已不足。
4.2接收缓存、速率限制
目前的BootLoader串口升级最大每帧可达10240字节,速率为57600bps,升级完一个功能应用程序(470kB)需47帧左右,如果增大每帧字节数,速率必须降低,否则容易出现丢字节;如果增加速率,每帧最大字节数必须减少,否则也会出现丢字节,经过反复的验证,每帧10240字节,速率57600bps是基于该芯片(最高主频可达72MHz)最优最快的程序升级配置。
5 结论
BootLoader是在嵌入式系统的发展过程中产生的。它的使命是升级或加载功能应用程序,为了给设计人员提供更多的便利,BootLoader的功能也得到了更多的扩充,比如增加了网络、丰富的图形显示等。
现今,BootLoader在电力远程抄表系统中已得到广泛的使用,为抄表集中器的运行维护带来了极大的方便。
参考文献:
[1]陈海军,申卫昌,史颖.嵌入式系统引导程序详探[J].微机发展,2006年01期.
[2]郭志,洪秀臣,曾奕.一个嵌入式系统的启动分析[J].微计算机信息,2005年第22期.
作者简介:张国勤(1976- ),男,工作于国电南瑞三能电力仪表(南京)有限公司工程师研究方向:嵌入式设计开发。