用SD卡方式进行嵌入式设备操作系统的自动升级的实现

发布者:fuehrd努力的最新更新时间:2018-02-12 来源: eefocus关键字:SD卡方式  设备操作系统  自动升级 手机看文章 扫描二维码
随时随地手机看文章

    本文提出了一种扩展Uboot实现嵌入式设备操作系统维护与升级的方法。该方法将待升级的内核和文件系统映像放入SD卡中,当系统重启时,扩展后的Uboot会自动检测并读取SD卡中的映像文件,再烧写到嵌入式设备实现自动升级。该方法较传统的通过JTAG口、串口或者网口连接到主机,在主机上通过手动输入控制命令完成内核或者文件系统的升级方式更为便捷高效。

    随着现代工业社会逐步向智能化社会的过度,嵌入式在现代经济生活中扮演着至关重要的角色。32位的高性能、低成本、低功耗的嵌入式RISC(Reduced InstructionSet Computer)微处理器——ARM(Advanced RISC Machines)已经成为应用最广泛的嵌入式微处理器。
    目前,基于ARM的嵌入式系统在各个领域都有着广泛的应用,嵌入式系统的维护与升级也变的日益重要。由于新技术的不断涌现和对系统功能、性能等要求的不断提高,开发者必须能够针对系统进行升级和维护,以延长系统的使用周期,改善系统性能,增强系统适应性。
    传统的嵌入式系统升级,首先通过JTAG接口将Bootloader烧写到目标板的Flash中,然后在Bootloader中,将内核映像文件和文件系统映像文件通过串口或者网络下载并烧写到Flash。若需对内核或文件系统升级,则要按照上述方法重新烧写新的映像文件,直接覆盖原来的映像文件。这类方法,一方面必须将嵌入式设备和主机通过串口线或者网线相连接;另一方面需要人工手动输入控制命令,而且通过串口或网络下载映像文件速度非常慢。
    本文针对嵌入式Linux操作系统提出了一种新的升级机制,即通过将映像文件拷贝到SD卡中,由扩展后的Uboot实现系统自动升级,这个方法可以有效克服传统升级方法的局限,简化系统升级步骤,提高升级速度。

1 工作原理
    
一个嵌入式Linux系统从软件的角度看通常可以分为4个层次:Bootloader、Linux内核、文件系统和用户应用程序。这4个层次中,Boot loader一般是按照嵌入式系统的硬件配置定制的,是嵌入式系统加电以后运行的第一段软件代码。要对Bootloader升级只能通过人工手动完成,不过一般嵌入式系统在硬件平台没有变化的情况下是不需要对Bootloader进行升级的。用户应用程序只是运行在Linux操作系统上的一个程序,其升级方法简单,一般可以通过网络直接进行升级。Linux内核和文件系统的升级不像Bootloader那样基本不需要升级,也不像应用程序那样很容易完成升级。目前,对于Linux内核和文件系统的升级一般都是在Bootloader中实现的。
    通过对Uboot的功能进行扩充,加入了系统升级的功能。例如,用户需要对嵌入式设备上的Linux内核或文件系统进行升级,只需要将新的Linux内核或文件系统映像,命名为指定的名称拷贝到SD卡中。如果此时系统处于非运行状态,只需要重新启动嵌入式设备即可进行升级
过程;如果系统处于运行状态,Linux系统会自动检测SD卡是否存在相应的升级文件,存在则自动reboot,这样也完成了系统的升级。
    不论系统是否处于运行状态,真正的系统升级过程都是在Uboot中完成的。设备重启时,首先运行Uboot,在这过程中Uboot完成系统初始化之后,在引导内核之前先检查SD卡中是否有Linux内核或文件系统映像文件。若有,则读取映像文件到SDRAM当中,然后通过Uboot中的Flas h命令将内核或者文件系统映像烧写到相应的分区当中来完成升级;若无,则直接启动系统,具体流程如图1所示。


  2 关键技术

  2.1 Uboot工作原理

  Uboot是一个由德国DENX发起的,遵循GPL条款的开源项目,支持ARM、X86、MIPS、PowerPC等处理器,可启动Linux、VxWorks、TREMS等嵌入式操作系统,其提供了丰富的配置、管理以及运行命令。

  Uboot与大多数Bootloader一样都包含两种操作模式:

 

  ①启动加载(Bootloading)模式:即Uboot从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程都是自动完成的。

  ②下载(Downloading)模式:在这种模式下,目标机的Uboot将通过串口或网络等通信方式将内核或文件系统印象下载到RAM当中,然后再写入相应的存储设备中。这种工作模式通常在系统初次安装和更新时使用。

  Uboot的实现依赖于CPU的体系结构,它分为stage1和stage2两大部分。stage1存放用汇编语言实现的依赖于CPU体系结构的代码,比如设备初始化代码等;stage2则通常用具有更好的可读性和可移植性的C语言来实现。

  Uboot Stage1的主要功能有:

  ①硬件设备初始化;

  ②为Uboot重定位至RAM中,准备RAM空间;

  ③重定位Uboot代码到RAM中;

  ④设置堆栈,将BSS段清零;

  ⑤跳转到第二阶段的C程序入口点。

  Uboot Stage2的主要功能有:

  ①初始化硬件设备;

  ②将内核和文件系统映像从Flash读到RAM中;

  ③设定内核启动参数和调用内核。

  通过上面这两个阶段,Uboot就完成了引导内核启动的任务。

  2.2 Uboot扩展升级功能

  Uboot本身并不带有系统升级功能,本文在Uboot现有的功能上做扩展,使其完成系统升级的功能,将新的内核或者文件系统映像烧写到Flash的相应分区中。本文的实验对象是Samsung公司的S3C2440微处理器,该设备上有64 MB的SDARM和256 MB的NAND Flash,NAND Flash的起始地址映射到0x00000000,SDRAM的起始地址映射到0x30000000。设备上的Uboot将256 MBNAND Flash分为Bootloader、Bootloader参数、ker nel和rootfs四个区。其中,Bootloader分区是用于存放Uboot映像,它的起始地址为NAND Flash的起始地址0x00000000;Bootloader参数区是用于存放Uboot的参数;kernel区用于存放Linux内核;rootfs区用于存放文件系统,在我们的设备上使用的文件系统是Yaffs2。这4个分区的起始地址和大小如表1所列。

  升级功能的扩展主要在Uboot的第二阶段完成,在Uboot完成外围硬件设备初始化之后,检测是否有SD卡插入,如果有,再检测SD卡中是否有相应的内核或者文件系统映像。如果有相应的映像文件,就进行升级工作,升级完成后再启动新的系统。系统升级核心工作可以分为两步,第一步是将相应的映像文件读取到SDRAM当中;第二步则将SDRAM中的映像写入到相应Flash分区当中,详细流程如图2所示。

 

  2.3 具体实现

  通过上面的分析可以看出,扩展一个支持SD自动升级功能的Uboot需要完成如下步骤。

  (1)判断是否存在SD卡

  判断SD卡是否存在,通过使用Uboot当中提供的find_mmc_devICe函数,这里只要判断该函数的返回值即可知道SD卡是否存在,实现代码如下:

    (2)判断SD卡中是否有内核映像文件
    如果存在,则将其烧写到Flash相应的分区当中。实现这个功能需要使用到Uboot中的run_command函数,由于kernel的映像文件一般不会超过5 MB,所以在烧写kernel的时候不需要检查映像文件的大小。检查内核映像文件是否存在也是通过执行命令的方式,如果存在,那么Env环境变量fileexist的值就是YES,并且此时的内核映像已经存在于SDRAM当中,可以直接通过命令烧写到Flash相应的分区当中。具体的代码如下:
    
    (3)判断SD卡中是否有文件系统映像文件
    如果存在,则写入到相应的Flash分区当中。本实验设备上使用的文件系统是Yaffs2,通过Uboot命令烧写Yaffs2文件系统的时候,必须要知道它的实际大小。由于升级很可能导致文件系统大小的变化,所以这里必须将读取到SDRAM当中的文件大小记录下来,这个工作在Uboot中已经完成,我们只需要通过getenv(filesize)就可以获得载入SDRAM当中的文件大小,其他的步骤和烧写内核映像是一样的。具体代码如下:
    
    经过上面3个步骤修改的Uboot程序可支持SD卡自动升级的功能,需要注意这段代码应该放在Uboot自动加载系统之前,推荐将这些代码放在main_loop函数中。

      结语

    本文通过定制扩展Uboot实现了用SD卡方式进行嵌入式设备操作系统的自动升级,这种方式不但克服了传统升级方式的局限性,而且具有一定商业价值。目前,该方法经过调试,系统运行正常。显然,要通过SD卡实现系统升级,需要嵌入式设备具有SD卡接口,因此,它并不适合所有的嵌入式系统,但是这种实现机制可供借鉴。

关键字:SD卡方式  设备操作系统  自动升级 引用地址:用SD卡方式进行嵌入式设备操作系统的自动升级的实现

上一篇:基于LPC2210和μC/OS—II的触摸屏触摸点数据采集系统
下一篇:基于arm920T嵌入式Linux的实验平台环境的构建

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

特斯拉自动驾驶仪获升级、3D技术助力更好行驶
特斯拉旗下的车型,不仅仅是电动汽车,更是非常优秀的半自动驾驶汽车。特斯拉研发的Autopilot非常优秀,可以说是行业顶尖水平之一,并且特斯拉也在不断地对它进行维护升级,持续为消费者提供最好的驾驶体验。 而最近一位黑客发现了特斯拉的小秘密,特斯拉正在为自动驾驶仪进行升级,用3D技术帮助消驾驶者得到更好的体验,这似乎意味着特斯拉的自动驾驶水平能够进一步提升,在城市道路中能够使用的自动驾驶功能将会来临。 虽然这不是首次关于识别信号灯的消息,但是这次消息泄露表明,特斯拉在这一方面有了进一步提升,能够为消费者带来更好的使用体验,但是这项技术目前还无法实装,因为在未经过详细的测试以及几万里的实际测试之前,特斯拉并不会贸然的选择
[汽车电子]
特斯拉<font color='red'>自动</font>驾驶仪获<font color='red'>升级</font>、3D技术助力更好行驶
SD卡的管脚排列和总线读写方式
SD卡的引脚定义: SD卡引脚功能详述: 引脚 编号 SD模式 SPI模式 名称 类型 描述 名称 类型 描述 1 CD/DAT3 IO或PP 卡检测/ 数据线3 #CS I 片选 2 CMD PP 命令/ 回应 DI I 数据输入 3 VSS1 S 电源地 VSS S 电源地 4 VDD S 电源 VDD S 电源 5 CLK I 时钟 SCLK I 时钟
[单片机]
<font color='red'>SD卡</font>的管脚排列和总线读写<font color='red'>方式</font>
单车智能升级遇阻,5G/5.5G车路协同是自动驾驶的解药吗?
每逢节假日旅游高峰期,交通拥堵都是一个迈不过去的话题。从城市热门景点到郊野自然景区,从城市道路到高速公路,“人从众”背后往往伴随着“车从众”。每当此时,人们不免感叹:汽车能不能更聪明一点?道路能不能更智慧一点?让难得的假日出行更顺畅,更舒心? 实际上,从单一汽车的智能网联、自动驾驶到整个城市的智慧出行、智慧交通,汽车产业和交通行业一直在努力解决这些问题,提升出行体验。当前,“新四化”趋势下智能网联汽车应用发展迅速,但用户最关心、最具智能辨识度的自动驾驶却长期停留在L2级别,很难再跨进一步。 当单车智能的局限性日益凸显,V2X车路协同的呼声日渐高涨。特别是随着5G成熟完备并向5.5G持续演进,业界寄望于5G/5.5G网络提供
[汽车电子]
单车智能<font color='red'>升级</font>遇阻,5G/5.5G车路协同是<font color='red'>自动</font>驾驶的解药吗?
C8051FXXX单片机FLASH程序的自动升级
作者Email: wolfman6353@sina.com 引言: C8051FXXX系列高速SOC单片机是由美国Cygnal公司开发的完全集成的混合信号系统级芯片,具有与8051兼容的微处理器内核,内部集成FLASH程序存储器,具有在系统重新编程能力,以C8051F020为例,内部集成64K的FLASH程序存储器。在系统控制软件的开发调试阶段,可用集成开发环境来下载及测试系统,但当将C8051F020目标系统集成到产品后,则由于操作系统及软硬件接口不一样等等原因,不能在最终产品中用集成开发环境来下载FLASH程序,故产品到了用户处之后,如要再进行FLASH程序的更新,则必须更换相应的集成电路印刷板,造成很多麻烦及不可靠因素。
[嵌入式]
特斯拉正式推送V10车机系统 多项升级 自动驾驶可识别双实线
近日,特斯拉正式向用户推送了V10车机系统。这也是特斯拉自去年推送V9系统一年时间后最大的一次系统升级。主要功能有:影院模式、卡拉OK、茶杯头游戏、哨兵模式功能升级、地图功能升级、车辆视图功能升级等。此前,马斯克曾表示,特斯拉将在超级充电站安装免费Wi-Fi,以便车主在充电时可以使用该功能。 升级后的系统将允许特斯拉汽车在停车并接入WiFi后,可以使用流媒体服务。目前,在特斯拉车机系统内共有三个流媒体服务选项,分别是Netflix、YouTube以及Tesla Tutorials。 CARAOKE(卡拉OK) 该功能允许用户在车内唱卡拉OK,并自主选择是否播放人声轨道。当驻车时,车辆显示屏上还会显示歌词。当车辆行驶时,虽然歌
[汽车电子]
特斯拉正式推送V10车机系统 多项<font color='red'>升级</font> <font color='red'>自动</font>驾驶可识别双实线
现代摩比斯升级一键式自动泊车技术 车辆自行学习泊车过程
当地时间9月19日,现代摩比斯(Hyundai Mobis)宣布其于2021年开始研发的下一代泊车控制系统(MPS: Mobis Parking System, 摩比斯泊车系统)迎来了升级版MPS 1.0P (Premium)。业内评估认为,在现有技术的基础上增加新型泊车控制技术以及核心要素技术可以进一步巩固现代摩比斯在高性能泊车控制领域的地位。 下一代泊车控制系统(图片来源:现代摩比斯) 该项技术的其中一个突出特点是“记忆泊车辅助”(MPA, Memory Parking Assist)。当驾驶员在路径学习模式下执行泊车操作,车辆会自己学习该过程,让驾驶员只需在停车位上按下触控键就可完成自动泊车。 该项泊车技术
[汽车电子]
现代摩比斯<font color='red'>升级</font>一键式<font color='red'>自动</font>泊车技术 车辆自行学习泊车过程
借助罗克韦尔自动化管理型交换机升级工厂网络应对未来
借助罗克韦尔自动化全新管理型交换机升级工厂网络以便应对未来需求 (2021 年 3 月 22 日)各家公司可以利用全新的高性能全千兆 Allen-Bradley Stratix 5800 管理型工业以太网交换机升级生产工厂网络,以便应对更为苛刻的数据密集型联网需求。该系列交换机支持第 2 层接入交换和第 3 层路由,可用于多层架构。它具有强大的安全功能且已获得 ISA/IEC 62443-4-2 认证,有助于增强网络安全性。 Stratix 5800 交换机既有固定式设计又有模块化设计,用户可根据应用需求进行灵活配置。它配备电口、光口和以太网供电 (PoE) 端口组合,可支持多种架构。 该系列交换机可满足运营 (O
[网络通信]
借助罗克韦尔<font color='red'>自动</font>化管理型交换机<font color='red'>升级</font>工厂网络应对未来
仙工智能帮助汽车零配件加工车间物流自动升级
汽车零配件行业的转型需求 我国汽车零配件制造行业正在飞速发展。汽车零配件制造是汽车工业的重要组成部分,属于劳动密集型产业。传统的生产过程中需要人工搬运物料,但工厂车间通道有限,造成车间工人流动性大、劳动力不足、效率低、存在安全隐患等问题。 客户概况 该客户主要从事汽车防抱死制动系统、驾驶辅助系统的电控单元、传感器等电子产品及零部件的研发与制造。公司业务需求不断上升,用人需求加大。但公司的用人成本居高不下、效率低且与MES系统协同工作不紧密,车间急需提升自动化、智能化水平。 仙工智能一站式解决方案 根据客户现场情况,仙工智能配合集成商客户通过汽车制造行业一站式解决方案,帮助该企业成功完成了车间物流自动化改造,降低用人成本与
[机器人]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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