当前位置:首页 > 单片机 > 单片机
[导读] 随着物联网概念的兴起,嵌入式系统在社会各个领域的应用越来越广泛。由于产品应用的场合越来越复杂,对于嵌入式产品开发就提出了新的要求,其中最明显的表现就是嵌入式系统软件的维护变得日益重要。嵌

随着物联网概念的兴起,嵌入式系统在社会各个领域的应用越来越广泛。由于产品应用的场合越来越复杂,对于嵌入式产品开发就提出了新的要求,其中最明显的表现就是嵌入式系统软件的维护变得日益重要。嵌入式系统投入实际环境中运行后,一部分在软件开发过程中无法充分测试的错误便会暴露出来;在嵌入式系统的运行期内,用户也往往会对嵌入式软件提出新的功能要求和性能要求。因此,嵌入式软件的更新逐渐成为嵌入式系统实际应用的一个重要问题。在嵌入式系统安装数量较多,或安装位置不方便的情况下,采用人工更新方式会花费较大的人力和物力。这时候就需要实现软件的远程自动更新,通过在系统中设计一个有线或无线的通信接口,在异地采用远程通信的方式实现嵌入式软件的自动更新。


实现自动更新能有效地降低嵌入式软件的更新和维护成本,因此得到了广泛的应用。但是,在实际的应用过程中也发现了一些问题。由于更新过程中发生的一些异常操作(比如突然断电、更新数据传输错误等),会导致产品软件损坏,用户无法维修,必须发回产品生产厂家进行维修,这给产品使用造成了很大的不便。

分析这种问题发生的原因,当采用嵌入式Linux、WindowsCE等较为复杂的操作系统时,一般设计一个独立的bootrom程序,对系统进行初始化并引导嵌入式操作系统。而系统的更新仅仅考虑备份了应用层程序或是嵌入式操作系统,没有对bootrom进行备份,所以当升级boot rom出现异常后,系统将无法再次启动。同时,由于bootrom的加载必须通过烧片机或专用JTAG仿真器进行,而这些工具一般无法在现场使用,用户也不具备这种条件,因此必须返回厂家进行维修。本文针对这种问题,提出一种bootrom自动备份切换技术,当系统更新出错后,产品能自动切换从备份bootrom启动,启动后再恢复已写坏的主bootrom。

1 系统设计

1.1 设计思想

对于嵌入式系统,基于ARM、Power PC或MIPS架构,以及基于Linux、VxWorks等操作系统,其启动原理都是一样的。首先,系统上电后复位电路复位整个系统;在复位过程中,CPU读取外部配置(这个配置一般由CPU引脚通过上下拉电阻确定);复位结束后,CPU根据配置从相应的外部程序存储器的特定地址读取bootrom代码,大多数嵌入式系统一般采用的是NOR Flash,也有部分采用NAND Flash或CF卡等存储器;然后执行bootrom代码,初始化CPU各个部分,最后引导操作系统及应用软件启动。

对于一个确定的嵌入式系统,其CPU读取第一条指令的地址和片选是一定的。下面就以MPC5200B系统为例,说明实现bootrom自备份及自切换系统的实现方法。

MPC5200B支持的bootrom地址为0x00000000或是0xfff00000,由复位配置确定从哪一个地址读取,支持的bootrom空间为512 KB。要实现bootrom自动备份及自动切换有两种方案:

①采用2片NOR Flash,同时挂在MPC5200B的本地总线上,通过一个CPLD提供2个Flash的片选信号,由软件和CPLD根据boot启动状态确定把boot_cs输出给哪一片Flash。

②采用1片NOR Flash,划分两个区域,每个区域为512 KB,通过CPLD去切换地址实现。

本文采用方案一实现bootrom切换功能。

1.2 总体设计

如图1所示,CPU输出两个片选信号(boot_cs和CSD给CPLD,同时CPULOCal bus的其他信号分别连接到FlashA、FlashB以及CPLD上,CPLD输出一个复位信号给CPU,复位电路和时钟电路给CPLD和CPU提供复位和时钟信号。


要实现bootrom自动切换及备份,需要CPLD和软件共同进行处理。默认主Flash为FlashA,备份Flash为FlashB。具体步骤如下:
①启动时,CPU发出boot_cs信号,从Local bus的0x00000000地址开始读取软件,CPLD默认把boot_cs信号送给FlashA。如果CPU正常启动,等CPU启动完成后,软件向CPLD的bootrom启动寄存器中写入值A。
②CPLD延时5 s后读取bootrom启动寄存器,当发现这个寄存器值为A时,代表bootrom已经成功启动,CPLD锁定输出boot_cs给第一片Flash。同时,输出CS1给FlashB,软件检测FlashB中代码的完整性。如果完整,则不处理;如果发现FlashB中代码不完整,重新往FlashB中写入代码。

③如果FlashA中的代码已经损坏,CPU将无法启动。此时,CPLD等待5 s后检测到的bootrom启动寄存器值仍为初始值,CPLD认为FlashA已损坏,切换boot_cs信号输出到FlashB,然后发送一个复位信号给CPU,CPU重新开始启动过程。CPU从FlashB中启动代码,启动完成后,软件向CPLD的bootrom启动寄存器中写入值B。此时输出CS1给FlashA,软件检测FlashA中代码的完整性。如果完整,则不处理。如果发现FlashA中代码不完整,则更新FlashA中的代码,更新完毕后通知CPLD复位CPU,并输出boot_cs给FlashA,从FlashA重新启动。
④系统更新bootrom时,首先改写FlashA中的代码,并重新启动;然后验证FlashA中代码的完整性,如果FlashA中代码完整,则更新到FlashB中。

2 系统实现
本系统由软件和CPLD配合实现,其中CPLD根据软件反馈的状态来确定片选的分配以及系统的复位。软件则在启动后对cpld Bootrom_run寄存器进行置位,并对两片Flash的代码进行CRC校验。如果有错误,则修复相应的Flash代码,并记录相关错误信息。
CPLD工作流程如图2所示。



本系统采用了ALTEra公司的MAXII CPLD实现,编译通过后仅占用124个逻辑单元,很方便就可以把相关的代码添加到产品现有的CPLD中,实现bootrom自动备份和切换功能。

结语
本文提出了一种基于CPLD实现嵌入式软件bootrom自动备份及切换功能的方法。该方法在PowerPC处理器MPC5200、MIPS处理器RM7000A和ARM处理器ATM9200的平台上都得到了验证,均能保证系统的正常启动,并能完成bootrom的自动恢复,为产品软件更新升级提供了强有力的保证。本设计由于采用了两片Flash,因此增加了一定的设计难度和成本。但相对于可靠的bootrom更新机制、自动化和可靠性所带来的维护成本的降低,这个代价是值得的。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在FPGA和IC设计领域,经常会面临一个挑战:多个端口同时竞争一个端口的数据。在这种情况下,采用RR调度策略可能是一种解决方案。

关键字: FPGA 嵌入式系统 IC设计

“实现机器人操作系统——电机控制器ROS1驱动程序简介”一文中概述了新型ADI Trinamic™电机控制器(TMC)驱动程序,并讨论了将电机控制器集成到机器人操作系统(ROS)生态系统中的方法。TMC ROS1驱动程序...

关键字: 电机控制器 机器人 嵌入式系统

台湾新竹 – 2024年4月23日 – 著名的微控制器供货商新唐科技公司,与全软件开发生命周期提供跨平台解决方案的全球软件公司Qt Group宣布深化合作,扩展新唐科技人机界面(HMI)平台支持「Qt for MCUs」...

关键字: 微控制器 嵌入式系统 MCU

随着物联网、嵌入式系统以及微控制器技术的飞速发展,微控制器已成为众多智能设备和系统不可或缺的核心组件。而微控制器的正常工作,离不开烧录器的精准操作。C8051F021烧录器,作为一款高效、稳定、易用的微控制器烧录工具,在...

关键字: c8051f021烧录器 联网 嵌入式系统

为增进大家对嵌入式系统的认识,本文将对嵌入式系统、嵌入式系统的特点予以介绍。

关键字: 嵌入式 指数 嵌入式系统

2024年4月18日,国民技术第四代可信计算芯片NS350 v32/v33系列产品正式发布并开始量产供货。NS350 v32/v33是一款高安全、高性能、超值可信密码模块2.0 (TCM 2.0)安全芯片,适用于PC、服...

关键字: PC 服务器平台 嵌入式系统

2024年,嵌入式系统将走向何方?如何才能走在趋势的前沿?从工厂到家电,从医院里昂贵的医疗设备,到随处可见的可穿戴设备,我们身边的联网设备越来越多,生活更加绿色低碳,嵌入式系统功不可没。ST于3月19日成功举办STM32...

关键字: 嵌入式系统 可穿戴设备

在嵌入式系统开发、调试和测试过程中,J-Link作为一种高效的调试工具,为开发者提供了极大的便利。然而,要想充分发挥J-Link的功能,首先需要正确安装其驱动程序。本文将详细介绍J-Link驱动的安装过程,并深入解析其中...

关键字: jlink 嵌入式系统 嵌入式开发

随着科技的飞速发展,单片机和嵌入式系统在现代电子设备中的应用越来越广泛。它们不仅提高了设备的智能化水平,还推动了各行各业的创新与发展。在单片机和嵌入式系统的开发中,编程语言的选择至关重要。本文将深入探讨单片机和嵌入式系统...

关键字: 单片机 嵌入式系统 电子设备

Windows Embedded Compact 7(简称WinCE)是一种专为嵌入式系统设计的操作系统,具有体积小、效率高、可定制性强的特点。在WinCE中设置自动运行软件,通常是为了满足设备在启动后自动执行特定任务的...

关键字: 嵌入式系统 软件 操作系统
关闭
关闭