版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式处理器MPC8250与CF卡的接口设计
摘要:从如何设计嵌入式处理器与CF卡之间的接口、如何高效率地编制读写程序出发,介绍了嵌入式处理器与CF卡的接口设计和编程技巧。
关键词:CF卡PCI局部总线扇区
最近几年,嵌入式处理器蓬勃发展,在通信、航空航天、医疗设备、消费类电子产品等领域一展身手。嵌入式处理器的外围设备也日新月异,例如记忆棒、USB口、CF卡等。本文从硬件和软件角度出发,介绍了CF卡在嵌入式系统中的设计和使用技巧。
由于CF卡具有携带方便、易于升级、存储量大、抗震性好等优点,应用范围越来越广。1995年10月,SanDisk、柯达、卡西欧、惠普、摩托罗拉、佳能等125家厂商发起成立了CompactFlash协会,致力于制定新一代的基于RAM和ROM技术的固态非易失的存储介质标准——CF卡标准使不同厂家开发的CF卡及其接口器件可以互相兼容。目前,CF卡标准已有1.4版本,容量从最早的2M字节到现今的1G字节。
同时,CF卡遵从ATA-IDE工业设计标准,连接装置与PCMCIA卡相似,只不过CF卡是50引脚,可以很容易插入无源68引脚TypeII适配卡并完全符合PCMCIA电力和机械接口规格。另外,CF卡的兼容性佳,不仅同时支持3.3V和5V的电压,而且不同的CF卡都可以用单一的机构读写,特别是CF卡升级换代时也可以保证旧设备的兼容性。而纯电子运动的CF卡耗电量很低,仅为IBM微型硬盘的5%。
1系统设计
图1是笔者开发的嵌入式系统框图。其中,嵌入式处理器是MPC8250,PCI1410A是连接PCI总线和CF卡的一种接口芯片。
MPC8250芯片是Motorola公司开发的一款PowerPC系列嵌入式处理器。芯片采用小巧而强大的32位超标量体系结构PowerPC603e处理器内核,最高主频为300MHz。它集成了PCI桥、PCI仲裁器、存储器控制器、中断控制器、DMA控制器、16K字节指令高速缓存和16K字节数据高速缓存等部件。MPC8250具有三个可配置为百兆或十兆以太网的FCC口,四个可配置为串口或网口的SCC口,一个多通道HDLC接口。该芯片适用于对成本、空间、功耗和性能都有很高要求的应用领域,例如路由器/接线器、多路MODEM、网络存储应用和图像显示等系统。
PCI1410A芯片是TI公司开发的一种高性能的PCI到CF卡的控制器,支持遵循CF卡标准的各类CF卡。它符合PCI总线标准,既可以工作于PCI主设备模式,也可以工作于PCI从设备模式。
MPC8250与PCI1410A之间通过32位PCI局部总线连接,工作频率33MHz。MPC8250用作PCI主设备,PCI1410A用作PCI从设备,同时采用MPC8250内部的PCI仲裁器。
本设计选用SanDisk公司的型号为SDCFB-64-101的CF卡,64M字节容量,几何尺寸为36.4mm×42.8mm×3mm。PCI1410A与CF卡之间的连接遵循CF卡标准,由地址、数据、控制三组信号组成。PCI1410A提供了五个通用I/O引脚,设计中将其中一个引脚GPIO1用作LED指示。当CF卡工作时,LED会以64ms的周期闪烁。
SDRAM选用了三星公司的K4S561632A,每片容量256M比特,共四片。
2接口编程
在CF卡工作前,必须先进行初始化,在整个系统的地址空间中确定CF卡的位置,预设置CF卡的工作模式及相关寄存器。本设计中,CF卡位于系统的0x9A000000~0x9DFFFFFF地址空间。在每次读写CF卡时,必须根据读写数据的多少和操作特性来配置相应寄存器。
2.1CF卡初始化
本系统中,CF卡的初始化由MPC8250通过PCI总线配置PCI1410A的寄存器实现,具体步骤
设置CF卡的基地址,即配置ExCA寄存器。该寄存器定义了CF卡在PCI存储器空间的基地址,即0x9A000000。
配置PCI命令寄存器,允许CPU访问PCI存储空间。
配置系统控制寄存器。该寄存器定义了一些系统控制位,例如,是否采用PCI中断方式,是否采用内部振荡器,是否采用DMA等。本设计采用PCI中断方式,不采用内部振荡器和DMA。
配置多功能引脚寄存器。该寄存器配置通用引脚。本设计配置GPIO1引脚为LED指示,GPIO2引脚为PCI中断输出。
配置设备控制寄存器。该寄存器选择中断方式,是并行PCI中断还是串行PCI中断。本设计选择了传统的并行PCI中断方式。
配置ExCA电压控制寄存器,选择Vcc为3.3V还是5V。本设计选择Vcc为3.3V。
配置ExCA存储窗口0起始地址低位寄存器,即起始地址的A19~A12位。PCI1410A具有五个存储地址翻译窗口和二个I/O地址翻译窗口,用于配置CF卡内寄存器的访问地址,将CF卡的寄存器映射到系统的存储空间或I/O空间,MPC8250访问这些寄存器就相当于访问一段存储空间或I/O空间。本设计中只使用了存储地址翻译窗口0。
配置ExCA存储窗口0起始地址高位寄存器,即起始地址的A23~A20位。
配置ExCA存储窗口0结束地址低位寄存器,即结束地址的A19~A12位。
配置ExCA存储窗口0结束地址高位寄存器,即结束地址的A23~A20
位。
配置ExCA存储窗口0地址比较寄存器。在系统访问CF卡时,如果地址的高8位与该寄存器数值相同,则允许访问,系统将该地址翻译到相应的CF卡空间;否则,拒之门外。
配置ExCA存储窗口使能寄存器。该寄存器可以分别打开或关闭五个存储地址翻译窗口和二个I/O地址翻译窗口,因为每个窗口对应了寄存器中的一个使能位。芯片的默认值都是关闭的。在本设计中,打开存储地址翻译窗口0。切记在初始化的收官阶段打开翻译窗口使能位,以免功亏一篑。
2.2读写CF卡技巧
由于CF卡本身的特点,CF卡由ATA控制器和Flash存储器两部分构成。系统访问Flash存储器的速度远远小于访问内存的速度。如果系统频繁访问CF卡,势必影响系统的实时性和工作效率。所以必须考虑CF卡读写程序的设计技巧。
根据存储器访问的局部性原理,CPU存取数据所访问的存储单元都趋向于聚集在一个较小的连续区域。从时间上看,如果一个信息项正在被访问,那么在近期它很可能还会被再次访问。从空间上看,在最近将用到的信息很可能与目前正在使用的信息在空间地址上是临近的。
本系统的程序设计中,开辟了一个扇区的内存空间tempSect,用于存储最近访问过的扇区数据;并设置了两个全局变量:SaveSectorNum和SectorDirty。SaveSectorNum保存最近备份的扇区编号。SectorDirty说明备份数据是否与CF卡中的相应数据一致。如果一致,为“0”;否则为“1”。这样不但可以减少读写CF卡的次数,而且提高了访问速度,满足嵌入式操作系统的实时性要求。
同时,CF卡的物理结构也有利于以扇区为单元进行操作。因为CF卡内部的Flash存储器由若干个扇区组成,而且CF卡中设置了专门针对扇区操作的寄存器。
所以,本设计中,无论是读一段数据,还是写一段数据,都以扇区为基本单位。如果数据量在一个扇区内,并且地址范围在同一扇区,则先读取所在扇区的数据,然后按照在扇区中的偏移量获得所需数据;如果数据量大于一个扇区,或者地址范围横跨两个扇区,则按次读取扇区,获得所需数据。操作流程如图2所示。
系统初始化时,设置SaveSectorNum为“0”,tempSect中备份了0号扇区的数据;SectorDirty也为“0”,即备份数据未作更改。
当读取一个扇区的数据时,首先比较所读取的扇区号,是否与备份数据的扇区号一致,如果一致,则从备份数据中读取,加快了访问速度;否则,判断备份数据是否更改,即SectorDirty是否为“1”;如果不是,则从CF卡中读取扇区号为CurrSectorNum的数据到tempSect中;否则,先把tempSect的数据写回CF卡,然后从CF卡中读取扇区号为CurrSectorNum的数据到tempSect中。最后,设置备份数据扇区号SaveSectorNum为当前数据的扇区号CurrSectorNum,设置SectorDirty为“0”,并从备份数据中读取所需数据。
当写入一个扇区的数据时,首先比较所写入的扇区号,是否与备份数据的扇区号一致,如果一致,则把数据写入备份数据中,并且设置SectorDirty为“1”;否则,判断备份数据是否更改,即SectorDirty是否为“1”;如果不是,则从CF卡中读取扇区号为CurrSectorNum的数据到tempSect中;否则,先把tempSect的数据写回CF卡,然后从CF卡中读取扇区号为CurrSectorNum的数据到tempSect中。最后,设置备份数据扇区号SaveSectorNum为当前数据的扇区号CurrSectorNum,将指定数据写到备份数据中,并且设置SectorDirty为“1”。
2.3读写数据的相关寄存器
根据CF卡标准,不能直接访问CF卡的数据区域,而需要通过访问CF卡内的相关寄存器间接读取或者写入数据。在访问CF卡时必须对它们进行正确配置
扇区数目寄存器
读写操作时,保存需要传送的扇区数目。如果为0,则选择256个扇区;如果操作成功,操作结束时此寄存器为0;如果操作不成功,此寄存器包含了有待完成的扇区数目。
磁头寄存器
其中包含了LBA位,用于设置地址访问方式。“1”LBA_Mode为逻辑地址访问方式,“0”为柱面/磁头/扇区访问方式。本系统选择逻辑地址访问方式,则该寄存器还包含了逻辑地址的24~27位。
扇区编号寄存器
在采用逻辑地址访问方式时,该寄存器包含了逻辑地址的0~7位。
柱面低位寄存器
在采用逻辑地址访问方式时,该寄存器包含了逻辑地址的8~15位。
柱面高位寄存器
在采用逻辑地址访问方式时,该寄存器包含了逻辑地址的16~23位。
状态寄存器
反映了CF卡的状态,其中包含了CF卡忙位、出错位、是否准备就绪位等。
数据寄存器
存放读写数据,是一个16位寄存器。
2.4读数据
从CF卡读取一个扇区的数据,如图3所示。因为系统采用的CF卡的扇区大小为:SectorSize=512字节,假设读写数据的地址为Addr,则该地址所在的扇区号为
Sector=Addr%SectorSize。
首先配置寄存器,设置读取的扇区数目、相应地址和访问模式;然后发送读命令,等待CF卡空闲且准备就绪,再从数据寄存器中连续
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 遥感影像解译与空间信息提取-洞察分析
- 药物筛选与高通量技术-洞察分析
- 《网络是把双刃剑》课件
- 2024年柳州华侨医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- 2025年粤教新版九年级历史下册阶段测试试卷
- 养殖场粪污处理合同(2篇)
- 2024年05月山西山西银行社会招考笔试历年参考题库附带答案详解
- 中位线定理课件
- 2024年05月山东中国民生银行济南分行社会招考(512)笔试历年参考题库附带答案详解
- 2025年人教新起点高二化学上册月考试卷含答案
- 火力发电厂有关职业病的危害及防护
- 民主测评票(三种样式)
- 班车安全检查表(2015-7-14)V3 0 (2)
- 城投集团年度安全管理工作计划
- 一、 行业协会申请设立分支机构、代表机构应提交的文件:
- 幼儿园幼儿园理事会成员一览表
- 学生对课堂教学满意度调查
- 住房公积金中心窗口人员个人工作总结
- 集成电路单粒子效应评估技术研究PPT课件
- 幼儿园小班生成活动教案20篇
- 讲师与平台的合作协议
评论
0/150
提交评论