基于 SD 卡的嵌入式软件在线升级系统研究
扫描二维码
随时随地手机看文章
引 言
随着电子通信技术、计算机技术的迅速发展,嵌入式产品被广泛应用到医疗、工控、办公、商用等各个领域。新技术的不断涌现及对系统性能规模的不断提高,要求开发者为应对各种需求及时对智能仪器仪表系统进行维护或升级,以延长系统的使用周期。嵌入式软件是智能仪器仪表的软件主体,随着智能仪表的多功能化,通过升级嵌入式软件改进或增加功能变得普遍,升级嵌入式软件就必须对存储嵌入式软件的 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 所示。
图 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 卡损坏、拔除等异常事件,也不会影响烧录过程,具备较高的可靠性。