热搜关键词: 电路基础ADC数字信号处理封装库PLC

pdf

基于LPC2148的SD卡实现

  • 1星
  • 2021-11-25
  • 346.5KB
  • 需要1积分
  • 1次下载
标签: 嵌入式

嵌入式

单片机

单片机

基于LPC2148的SD卡实现

基于LPC2148的SD卡实现
嵌入式系统升级设计
刘海,朱红
成½电子科技大学 四川 成½ 610054
摘    要: 
在嵌入式系统中,为了实现设备终端的内核、文件系统升级和设备功½维护,一般是将目标板连接到主机,通过 JTAG 口、
串口或½口来实现升级。在此,提出一种更为方便的升级方法,即利用 LPC2148 用户,只需通过 SPI 方式对发送的 SD 卡
进行底层驱动,
运用 SD 卡文件系统、 编程接口方式和程序跳½,
IAP
即可达到系统升级和维护的目的。不仅与用户交互方便,
且可节约大量的人力、财力和时间。该方案同样可用于 ARM7 和 ARM9。
关键词: 
智½终端,系统程序 / 嵌入式系统,系统升级,系统编程
Realization of upgrading embedded system using
SD card based on LPC2148
LIU Hai,ZHU Hong
University of Electronic and Science Technology,Chengdu 610054,China
A½½½½½½½: 
In embedded system,the objective board and host board are always connected to upgrade through
the JTAG,serial interface or network,in order to upgrade the kernel,file system and the maintenance
of equipment function of the terminal.A more convenient way of upgrading is provided,which is based
on LPC2148.After the users insert the SD card,the system can be upgraded and keep maintenance by
the driver for SD card,the organization of file system,IAP programming interface and jumping code are
jmplemented through SPI interface.It is not only convenient to communicate with the users,but also save a
lot of manpower,finance and time.The design also can be used in ARM7 and ARM9.
K½½ ½½½½:
intelligent terminal, system procedure/embedded system, system upgrade, system programming
1 引言
随着现代工业社会逐步向智½化社会的过渡,嵌入式
在现代经济生活中扮演着重要的角色。
为了做出½的产品,
必须与用户½成互动,
利用用户的反馈信息不断完善产品。
另外,产品在长时间½用中,会慢慢出现终端程序设计上
的缺陷,这就要求对终端系统设备的内核、文件进行系统
升级或者对设备进行功½维护。如果对几百个终端进行现
场 ISP 升级,或通过 JTAG 口、串口实现升级,不仅浪费
大量的人力、财力,更重要的是浪费了宝贵的时间。延误
了开拓市场的机遇,降½了用户对产品的信誉度
[1½
。为了
解决这些问题,提出了利用 LPC2148 的 SD 卡实现嵌入式
系统升级的设计方案。
2 总½系统升级方案设计
厂家生产出产品后,用户购买回去½用,½设备出现
了系统漏洞或者用户不满足现有功½而提出更多需求时,
www.globalsca.com
2008年11月
93
就要对系统升级或者维护系统功½。厂家只需将 SD 卡取
回,把更新后的程序放入 SD 卡中,然后发放给用户,用
户只需把 SD 卡插入终端设备,即可达到系统升级的目的。
图 1 给出厂商与用户之间的交流流程图。图 2 给出整个系
统设计流程图。
按图 1 所示,厂商与用户交流过程如下:
地址段中。最后,跳½到指定段,开始工½。厂家可根据
需要,任意安排升级程序放½的½½。
3 系统硬件设计
核心处理器采用 PHILJIPS 公司的 LPC2148。它是一
个支持实时仿真和嵌入式跟踪的 32 ½ ARM7 微控制器,
带有 32KB 和 512KB 嵌入的高速 F½½½½ 存储器。128 ½½
度的存储器接口和独特的加速结构,½ 32 ½代码½够在
最大时钟速率下运行,并带有 SPI 总线。选用该处理器主
要考虑其内部资源丰富,无需扩展存储器和 SPI 总线,且
性½优异,抗干扰½力强,价格½廉,具有极高的性价比。
该设计只是产品电路中的一部分。其硬件电路如图 3
所示。LPC2148 具有同步、全双工串行接口(SPI)
,其最
大数据½频率为输入时钟频率的 ½/8,可以没½为主机或
从机工½方式。SD 卡是通过 SPI 总线协议驱动的,数据
传输中,主机总是向从机发送一个字节数据,而从机也总
是向主机发送一个字节数据。图 3 中左边为 LPC2148,右
边为 SD 卡插½。SCK½ 为串行时钟,用于 LPC2148 与 SD
卡之间的数据传输时钟信号;MIS01 是一个单向信号,用
于将数据从 SD 卡传输至 LPC2148;MOS½½ 也是一个单向
信号,用于将数据从 LPC2148 传输至 SD 卡;SSEL1 为选
图 1  厂商与用户之间交流流程图。
(1)  厂商将一个类似 B½½½ ½½½½½½ 的程序通过 ISP 方式,
将  其下½½到 F½½½½ 中,如图 2 所示的½½;
图 2  系统设计流程图
通信号,用于选中 SD 卡。图 3 中的引脚 3 和引脚 6 分别
接地,引脚 4 接电源,引脚 8 用于检测 SD 卡是否插入,
并可根据实际要求选定。SD 卡与 LPC2148 之间通过 SPI
协议和 SD 文件系统的组织½式,才½协调通讯。
(2) 将升级程序放入 SD 卡中,随产品一起出厂;
(3)  用户拿到 SD 卡后,将其插入 SD 卡½,终端设备
开始  工½;
(4) 用户½用一段时间后,若出现问题或者需要升级、
维护时,只需将 SD 卡返回厂家即可;
(5) 厂家将升级后的程序放入返回的 SD 卡中,再返回 
 
给用户,或者厂家直接再发放 SD 卡给用户,而无需用户
返回 SD 卡;
(6)  用户拿到 SD 卡后,将其直接插入终端设备卡后,
则可达到升级的目的。
出 厂 前, 通 过 ISP 编 程 方 式 烧 入 一 个 类 似 于 B½½½ 
½½½½½½ 的程序。该程序的实现大致分为 3 个步骤:
(1) SPI 模式下的 SD 卡底层驱动;
(2)  读出 SD 卡中的系统程序,并放入指定的 F½½½½ 地
址段中:
(3) 跳½到指定的 F½½½½ 地址段,执行升级后的系统。
在用户插入 SD 卡前,程序不断判断 SD 卡是否插入。
用户插入 SD 卡后,
程序首先驱动 SD 卡,
½其½正常工½,
然后读取 SD 卡中的升级程序,并将其放入指定的 F½½½½
图 3  硬件电路图
4 系统½件设计
系统½件部分首先通过 SPI 协议对 SD 卡初始化,然
后根据 SD 卡的 FAT32 文件系统组织½式读取 SD 卡中的
数据,将读取数据通过 IAP 方式将其写入 F½½½½ 中,最后
用一个跳½程序跳½到该段,以达到升级的目的。    
4.1 SD 卡的初始化
用户应用程序通常以文件的½式访问 SD 卡,并以文
94
www.globalsca.com
2008年11月
件的½式存取数据。文件系统层是通过调用 SD 卡物理层
的有关½数来实现的
[2½
,所以要想以文件系统的½式访问
SD 卡,则必须先驱动 SD。SD 卡的读写操½½是基于½令
的,通过向 SD 卡发送相应的½令并读取相应的响应控制
SD 卡。在对 SD 卡读写前,首先要进行初始化操½。这是
确保 SD 卡½在 SPI 模式下正常读写数据的前提
[3½
。SD 卡
上电复½后,
默认是 SD 模式。为了½ SD 卡进入 SPI 模式,
必须将 CS ½½(至少延迟 74 个时钟)并通过 SPI 总线发
送 CMD。½ SD 卡复½,
同时激活,
并进行内部初始化处理,
½ SD 卡退出空闲状态。SD 卡初始化流程图如图 4 所示。
图 5  SD 卡文件读取步骤
访问 FAT 表,读出其对应的 FAT 表内容,即第 3 个簇号
0006…等。依次做下去,直到最后一个表项内容为 FFFF
为止;    
(3) 由第 (2) 步可知,
“M½½½½½”这个文件占用了 4 个簇,
图 4  SD 卡初始化流程图
这 4 个 簇 号 ½ 成 一 个 簇 链 0004H-0005H-0006H-0008H,
根据这些簇号所½成的簇链访问这 4 个簇号对应的 4 个数
据存储区域,文件“M½½½½½”就分成 4 个部分分别存放在
这 4 个存储区域中
[6½
SD 卡中 SPI 模块的读操½包括读单块和读多块两种。
该系统仅实现了读单块功½。初始化的长度为 512 字节。
½数的实现分为 4 个步骤:① LPC2148 向 SD 卡发送读单
块½令(CMD17)
,SD 卡响应(R1 格式)
;②等待 SD 卡
发送读起始令牌;③判断收到的令牌是否为 O½FE;④从
SD 卡中读取数据 [4½。
4.3 IAP 功½的实现
LPC2148 支持多种方式对 F½½½½ 进行编程,用来写入
用户代码或数据。第一种方式是通过内½的串行 JTAG 接
口进行编程;第二种方式是通过 UARTO 进行存系统编程
(ISP)
;第三种方式是通过在应用编程(IAP)
。IAP 程序是
½½½½½ 代码,地址为 0½7FFFFFF0。在½用 IAP 擦除、编
程操½过程中,片内 F½½½½ 存储器不可访问。½用户运行
应用程序时,用户 F½½½½ 区域的中断向量有效,所以在调
用 F½½½½ 擦除、写 IAP 之前,用户应½禁止中断,确保用
户中断向量在 RAM 中有效和中断处理程序½于 RAM 中。
IAP 代码不½用或禁止中断。
可将 SD 卡读出的数据用 C 代码烧入指定的 F½½½½ 段
[7½
* 定义 IAP 程序的入口地址
#½½½½½½ IAP_LOCATION 0½7FFFFFF1;
* 定义数据结构或指针,将 IAP ½令表和结果表传递
给 IAP ½数 ½½½½½½½½ ½½½½ ½½½½½½½[5½,
½½½½½½½½½ ½½½½ ½½½½½½[2½;
* 定义½数类型指针,½数包括两个参数,无返回值
T½½½½½½ ½½½½(*IAP)
(½½½½½½½½ ½½½[½,½½½½½½½½ ½½½[½)
IAP ½½½_½½½½½;    // 定义½数指针
4.2 SD 卡文件系统
SD 卡完成底层驱动后,可按照 FAT32 文件系统格式
对 SD 卡上的数据进行操½,进而在 SD 卡上实现读写文
件等操½。FAT32 文件系统是微½ FAT 类文件系统中的
最高版本,是现今 W½½½½½½ 下最常用的硬盘文件系统
[5½
½读取 SD 卡中的文件时,首先要根据文件名查找该
文件的信息结构½。根据文件信息结构½中的起始簇号
即可找到数据区第 1 簇的内容,也可在 FAT 表中找到第
2 个簇号。根据第 2 个簇号又½找到第 2 簇的内容和 FAT
表中的第 3 个簇号,直至遇到文件结束标志。这样,就可
根据 FAT 表中的簇号读取到全部文件数据
[4½
。以图 5 为例,
说明读取 SD 卡文件的具½步骤:
(1)  先在目½项表中找到与文件名匹配的内容,如
“M½½½½½”从“M½½½½½”所对应的目½项中可以读到该文件
的首簇号 0004:
(2) 根据首簇号 0004 访问 FAT 表,读出首簇号对应的
FAT 表项内容 0005,即第 2 个簇号。根据第 2 个簇号再
www.globalsca.com
2008年11月
95
* 设½½数指针
½½½_½½½½½=(IAP)IAP_LOCATION;
* 调用 IAP 语句
½½½_½½½½½(½½½½½½½,½½½½½½)
新功½和维护系统稳定方面起到了巨大的½用。要注意
的是,该程序设计是在 K½½½ 下编译通过的,生成的 HEX
文件不½直接放入 SD 卡中,因为该文件与通过 ISP 烧写
F½½½½ 的文件不一样,要½一定的修改。另外,该方案不
仅½用于系统升级,也½用于为程序补丁和写人数据等,
也可用于 ARM9。因此该设计方案具有广泛的应用前景。
4.4 程序实现跳½到任意行代码段执行
现以下例来说明这段程序。如果程序跳½到绝对地址
为 0½FFFF0 执行,代码如下:
½½½½½½½ ½½½½(*½½½) ;// 定义一个无参数,无返回
()
类型的½数指针类型
½½½ ½½½½½½½=(½½½)0½FFFF0;// 定义一个½数指针,
指向跳½的½½ ½½½½½½½() 调用½数
://
在上述应用程序中,
根本没有看到任½一个½数实½,
½是却执行了½数调用。实际上它起到了“½重启”的½
用,跳½到 CPU 启动后第一条要执行的指令½½,即实
现了程序的跳½。
参考文献
[1] 韦文祥 , 朱志杰 , ½琳娜 , 等 . 基于 LPC2124 的一个
远程系统½件升级方案 [J]. 单片机与嵌入式系统应用 ,
2006(5): 46-49.
[2] 周立功 . ARM 嵌入式系统½件开发实例 ( 二 ) [M]. 北京 :
北京航空航天大学出版社 . 2006.
[3] 张凯 , 姜熙君 , 陈磊 , 等 . MMC 卡的文件系统及其实现方
法 [J]. 单片机与嵌入式系统应用,2006(5): 30-32.
[4] 张天益 . 基于 ARM 的½½½播放器的设计 [D]. 成½ : 电子科
技大学 . 2007.
5 结语
该 设 计 方 案 以 LPC2148 为 核 心, 通 过 SD 卡 驱 动、
FAT32 文件系统、IAP 功½和程序跳½实现了系统升级的
模块设计,并用于实际开发中。该设计增强了系统维护,
缩短了产品的开发周期,节约了大量的人力、财力,增加
了与用户的交流力度。与传统设计相比,在开发时间、成
本和灵活性等方面½占有优势性。该设计已经调试成功,
并½为一个功½模块用于某电子产品上,在产品需要增加
[5] 张明亮 , 张宗杰 . 浅析 FAT32 文件系统 [J]. 计算机与数字
工程,2004, 33(1): 56-59.
[6] 陈祖爵 , 蒋仕俊.智½遥控器 SD 卡文件系统的设计与实现
[J]. 计算机与设计 , 2007, 28(19): 4716-4718.
[7] 周立功 . ARM 微控制器基础与实践 [M]. 北京 : 北京航空航
天大学出版社 , 2003.
½½½自《½外电子元器件》2008年(第10期)
96
www.globalsca.com
2008年11月
展开预览

猜您喜欢

评论

登录/注册

意见反馈

求资源

回顶部

推荐内容

热门活动

热门器件

随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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