嵌入式系统bootrom自动备份及切换技术的应用

发布者:翅膀小鹰最新更新时间:2018-02-12 来源: 21ic关键字:嵌入式系统  bootrom  自动备份  切换技术 手机看文章 扫描二维码
随时随地手机看文章

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


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

    分析这种问题发生的原因,当采用嵌入式Linux、Windows CE等较为复杂的操作系统时,一般设计一个独立的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,同时CPU LOCal bus的其他信号分别连接到FlashA、FlashB以及CPLD上,CPLD输出一个复位信号给CPU,复位电路和时钟电路给CPLD和CPU提供复位和时钟信号。

a.jpg


    要实现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所示。


b.jpg


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

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


关键字:嵌入式系统  bootrom  自动备份  切换技术 引用地址:嵌入式系统bootrom自动备份及切换技术的应用

上一篇:基于单片机的嵌入式网络接入设计方案
下一篇:单片机嵌入式Internet接入技术

推荐阅读最新更新时间:2024-03-16 15:54

使用LabVIEW加速基于ARM的嵌入式系统开发
  大量 嵌入式系统 ——从医疗设备到消费电子——都需要为那些昂贵的、低功耗的微控制器设计软件。当低功耗是主要设计目标时, ARM 是一种主流的硬件设计的微控制器结构。事实上自1991年来,已经有100多亿 ARM 处理器应用到 嵌入式系统 中。开发基于 ARM 的 嵌入式系统 时,若采用用于 ARM 微控制器的NI Labview EmbeddedModule,可以帮助提高效率,而且使用 LabVIEW 中所提供的高级抽象功能还可以保证软件的高质量。    放大图片   图1. LabVIEW 采用高级的抽象功能,简化了低功耗 ARM 硬件的算法设计。   利用兼容性和更多的通信选项   用于 ARM 微控制器的 L
[测试测量]
使用LabVIEW加速基于ARM的<font color='red'>嵌入式系统</font>开发
基于嵌入式系统的隔离硬件设计
1 引言 Internet的迅猛发展使信息共享的程度进一步提高,因而信息安全的问题也日益突出,这时唯一的解决方法只能是主动解决信息安全和网络安全问题。目前国内外采用最多的、最普遍的网络安全措施是使用防火墙类软件,但是防火墙类软件本身存在两大先天缺陷:其一是防火墙隔离的网络还是基于TCP/IP协议来进行信息交换的,而TCP/IP 协议存在漏洞,它无法防止协议本身的漏洞;其二是防火墙的运行离不开操作系统,操作系统和防火墙软件都存在漏洞,因而不能阻止由这些漏洞而引起的网络安全问题 。因此,开发相应的应用系统是必要的。本文在对已有的防火墙技术及物理隔离技术进行分析的基础上,提出了带缓冲区的双通道实时开关技术,通过该技术所设计出的网络隔离
[嵌入式]
嵌入式系统电源设计方案
本文探讨便携嵌入式系统 电源设计 的注意事项以及设计中应遵循的准则。这些原则对任何具有强大功能且必须以电池供电的便携嵌入式系统电源设计都是有帮助的。根据本文描述的构造模块,读者可以为特定设计选择合适的器件以及设计策略。 电源管理单元 http://www.elecfans.com/soft/70/2010/2010031671344.html 为电源电路规定具体的功能和架构模块并非微不足道,这些工作直接影响到电池供电系统的工作时间。电源系统架构会因嵌入式产品和应用领域的不同而各异。下图是典型便携嵌入式系统中的电源方案。 下面我们分别定义图中每个组成部分的要求。假设该产品由电池组或外接电源供电。电源路径控制器的功能是当有多
[电源管理]
<font color='red'>嵌入式系统</font>电源设计方案
嵌入式系统中小功率开关电源的设计
0 引言 随着计算机技术、半导体技术以及电子应用技术的发展,嵌入式系统以其体积小、可靠性高、功耗低、软硬件集成度高等特点广泛应用于工业控制、过程控制、仪器仪表、航天航空、汽车船舶、网络通信、军事装备、消费产品等众多领域。在这些系统中电源的结构和性能起着关键性的作用,特别是需要使用220V交流电供电的多路电源的系统,其电源设计的合理性和可靠性尤为重要。过去常用的变压器降压、整流滤波后稳压的线性电源,在嵌入式系统要求体积小,利用率高的情况下,显得不足。寻求体积小、效率高、成本低、可靠性好的开关电源成为一种迫切的需要。本文根据实际应用中的体会,以小功率单片开关电源集成电路FSD200为核心,设计并实现了一款适合嵌入式系统需求的小功
[工业控制]
<font color='red'>嵌入式系统</font>中小功率开关电源的设计
Linux嵌入式系统开发平台选型探讨
  1 嵌入式系统与Linux   按照电气工程师协会的一个定义:嵌入式系统是用来控制或监视机器、装置或工厂等的大规模系统的设备。具体说来,它是电脑软件和硬件的综合体;是以应用为中心,以计算机技术为基础,软硬件可裁减,从而能够适应实际应用中对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。一般来说,嵌入式系统不能使用通用型计算机,而且运行的是固化的软件,终端用户很难或者不可能改变固件。而Linux也早已成为IT界家喻户晓的一个名字。概括说来,将Linux应用于嵌入式系统的开发有如下一些优点:   ① Linux自身具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,并且可以跨越在嵌入式系统开发中仿真工具(I
[电源管理]
Linux<font color='red'>嵌入式系统</font>开发平台选型探讨
基于嵌入式系统的实时控制模块设计方案
  随着现代通信技术的发展,通信测试仪器不断推陈出新。各种新型设备对系统的实时响应能力的要求越来越高,一种通信测试仪器的实时响应性能,就成为系统设计能否成功的关键因素之一。笔者曾在多个通信测试仪器项目中,成功地应用ARM处理器、C51单片机等为主控芯片的嵌入式系统,实现了对仪器相关模块的实时控制功能。因此提出一种在某通信测试仪器中使用C51单片机来实现实时控制的设计方案。   1 硬件设计与实现   1.1 总体方案设计   在该通信测试仪器中,实时控制模块主要实现对射频接收频综、射频发生频综、滤波器组件、射频输入模块、射频输出模块等实时控制作用。对射频检波信号进行A/D转换以获取数据。与上位计算机进行通信等功能。   根
[单片机]
基于<font color='red'>嵌入式系统</font>的实时控制模块设计方案
人工智能热潮下物联网与嵌入式系统如何发展-主题讨论会
从谷歌的AlphaGo将人工智能推进大众视野起,在可预见的未来,人工智能会涉及到我们生活的各个方面,它们将会成为我们的朋友,成为我们的亲人,成为我们的伙伴。 人工智能的再次崛起并不是偶然的,主要得益于三大技术上的突破:算法、数据和算力,三者缺一不可,人工智能对处理能力和实时性有着极强的要求,边缘计算的兴起,这些与物联网和嵌入式系统密不可分。 身处这样一个时代,我们该如何看待这场即将到来的风暴呢?人工智能的应用日益普及,其中哪些细分市场会是物联网与嵌入式重点关注的方向呢?嵌入式研究和工程技术人员又该如何把握住人工智能所带来的重大机遇呢? 本次嵌入式系统联谊会主题讨论会将安排学术研讨会和企业家高峰论坛,邀请国内物联网和嵌入
[嵌入式]
嵌入式系统以太网卡控制器LAN91C96
摘要:以LAN91C96为例,介绍嵌入式以太网控制器基本结构;结合PXA250(XScale),分析嵌入式系统网络接口卡(NIC)软硬件设计。 关键词:嵌入式系统 NIC 网络接口卡 LAN91C96 引 言   当今社会已经进入数字信息技术和网络技术高速发展的后PC(Post-PC)时代,嵌入式系统已经广泛渗透到科学研究、工程设计、军事技术、各类产业和商业文化艺术、娱乐业以及人们的日常生活等方方面面;而网络技术的快速发展和互联网的广泛应用,使得嵌入式产品有了更广泛的前景。各种家电设备、PDA、仪器仪表、工业生产中数据的采集与控制等设备正在逐渐走向网络化,以共享互联网络中庞大的信息资源。嵌入式设备的网络化开发有着广阔的前景。
[应用]
热门资源推荐
热门放大器推荐
  •  pdf文件华中数控系统装调与实训
  •  pdf文件无线网络优化 (李蔷薇,刘芳编)
  •  pdf文件现代操作系统(原书第4版)
  •  pdf文件计算机操作系统固化嵌入式设计与实现
  • 系统发生错误

    系统发生错误

    您可以选择 [ 重试 ] [ 返回 ] 或者 [ 回到首页 ]

    [ 错误信息 ]

    页面错误!请稍后再试~

小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved