一种嵌入式系统升级的设计和实现

发布者:SparklingStar22最新更新时间:2013-10-26 来源: eefocus关键字:嵌入式系统  软件升级  SD卡 手机看文章 扫描二维码
随时随地手机看文章
  1、引言

  随着信息化,智能化,网络化的发展,嵌入式系统技术也将获得广阔的发展空间。嵌入式技术全面展开,目前已成为通信和消费类产品的共同发展方向。在通信领域,数字技术正在全面取代模拟技术。在广播电视领域,美国已开始由模拟电视向数字电视转变,欧洲的DVB(数字电视广播)技术已在全球大多数国家推广。数字音频广播(DAB)也已进入商品化试播阶段。而软件、集成电路和新型元器件在产业发展中的作用日益重要。所有上述产品中,都离不开嵌入式系统技术。象前途无可计量的维纳斯计划生产机顶盒,核心技术就是采用32位以上芯片级的嵌入式技术。在个人领域中,嵌入式产品将主要是个人商用,作为个人移动的数据处理和通讯软件。本文提出了利用LPC2148的SD卡实现嵌入式系统升级的设计方案。

  2、总体系统升级方案设计

  厂家生产出产品后,用户购买回去使用,当设备出现了系统漏洞或者用户不满足现有功能而提出更多需求时,就要对系统升级或者维护系统功能。厂家只需将SD卡取回,把更新后的程序放入SD卡中,然后发放给用户,用户只需把SD卡插入终端设备。即可达到系统升级的目的。图1给出厂商与用户之间的交流流程图。图2给出整个系统设计流程图。

按图1所示,厂商与用户交流过程如下:

  (1)厂商将一个类似Boot loader的程序通过ISP方式,将其下载到Flash中,如图2所示的位置。

  (2)将升级程序放入SD卡中,随产品一起出厂。

  (3)用户拿到SD卡后,将其插入SD卡槽,终端设备开始工作。

  (4)用户使用一段时间后,若出现问题或者需要升级、维护时.只需将SD卡返回厂家即可。

  (5)厂家将升级后的程序放入返回的SD卡中,再返回给用户.或者厂家直接再发放SD卡给用户,而无需用户返回SD卡。

  (6)用户拿到SD卡后,将其直接插入终端设备卡后,则可达到升级的目的。

  出厂前,通过ISP编程方式烧入一个类似于Boot loader的程序。该程序的实现大致分为3个步骤:

  (1)SPI模式下的SD卡底层驱动;

  (2)读出SD卡中的系统程序,并放入指定的Flash地址段中:

  (3)跳转到指定的Flash地址段,执行升级后的系统。

  在用户插入SD卡前,程序不断判断SD卡是否插入。用户插入SD卡后,程序首先驱动SD卡,使其能正常工作,然后读取SD卡中的升级程序,并将其放入指定的Flash地址段中。最后,跳转到指定段,开始工作。厂家可根据需要,任意安排升级程序放置的位置。

  3、系统硬件设计

  核心处理器采用PHILIPS公司的LPC2148。它是一个支持实时仿真和嵌入式跟踪的32位ARM7微控制器。带有32KB和512 KB嵌入的高速Flash存储器。128位宽度的存储器接口和独特的加速结构,使32位代码能够在最大时钟速率下运行,并带有SPI总线。选用该处理器主要考虑其内部资源丰富,无需扩展存储器和SPI总线,且性能优异,抗干扰能力强,价格低廉,具有极高的性价比。

该设计只是产品电路中的一部分。其硬件电路如图3所示。LPC2148具有同步、全双工串行接口(SPI),其最大数据位频率为输入时钟频率的1/8,可以设置为主机或从机工作方式。SD卡是通过SPI总线协议驱动的,数据传输中。主机总是向从机发送一个字节数据,而从机也总是向主机发送一个字节数据。图3中左边为LPC2148,右边为SD卡插槽。SCKl为串行时钟,用于LPC2148与SD卡之间的数据传输时钟信号:MISOl是一个单向信号,用于将数据从SD卡传输至LPC2148;MOSll也是一个单向信号。用于将数据从LPC2148传输至SD卡;SSEL1为选通信号,用于选中SD卡。图3中的引脚3和引脚6分别接地,引脚4接电源,引脚8用于检测SD卡是否插入,并可根据实际要求选定。SD卡与LPC2148之间通过SPI协议和SD文件系统的组织形式.才能协调通讯。[page]

       4、系统软件设计

  系统软件部分首先通过SPI协议对SD卡初始化,然后根据SD卡的FAF32文件系统组织形式读取SD卡中的数据,将读取数据通过IAP方式将其写入Flash中,最后用一个跳转程序跳转到该段,以达到升级的目的。

  4.1 SD卡的初始化

  SD卡(Secure Digital Memory Card)中文翻译为安全数码卡,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机、个人数码助理(PDA)和多媒体播放器等。SD卡由日本松下、东芝及美国SanDisk公司于1999年8月共同开发研制。大小犹如一张邮票的SD记忆卡,重量只有2克,但却拥有高记忆容量、快速数据传输率、极大的移动灵活性以及很好的安全性。

  用户应用程序通常以文件的形式访问SD卡,并以文件的形式存取数据;文件系统层是通过调用SD卡物理层的有关函数来实现的,所以要想以文件系统的形式访问SD卡,则必须先驱动SD。SD卡的读写操作都是基于命令的,通过向SD卡发送相应的命令并读取相应的响应控制SD卡。在对SD卡读写前,首先要进行初始化操作。这是确保SD卡能在SPI模式下正常读写数据的前提。SD卡上电复位后,默认是SD模式。为了使SD卡进入SPI模式,必须将CS置低(至少延迟74个时钟)并通过SPI总线发送CMDn,使SD卡复位,同时激活,并进行内部初始化处理,使SD卡退出空闲状态。

  SD卡初始化流程图如图4所示。

SD卡中SPI模块的读操作包括读单块和读多块两种。该系统仅实现了读单块功能。初始化的长度为512字节。函数的实现分为4个步骤:①LPC2148向SD卡发送读单块命令(CMD17),SD卡响应(Rl格式);②等待SD卡发送读起始令牌;③判断收到的令牌是否为0xFE;④从SD卡中读取数据。

  4.2 SD卡文件系统

  SD卡完成底层驱动后,可按照FAT32文件系统格式对SD卡上的数据进行操作,进而在SD卡上实现读写文件等操作。FAT32文件系统是微软FAT类文件系统中的最高版本.是现今Windows下最常用的硬盘文件系统。

  当读取SD卡中的文件时,首先要根据文件名查找该文件的信息结构体。根据文件信息结构体中的起始簇号即可找到数据区第1簇的内容,也可在FAT表中找到第2个簇号。根据第2个簇号又能找到第2簇的内容和FAT表中的第3个簇号,直至遇到文件结束标志。这样,就可根据FAT表中的簇号读取到全部文件数据。以图5为例,说明读取SD卡文件的具体步骤:

  (1)先在目录项表中找到与文件名匹配的,如“Mvfile”,从“Myfile”所对应的目录项中可以读到该文件的首簇号0004:

  (2)根据首簇号0004访问FAT表,读出首簇号对应的FAT表项内容0005,即第2个簇号。根据第2个簇号再访问FAT表,读出其对应的FAT表内容,即第3个簇号0006…等。依次做下去,直到最后一个表项内容为FFFF为止;

  (3)由第(2)步可知,“Myfile"这个文件占用了4个簇,这4个簇号形成一个簇链000dH一0005H一0006H一0008H,根据这些簇号所形成的簇链访问这4个簇号对应的4个数据存储区域.文件“Myfile”就分成4个部分分别存放在这4个存储区域中161。

  4.3 IAP功能的实现

  IAP:In Application Programming 是指在应用编程,即在程序运行中编程,就是片子提供一系列的机制(硬件/软件上的)当片子在运行程序的时候可以提供一种改变flash数据的方法。通俗点讲,也就是说程序自己可以往程序存储器里写数据或修改程序。这种方式的典型应用就是用一小段代码来实现程序的下载,实际上单片机的ISP功能就是通过IAP技术来实现的,即片子在出厂前就已经有一段小的boot程序在里面,片子上电后,开始运行这段程序,当检测到上位机有下载要求时,便和上位机通信,然后下载数据到存储区。

  LPC2148支持多种方式对Flash进行编程,用来写入用户代码或数据。第一种方式是通过内置的串行JTAG接口进行编程:第二种方式是通过UART0进行在系统编程(ISP);第三种方式是通过在应用编程(IAP)。IAP程序是thumb代码,地址为0x7FFFFFF0。在使用IAP擦除、编程操作过程中,片内Flash存储器不可访问。当用户运行应用程序时,用户Flash区域的中断向量有效.所以在调用Flash擦除、写IAP之前,用户应当禁止中断,确保用户中断向量在RAM中有效和中断处理程序位于RAM中。IAP代码不使用或禁止中断。可将SD卡读出的数据用C代码烧入指定的Flash段中:

 

  4.4 程序实现跳转到任意行代码段执行

  现以下例来说明这段程序,如果程序跳转到绝对地址为0xFFFF0执行,代码如下:

  typedef void(*run)();//定义一个无参数,无返回类型的函数指针类型

  run address=(run)0xFFFFO;//定义一个函数指针,指向跳转的位置

  address()://调用函数

  在上述应用程序中,根本没有看到任何一个函数实体,但是却执行了函数调用;实际上它起到了"软重肩"的作用,跳转到CPU启动后第一条要执行的指令位置,即实现了程序的跳转。

  5、结语

  该设计方案以LPC2148为核心,通过SD卡驱动、FAT32文件系统、IAP功能和程序跳转实现了系统升级的模块设计,并用于实际开发中。该设计增强了系统维护,缩短了产品的开发周期。节约了大量的人力、财力,增加了与用户的交流力度。与传统设计相比。在开发时间、成本和灵活性等方面都占有优势性。该设计已经调试成功,并作为一个功能模块用于某电子产品上,在产品需要增加新功能和维护系统稳定方面起到了巨大的作用。要注意的是,该程序设计是在Keil下编译通过的,生成的HEX文件不能直接放入SD卡中,因为该文件与通过ISP烧写Flash的文件不一样,要作一定的修改。另外,该方案不仅能用于系统升级,也能用于为程序补丁和写入数据等,也可用于ARM9.因此该设计方案具有广泛的应用前景。

关键字:嵌入式系统  软件升级  SD卡 引用地址:一种嵌入式系统升级的设计和实现

上一篇:嵌入式以太网控制器设计
下一篇:嵌入式Linux下的LCD驱动程序设计与实现

推荐阅读最新更新时间:2024-03-16 13:29

Atmel新一代IC提供完整的嵌入式系统保护
  爱特梅尔公司 (Atmel® Corporation) 现已推出新一代 CryptoCompanion™ (AT88SC018) 即插即用嵌入式安全芯片。CryptoCompanion为设计人员提供容易负担的密码硬件安全选项,从而开发目前易于产生固件盗窃和/或产品伪造的系统。CryptoCompanion与爱特梅尔的 CryptoMemory®芯片一起使用时,可为认证消费项目或软件IP提供所需的秘密安全存储能力。CryptoCompanion (主机侧安全) 结合 CryptoMemory (客户端安全),可以实现嵌入式系统安全解决方案,大批量的价格可低于1美元。爱特梅尔现提供一款基于AVR® 的演示工具包 Aris+ (AT
[嵌入式]
嵌入式系统U盘实时启动技术
引 言   随着USB技术的发展,优盘在PC机系统上已得到广泛的应用,基本上取代了软盘,PC机系统可以实现从优盘启动。由于优盘性能稳定,体积小巧,访问速度快,因此它也非常适合作为嵌入式实时系统的存储设备。这为嵌入式实时系统的启动提供了一种崭新的思路,即从优盘启动。这种方法对嵌入式实时系统板上的程序存储空间要求不高,只要在Flash中存储嵌入式实时系统的Bootrom程序即可,将系统的映像文件放在优盘上,实现实时操作系统从优盘加载。 目前基于VxWorks设计的嵌入式实时系统应用非常广泛。嵌入式实时系统的启动方式多种多样,WindRiver公司提供的参考BSP(Board support Package)包中就提供了几种启
[工业控制]
<font color='red'>嵌入式系统</font>U盘实时启动技术
嵌入式系统设计必备ARM仿真器知识
本文提供了一些关于在线 ARM 仿真器的信息,以及给作为嵌入式系统设计师的你带来的好处。根据你的需要,你将在产品开发中对开发工具作出更恰当的选择。 一、嵌入式产品的开发周期 典型的嵌入式微控制器开发项目的第一个阶段是用C编译器从源程序生成目标代码,生成的目标代码将包括物理地址和一些调试信息。目前代码可以用软件模拟器、目标Monitor或在线仿真器来执行和调试。软件模拟器是在PC机或工作站平台上,以其CPU(如x86)及其系统资源来模拟目标CPU(如P51XA),并执行用户的目标代码;而目标Monitor则是将生成的目标代码下载到用户目标板的程序存储器中,并在下载的代码中增加一个Monitor任务软件,用来监视和控制用户目标代码
[单片机]
嵌入式系统的掉电保护方案设计
  在嵌入式系统设计过程中,系统的掉电保护越来越受到重视。本文介绍的方法是在用ARM7系列芯片S3C4510B和 Clinux构建的嵌入式平台上实现的。整个掉电保护实现的基本思路是:产生掉电信号,捕捉掉电信号和处理掉电信号。重点介绍这个过程的具体实现。   系统防掉电设计的目的是:采用一种机制,使得系统在意外失去供电的情况下,可以保证系统运行状态的确定性以及记录数据的完整性;当系统供电恢复后,现场数据可以及时恢复,避免应用系统产生混乱。我们知道,在嵌入式系统设计与开发中越来越多地应用嵌入式操作系统。由于操作系统的引入,数据的读写往往是通过文件的方式完成,而不是直接对存储单元地址操作。用文件读写方式操作数据,在程序的运行过程中往往将数
[单片机]
<font color='red'>嵌入式系统</font>的掉电保护方案设计
ARM针对低风险嵌入式系统软件开发推出RealView开发工具套件3.1
新版本有助于基于ARM全线处理器的开发者极大改进性能和易用性   中国上海,2007年4月2日 ——日前在美国加利福尼亚州圣何塞硅谷举行的嵌入式系统大会上,ARM公司(伦敦证交所:ARM;纳斯达克:ARMHY)推出RealView开发工具套件3.1,再次彰显为基于ARM全线处理器产品的嵌入式系统软件开发提供业界一流集成工具的承诺。      RealView开发工具套件3.1可改进性能以及对ARM处理器的支持,尤其值得注意的是,它能够更好地优化整个Cortex处理器系列,包括最新推出的首个专为FPGA的部署而开发的Cortex-M1处理器。      RealView开发工具套件3.1是首个支持最新Cortex-M1处理器的工
[新品]
一种便携式电视机软件升级系统的设计
前 言 随着电视机数字化程度的提高和功能的增强,电视机软件升级越来越重要,各种各样的电视机故障需要软件升级来解决。而目前电视机软件升级的方法主要通过专门的软件烧录仪将软件烧录入存储器,然后将存储器焊接到电视机主板上;或者将电脑与电视机相连,通过电脑将升级程序写入电视机存储器。这两种电视机软件升级的方法存在操作复杂、时间长、成本高,且需要专业性知识等缺陷。 系统原理 便携式电视机软件升级系统原理如图1。电视机软件升级系统是以单片机W79E632为基础的可以独立运行的系统。首先升级系统作为从机接收电脑系统发送过来的升级程序数据并进行存储,然后升级系统作为主机将存储的升级程序数据发送给电视机系统,电视机系统将升级程序
[单片机]
一种便携式电视机<font color='red'>软件</font><font color='red'>升级</font>系统的设计
浅谈ARM嵌入式系统如何学习与入门
关于ARM嵌入式系统的开发,一直是it行业人员关注的热点,也是属于一个高门槛的行业,目前也有很多的开发者正在从事着这方面的学习。而那些对于那些想去学习开发者还有那些初学者往往会碰到难题,到底从哪里学起才好?学了半天还是不懂?其实往往在一门技术的学习上,特别是在基础知识上不能胡乱的学习,只有掌握了技术的核心,运用起来才会得心应手。那么ARM嵌入式系统该如何掌握,怎么去快速入门呢? 浅谈ARM嵌入式如何学习与入门 嵌入式简单来讲,就是软硬结合的东西,嵌入式开发又分为两类,这两类各有特点,当然需要的资质也完全不同。一类是学电子工程、通信工程等偏硬件专业出身的人,主要是搞硬件设计,有时要开发一些与硬件关系最密切的最底层软件,如Bo
[单片机]
基于CPCI的嵌入式系统电源设计
1 引言   嵌入式系统广泛应用于控制和通信领域。而这些系统运行速度高,系统较复杂,常常集成超大规模FPGA器件、DSP器件、DDR存储器以及各种接口电路。这对电源的输出电压值、功耗、电压精度、上电顺序以及电源完整性提出更高的要求。这里介绍一种基于CPCI的嵌入式单板计算机电源的设计方案。该设计主要应用于航空设备和军用车载设备。   2 系统电源需求分析与器件造型   图1为系统整体结构框图。该系统由CPU和与其相连的DDR储存器、PCI接口、时钟、电源、EBC总线以及外部接口电路组成。CPU采用AMCC公司的PowerPC 440EPx。   2.1 系统电源需求   该系统电源较复杂,有多达8种不同的电
[电源管理]
基于CPCI的<font color='red'>嵌入式系统</font>电源设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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