为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

[doc] 基于LPC2148的SD卡实现嵌入式系统升级设计

2017-09-30 13页 doc 32KB 19阅读

用户头像

is_842972

暂无简介

举报
[doc] 基于LPC2148的SD卡实现嵌入式系统升级设计[doc] 基于LPC2148的SD卡实现嵌入式系统升级设计 基于LPC2148的SD卡实现嵌入式系统升级 设计 《国外电子元器件)2008年第10期嵌入式系统 基于LPC2148的SD卡实现嵌入式系统升级设计 刘海.朱红 (成都电子科技大学,四川成都610054) 摘要:在嵌入式系统中,为了实现设备终端的内核,文件系统升级和设备功能维护,一般是将目标板连接到主机,通过 JTAG口,串口或网口来实现升级.在此,提出一种更为方便的升级方法,即利用LPC2148用户,只需通过SPI方式对 发送的SD卡进行底层驱动,...
[doc] 基于LPC2148的SD卡实现嵌入式系统升级设计
[doc] 基于LPC2148的SD卡实现嵌入式系统升级 基于LPC2148的SD卡实现嵌入式系统升级 设计 《国外电子元器件)2008年第10期嵌入式系统 基于LPC2148的SD卡实现嵌入式系统升级设计 刘海.朱红 (成都电子科技大学,四川成都610054) 摘要:在嵌入式系统中,为了实现设备终端的内核,文件系统升级和设备功能维护,一般是将目标板连接到主机,通过 JTAG口,串口或网口来实现升级.在此,提出一种更为方便的升级,即利用LPC2148用户,只需通过SPI方式对 发送的SD卡进行底层驱动,运用SD卡文件系统,IAP编程接口方式和程序跳转,即可达到系统升级和维护的目的. 不仅与用户交互方便.且可节约大量的人力,财力和时间.该同样可用于ARM7和ARM9. 关键词:智能终端;系统程序/嵌入式系统;系统升级;系统编程 中图分类号:TP393文献标识码:A文章编号:1006—6977(2008)10—0027—03 RealizationofupgradingembeddedsystemusingSDcardbasedonLPC2148 LIUHai,ZHUHong (UniversityofElectronicandScienceTechnology,Chengdu610054,China) Abstract~Inembeddedsystem,theobjectiveboardandhostboardarealwaysconnectedtoupgradethroughtheJTAG,seri— alinterfaceornetwork,inordertoupgradethekernel,filesystemandthemaintenanceofequipmentfunctionofthetermi- na1.Amoreconvenientwayofupgradingisprovided,whichisbasedonLPC2148.AftertheusersinserttheSDcard,the systemcanbeupgradedandkeepmaintenancebythedriverforSDcard,theorganizationoffilesystem,lAPprogramming interfaceandjumpingcodeareimplementedthroughSPIinterface.Itisnotonlyconvenienttocommunicatewiththeusers, butalsosavealotofmanpower.financeandtime.1?hedesignalsocanbeusedinARM7andARM9. Keyword:intelligentterminal;systemprocedure/embeddedsystem;systemupgrade;systemprogramming 1引言 随着现代工业社会逐步向智能化社会的过渡,嵌入式在现 代经济生活中扮演着重要的角色.为了做出好的产品,必须与 用户形成互动.利用用户的反馈信息不断完善产品.另外,产 品在长时间使用中.会慢慢出现终端程序设计上的缺陷,这就 要求对终端系统设备的内核,文件进行系统升级或者对设备 进行功能维护.如果对几百个终端进行现场ISP升级,或通过 JTAG口,串口实现升级,不仅浪费大量的人力,财力,更重要 的是浪费了宝贵的时间,延误了开拓市场的机遇,降低了用户 对产品的信誉度【l】.为了解决这些问,提出了利用LPC2148 的SD卡实现嵌入式系统升级的. 2总体系统升级方案设计 厂家生产出产品后,用户购买回去使用.当设备出现了 系统漏洞或者用户不满足现有功能而提出更多需求时,就要 对系统升级或者维护系统功能.厂家只需将SD卡取回,把更 新后的程序放入SD卡中,然后发放给用户,用户只需把SD 卡插入终端设备.即可达到系统升级的目的.图1给出厂商 与用户之间的交流流程图.图2给出整个系统设计流程图. 按图1所示.厂商与用户交流过程如下: 收稿日期:2008一O7—12稿件编号:200807023 作者简介:刘海(1984一),男,四川成都人,硕士研究生. 厂家 烧XBootloader程序 将程序存XSD卡中 返回厂家 升级程序Y 出厂 用户 插入SO卡 =I= 继续使用 图1 ?读出升级 程序寄入f ,RAM中.} SD卡 ?驱动sD卡 厂商与用户交流流程图 升级程序区 用户数据 类Bootloader程序 0x00007000 (可任意指定) ?跳转到指定段 0x00O00000 图2系统设计流程图 (1)厂商将一个类似Bootloader的程序通过ISP方式.将 其下载到Flash中,如图2所示的位置. (2)将升级程序放入SD卡中,随产品一起出厂. (3)用户拿到SD卡后,将其插入SD卡槽,终端设备开始 工作. (4)用户使用一段时间后,若出现问题或者需要升级,维 护时,只需将SD卡返回厂家即可. (5)厂家将升级后的程序放入返回的SD卡中,再返回 给用户,或者厂家直接再发放SD卡给用户.而无需用户返回 SD卡 研究方向:嵌入式系统和信号与信息处理. - 27- 《国外电子元器件}2008年第l0期 (6)用户拿到SD后,将其直接插入终端设备卡后,则 可达到升级的目的. }fj厂前.通过ISP编程方式烧人一个类似于Bootloader 的程序.陔程序的实现大致分为3个步骤: (1)SPI模式下的SD卡底层驱动: (2)凄SD卡中的系统程序,并放人指定的Flash地址 段中: (3)跳转到指定的Flash地址段,执行升级后的系统. 在用户插入SD卡前.程序不断判断SD卡是否插入.用 户插入SD卡后,程序首先驱动SD卡,使其能正常T作,然后 读取SD卡中的升级程序,并将其放入指定的Flash地址段 中.最后,跳转到指定段,开始T作.厂家可根据需要,任意安 排升级程序放置的位置. 3系统硬件设计 核心处理器采用PHILIPS公司的LPC2148.它是一个支 持实时仿真和嵌入式跟踪的32位ARM7微控制器,带有32 KB和512KB嵌入的高速Flash存储器.128位宽度的存储 器接口和独特的加速结构,使32位代码能够在最大时钟速 率下运行,并带有SPI总线.选用该处理器主要考虑其内部 资源丰富.无需扩展存储器和SPI总线,且性能优异,抗干扰 能力强.价格低廉,具有极高的性价比. 该设计只是产品电路中的一部分.其硬件电路如图3所 示.LPC2148具有同步,全双1:串行接口(SPI),其最大数据位 频率为输入时钟频率的l/8,可以设置为主机或从机工作方 式SD卡是通过SPI总线协议驱动的,数据传输中,主机总是 向从机发送一个字节数据,而从机也总是向主机发送一个字 节数据.网3中左边为LPC2148,右边为SD卡插槽.SCK1为 串行时钟,用于LPC2148与SD卡之间的数据传输时钟信号; MISOI是一个单向信号,用于将数据从SD卡传输至 LPC2148:MOSII也是一个单向信号.用于将数据从LPC2148 传输至SD卡;SSEL1为选通信号,用于选中SD卡.3中的 引脚3和引脚6分别接地,引脚4接电源,引脚8用于检测SD 卡是否捕人.并可根据实际要求选定.SD卡与LPC2148之间 通过SPI协议和SD文件系统的组织形式,才能协调通讯. P0.20SSEL1 P0.19一一__[]—毒M0SI1 100oGND LPC21484 P0.17昌VCCSPIGND 100(~R l9 SCK1 MIS01P0.18—— Q—GND l3硬件电路图 4系统软件设计 系统软件部分首先通过SPI协议对SD卡初始化,然后根 据SD卡的FAT32文件系统组织形式读取SD卡中的数据,将 读取数据通过IAP方式将其写入Flash中,最后用一个跳转程 序跳转到该段,以达到升级的目的. - 28- 4.1SD卡的初始化 用户应用程序通常以文件的形式访问SD卡.并以文件 的形式存取数据:文件系统层是通过调用SD卡物理层的有 关函数来实现的口I,所以要想以文件系统的形式访问SD卡, 则必须先驱动SD.SD卡的读写操作都是基于命令的,通过向 SD卡发送相应的命令并读取相应的响应控制SD卡.在对 SD卡读写前,首先要进行初始化操作.这是确保SD卡能在 SPI模式下正常读写数据的前提I31.SD卡上电复位后,默认是 SD模式.为了使SD卡进入SPI模式,必须将CS置低(至少 延迟74个时钟)并通过SPI总线发送CMD,使SD卡复位, 同时激活,并进行内部初始化处理,使SD卡退空闲状态. SD卡初始化流程图如图4所示. I设置sPI时钟I „?? 选择卡(cs为低)复位卡(CMD~)l设置读写长度I ?? l延迟I激活卡(CMD.)? ?+l初始化全局变量 不选择卡(cs为高l读0CR寄存器 图4SD卡初始化流程图 SD卡中SPI模块的读操作包括读单块和读多块两种.该 系统仅实现了读单块功能.初始化的长度为5l2字节.函数的 实现分为4个步骤:?LPC2148向SD卡发送读单块命令 (CMD,),SD卡响应(R1格式);?等待SD卡发送读起始令 牌;?判断收到的令牌是否为0xFE;?从sD卡中读取数据[41. 4.2SD卡文件系统 SD卡完成底层驱动后,可按照FAT32文件系统格式对 SD卡上的数据进行操作.进而在SD卡上实现读写文件等操 作FAT32文件系统是微软FAT类文件系统中的最高版本, 是现今Windows下最常用的硬盘文件系统[51. 当读取SD卡中的文件时,首先要根据文件名查找该文件 的信息结构体.根据文件信息结构体中的起始簇号即可找到数 据区第1簇的内容,也可在FAT表中找到第2个簇号.根据第 2个簇号又能找到第2簇的内容和FAT表中的第3个簇号,直 至遇到文件结束标志.这样,就可根据FAT表中的簇号读取到 全部文件数据[41.以图5为例,说明读取SD卡文件的具体步骤: (1)先在目录项表中找到与文件名匹配的,如”Myfile”,从 “Myfile”所对应的目录项中可以读到该文件的首簇号0004; FAT区数据区 0000F8FF 目录区0001FFFF 00020O00 Myfi1e0004乙. 00030000 00040O05 00050006 00060008 O007O000 —_ OO08FFFF._ 00090000 Myfi1e(1) MyfiIe(2) Myf|le(3) Myfile(4) 图5SD卡文件读取步骤 基于LPC2l48的SD卡实现嵌入式系统升级设计 (2)根据首簇号0004访问FAT表,读出首簇号对应的 FAT表项内容0005,即第2个簇号.根据第2个簇号再访问 FAT表,读出其对应的FAT表内容,即第3个簇号0006… 等.依次做下去,直到最后一个表项内容为FFFF为止; (3)由第(2)步可知,”Myfile”这个文件占用了4个簇,这 4个簇号形成一个簇链0004H一0005H一0006H一0008H.根据 这些簇号所形成的簇链访问这4个簇号对应的4个数据存 储区域,文件”Myfile”就分成4个部分分别存放在这4个存 储区域中161. 4.3IAP功能的实现 LPC2148支持多种方式对Flash进行编程.用来写入用 户代码或数据.第一种方式是通过内置的串行JTAG接口进 行编程;第二种方式是通过UART0进行在系统编程(ISP); 第三种方式是通过在应用编程(IAP).IAP程序是thumb代 码,地址为0x7FFFFFF0.在使用IAP擦除,编程操作过程中. 片内Flash存储器不可访问.当用户运行应用程序时.用户 Flash区域的中断向量有效,所以在调用Flash擦除,写IAP 之前,用户应当禁止中断,确保用户中断向量在RAM中有效 和中断处理程序位于RAM中.IAP代码不使用或禁止中断. 可将SD卡读出的数据用C代码烧入指定的Flash段中171: {定义IAP程序的入口地址 #defineIAPj0CAT10N0x7FFFFFF1 {定义数据结构或指针,将IAP命令表和结果表传递给lAP 函数 unsignedlongcommand[5]; unsignedlongresuh[2]; }定义函数类型指针,函数包括两个参数,无返回值 Typedefvoid(IAP)(unsignedint【J,unsignedint?); IAPiap_ entry;//定义函数指针 设置函数指针 iap_entry=(1AP)IAPJOCATION; {调用IAP语句 iap_ entry(command,result); 4.4程序实现跳转到任意行代码段执行 现以下例来说明这段程序.如果程序跳转到绝对地址为 0xFFFF0执行.代码如下: typedefvoid(mn)();//定义一个无参数,无返回类型的 Fnnaddress=(NIB)0xFFFF0;//定义一个函数指针,指向跳 转的位置 address();//调用函数 在上述应用程序中,根本没有看到任何一个函数实体. 但是却执行了函数调用;实际上它起到了.”软重启”的作用, 跳转到CPU启动后第一条要执行的指令位置,即实现了程序 的跳转. 5结语 该设计方案以LPC2148为核心,通过SD卡驱动,FAT32文 件系统,IAP功能和程序跳转实现了系统升级的模块设计,并 用于实际开发中.该设计增强了系统维护,缩短了产品的开发 周期,节约了大量的人力,财力,增加了与用户的交流力度.与 传统设计相比,在开发时间,成本和灵活性等方面都占有优势 性.该设计已经调试成功,并作为一个功能模块用于某电子产 品上,在产品需要增加新功能和维护系统稳定方面起到了巨大 的作用.要注意的是,该程序设计是在Keil下编译通过的.生成 的HEX文件不能直接放人SD卡中.因为该文件与通过ISP烧 写Flash的文件不一样,要作一定的修改.另外,该方案不仅能 用于系统升级,也能用于为程序补丁和写入数据等.也可用于 ARM9.因此该设计方案具有广泛的应用前景. 参考文献: 【1】韦文祥,朱志杰,车琳娜,等.基于LPC2124的一个远程系 统软件升级方案[J].单片机与嵌入式系统应用,2006(5): 46-49. 【2】周立功.ARM嵌入式系统软件开发实例(二)【M】.北京:北京 航空航天大学出版社.2006. 【3】张凯,姜熙君,陈磊,等.MMC卡的文件系统及其实现方 法fJ].单片机与嵌入式系统应用,2006(5):3O一32. [4]张天益.基于ARM的车栽播放器的设计【D】.成都:电子科 技大学.2007. [5]张明亮,张宗杰.浅析FAT32文件系统fJ].计算机与数字工 程,20o4,33(1):56—59. [6J陈祖爵,蒋仕俊.智能遥控器SD卡文件系统的设计与实现 [J].计算机与设计,2007,28(19):4716—4718. 【7】周立功.ARM微控制器基础与实践[M].北京:北京航空航 函数指针类型天大学出版社.2003. , (上接第26页)模拟器件,易受外界干扰,所以必须添加滤波 和去耦电路等.设计涉及的I~Clinux不仅体积小,移植性稳 定,网络功能优秀,而且它的源代码公开,还支持在线调试, 不用每次都把应用程序添人内核,因此可大大提高系统的设 计进度,节省设计时间. 参考文献: 【1】周立功.ARM嵌入式基础教程【M】.北京:北京航空航天科 技大学出版社.2005. [2】田泽.嵌入式系统开发与运用【M].北京:北京航空航天大 学出版社.2005. 【3】刘森.嵌入式系统接口设计与Linux驱动程序开发[M].北 京:北京航空航天大学出版社,2006. [4】龚建伟,朱志松.基于数字运算的PSD调理电路设计[J].制 造业自动化,2005,27(11):35—36. [5】王雪文,张志勇.传感器原理及应用【M】.北京:北京航空航 天大学出版社.2004. - 29-
/
本文档为【[doc] 基于LPC2148的SD卡实现嵌入式系统升级设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索