李淑娟 郑昌涛
摘 要:嵌入式软件在线升级是指不重启计算机而完成的软件升级工作,文中通过仪表的SD卡更新嵌入式软件,不需要拆装仪表,由于软件本身不包含可擦写的FLASH代码,不影响烧录过程,具备较高的可靠性和安全性。
关键词:SD卡;嵌入式;在线升级;计算机;软件;FLASH代码
中图分类号:TP274文献标识码:A文章编号:2095-1302(2019)03-0-02
0 引 言
随着电子通信技术、计算机技术的迅速发展,嵌入式产品被广泛应用到医疗、工控、办公、商用等各个领域。新技术的不断涌现及对系统性能规模的不断提高,要求开发者为应对各种需求及时对智能仪器仪表系统进行维护或升级,以延长系统的使用周期。嵌入式软件是智能仪器仪表的软件主体,随着智能仪表的多功能化,通过升级嵌入式软件改进或增加功能变得普遍,升级嵌入式软件就必须对存储嵌入式软件的FLASH进行擦除,再重新写入新的软件[1-3]。
1 嵌入式软件的特点及关键技术
嵌入式软件即嵌入在硬件中的操作系统和开发工具软件,嵌入式软件广泛应用于国防、工控、家用、医疗等领域,如我们常见的移动电话、数码相机、机顶盒等都是嵌入式软件对传统产品进行智能化改造的结果。嵌入式软件可分为嵌入式操作系统、嵌入式支撑软件及嵌入式应用软件,其具有独特的实用性、灵活的适用性等特点。嵌入式软件与嵌入式硬件资源关系密切,涉及相应的关键技术也较多,主要包括数字电路、微控制器及传感器灯硬件技术,还包含Canvas绘图功能、HTML5、移动定位等软件技术。总体而言,嵌入式软件可与智能终端、传感器、数据相结合,利用嵌入式软件处理视频、音频、文字等相关内容,为各领域的信息化服务提供支撑,实现其强大的數据共享等服务功能[4]。
2 嵌入式软件在线升级技术的系统构架
嵌入式软件在线升级是指不重启硬件设备而完成的软件升级。嵌入式软件在线升级是提高系统可靠性的有效途径,有利于维持嵌入式系统平台的稳定性。本文研究的重点是提供一种无需拆装仪表,不需要特殊工具和软件,通过仪表的SD卡更新嵌入式软件的在线嵌入式软件升级技术。所述的微处理器采用STM32F429BIT6芯片,RAM使用IS42S16160C-7TLI的SDRAM存储器,FLASH使用STM32F429BIT6集成的具有IAP功能的FLASH存储器,SD控制器使用STM32F429BIT6集成的SD控制器模块,SD卡接口为标准的SD卡连接器,SD卡为标准的SD卡[5-6]。嵌入式软件在线升级技术的系统框图如图1所示。
该系统包括集成CPU,FLASH,SD卡控制器的微处理器,SDRAM存储器,SD卡连接器及SD卡。微处理器与SDRAM通过并行总线连接,与SD卡通过SD卡连接器连接,并使用内部的SD控制器进行通信。
在更新嵌入式软件时,装置上启动更新,更新程序从SD卡中读取引导程序和新程序文件到SDRAM中,CPU跳转执行SDRAM中的引导程序,引导程序包含了擦除FLASH和写入FLASH的代码,通过这种方式,擦除FLASH和写入FLASH的代码不会出现在正常运行的嵌入式软件中,可避免因程序跑飞引起误擦除或误写入的情况,然后引导程序会将新程序文件写入到FLASH中,新程序文件写入完成后,仪表将运行更新后的嵌入式软件,嵌入式软件更新完成[7-8]。
3 SD卡的系统软件设计
3.1 SD卡的底层驱动程序设计
SD卡(Secure Digital Memory Card,SD)是一种基于半导体快闪记忆器的新记忆设备,由于在体积、重量、传输速率、稳定性、价格等方面有众多优势,因此被广泛地用于便携式装置上,如多媒体播放器、数码相机及AV器材等。SD卡技术是基于FLASH的存储卡,通过接口界面与驱动器相连,不需要外接电源来维持记忆信息;同时也是一体化的固态介质,功能稳定,不会造成机械性损坏[9]。
SD卡驱动程序的主要步骤为SD卡的初始化,向SD卡发送命令函数,获得响应的接口函数。SD卡的初始化是指用户应用程序以文件的形式访问和读取SD卡上的数据;SD卡本身只是一种数据介质,不包含文件系统,因此要想以文件系统的形式访问SD卡,必须先驱动SD卡,通过调用SD卡物理层的有关函数来实现驱动。驱动SD卡主要实现扇区的读写、获取SD卡的相关配置信息等。SD卡的读写操作都是基于命令的,通过向SD卡发送相应的命令,获得相应的接口函数控制SD卡。通过这些基本的底层驱动接口程序,配合相应的命令,可完成SD卡的驱动操作[10]。
3.2 SD卡的FAT32文件系统设计
为了对数据的写入进行有效地管理,能够在SD卡的PC端被访问,在SD卡完成底层驱动后,可按照FAT32文件系统格式对数据进行操作,进而在SD卡上实现读写文件等操作。FAT32文件系统是目前微软FAT类文件系统中的最高版本,采用了32位的文件分配表,可提高利用率,是现今Windows下常用的硬盘文件系统。FAT32文件系统设计包括以下步骤:程序的初始化、初始化内存、载入SD卡、打开文件夹、读写文件等操作[11]。
3.3 软件升级功能的实现
在线更新嵌入式软件的流程如图2所示。软件部分首先通过SPI协议对SD卡进行初始化,完成SD卡的底层驱动程序设计,再根据FAT32文件系统组织形式对SD卡中的数据进行读取或更新,将读取到的数据通过IAP方式写入FLASH中,新程序文件写入完成后,用程序实现跳转到指定代码段执行,仪表将运行更新后的嵌入式软件。
4 结 语
嵌入式系统是当前最有发展前景的IT应用领域之一,传统的嵌入式系统软件升级方式耗时长、成本高。本文的研究可妥善解决这一问题,同时还能解决一些问题:不需要拆装仪表,避免二次损坏;嵌入式软件本身不包含擦写FLASH的代码,保证FLASH不会被误擦写,具备较高的安全性;程序预先载入到RAM,即使升级过程中发生SD卡损坏、拔除等异常事件,也不会影响烧录过程,具备较高的可靠性。
参 考 文 献
[1]孔凡鹏,付友涛.基于NIOS Ⅱ的SD卡读写控制设计[J].电子设计工程,2013(13):115-118.
[2]肖敏,刘宇红.SD卡硬件加密在工业MP3中的实现[J].通信技术,2012(11):38-40.
[3]李敏,侯亚玲,刘颖. 基于SD卡的FAT32文件系统设计与实现[J].物联网技术,2017,7(7):102-104.
[4]刘赟.嵌入式软件在线升级系统的设计与实现[J].计算机测量与控制,2015,23(4):1425-1427.
[5]刘海,朱红.基于LPC2148的SD卡实现嵌入式系统升级设计[J]. 电子设计工程,2008,16(10):27-29.
[6]茅胜荣,肖家文,乔东海.用SD卡定制嵌入式Linux系统的最小系统[J]. 单片机与嵌入式系统应用,2017(10):28-32.
[7]田超. 基于ARM嵌入式系统上的SD卡驱动程序及文件系统的研究和开发[D].北京:北京邮电大学,2013.
[8]关峰,谢晓明.嵌入式设备软件更新系统设计与实现[J].电子测试,2013(10x):11-12.
[9]刘振东.基于ARM的嵌入式软硬件系统设计与实现[J].信息记录材料,2018(4):105-106.
[10]杨明东.嵌入式软件开发模式与软件架构探究[J].无线互联科技,2018(7):59-60.
[11]陈骏勰.嵌入式系统软件自动生成方法研究[J].软件导刊,2017(12):40-43.