Intel Xscale PXA255嵌入式處理器與CF卡的
以導航設備存儲系統應用為例,本文討論了Intel Xscale PXA255嵌入式處理器與CF卡的硬件接口設計,并以讀寫(xiě)CF卡扇區的程序為例,給出了CF卡軟件編寫(xiě)的技巧。該設計為基于PXA255處理器的嵌入式系統提供了擴展存儲空間的一種方法。
本文引用地址:http://dyxdggzs.com/article/150870.htm圖1:CF卡結構框圖
Intel Xscale PXA255處理器是新一代的嵌入式處理器,基于A(yíng)RMv5TE體系結構的微處理器,性?xún)r(jià)比較高、功耗較低,適合于數字移動(dòng)電話(huà)、個(gè)人數字助理、網(wǎng)絡(luò )路由器等嵌入式系統的應用。在采用PXA255處理器開(kāi)發(fā)諸如車(chē)載導航系統時(shí),電子地圖等海量地理信息數據需要一個(gè)容量大、體積小、性能優(yōu)異的存儲器。“Compact Flash”卡,簡(jiǎn)稱(chēng)CF卡,具有高速度、大容量、體積小、重量輕、功耗低和高性?xún)r(jià)比等優(yōu)點(diǎn),十分適合嵌入式系統的應用。因此,可選擇CF卡作為地理信息數據的存儲載體。PXA255處理器提供了PCMCIA/CF卡控制器,可以方便地實(shí)現PXA255處理器與CF卡的接口設計。
CF卡結構和工作原理
Compact Flash技術(shù)是由CF協(xié)會(huì )(CFA)提出的一種與PC機ATA接口標準兼容的技術(shù)。如圖1,CF卡由兩個(gè)基本部分構成:內部控制器和閃存模塊。CF卡的閃存模塊基本上都使用NAND型閃存,用于存儲數據。內部控制器用來(lái)實(shí)現CF卡與主機的接口以及控制數據的傳輸。CF卡內部控制器的設計完全模擬硬盤(pán),使用標準的ATA/IDE接口。
CF卡的存取方式有三種:PC Card Memory模式、PC Card I/O模式以及True IDE模式。PC Card模式與PCMCIA標準兼容。True IDE模式與ATA標準兼容。三種方式相比,在True IDE模式下,CF卡與主機通信的信號最少,硬件接口最簡(jiǎn)單、軟件易于實(shí)現,因此本設計采用了True IDE模式。
CF卡扇區尋址有兩種方式:物理尋址方式(CHS)和邏輯尋址方式(LBA)。物理尋址方式使用柱面、磁頭和扇區號表示一個(gè)特定的扇區,起始扇區是0磁道、0磁頭、1扇區,接著(zhù)是2扇區,一直到EOF扇區;接下來(lái)是同一柱面1頭、1扇區等。邏輯尋址方式將整個(gè)CF卡同一尋址。邏輯塊地址和物理地址的關(guān)系為:LBA地址=(柱面號×磁頭數+磁頭號)×扇區數+扇區數-1。
CF卡沒(méi)有機械結構,因此CF卡的扇區尋址適宜采用邏輯尋址方式。邏輯尋址方式?jīng)]有磁頭和磁道的轉換操作,因此在訪(fǎng)問(wèn)連續扇區時(shí),操作速度比物理尋址方式快得多。
對于CF卡的操作(如:讀/寫(xiě)),其實(shí)就是對CF卡控制器的寄存器進(jìn)行操作。所以,必須對CF卡的寄存器十分熟悉。這些寄存器統稱(chēng)為任務(wù)文件(task file)寄存器:
1.數據寄存器(讀/寫(xiě)),用于CF卡的讀寫(xiě)操作。主機通過(guò)該寄存器向CF卡數據緩沖寫(xiě)入或從CF卡數據緩沖讀出數據。
2.錯誤寄存器(Read)和特性寄存器(Write)。讀操作時(shí),此寄存器為錯誤寄存器,用于指明錯誤的原因;寫(xiě)操作時(shí),此寄存器為特性寄存器。
3.扇區數寄存器(讀/寫(xiě)),用來(lái)記錄讀、寫(xiě)扇區的數目。
4.扇區號寄存器(讀/寫(xiě)),用來(lái)記錄讀、寫(xiě)和校驗命令指定的起始扇區號或邏輯塊地址(LBA)的BIT7:0。
5.柱面號寄存器(讀/寫(xiě)),用來(lái)記錄讀、寫(xiě)、校驗和尋址命令指定的柱面號或LBA的BIT23:8。
6.驅動(dòng)器/磁頭寄存器(讀/寫(xiě)),記錄讀、寫(xiě)、校驗和尋道命令指定的驅動(dòng)器號、磁頭號或LBA的BIT27:24,其中BIT6(LBA)用來(lái)設置CF卡扇區的尋址方式(LBA=0,采用CHS模式;LBA=1,采用LBA模式)。
圖2:CF卡地址空間存儲映像
7.狀態(tài)寄存器(讀)和命令寄存器(讀/寫(xiě)),讀操作時(shí),該寄存器是狀態(tài)寄存器,指示CF卡控制器執行命令后的狀態(tài),讀狀態(tài)寄存器則返回CF卡的當前狀態(tài);寫(xiě)操作時(shí),該寄存器是命令寄存器,接收主機發(fā)送給CF卡的控制命令。
PXA255處理器與CF卡的硬件接口設計
1. PXA255的PC Card/CF卡控制器
PXA255處理器PC Card/CF卡控制器可以支持一個(gè)PCMCIA卡或CF卡插槽,利用nPSKTSEL引腳可以支持第2個(gè)插槽。寄存器MECR用于向PXA255處理器的PC Card/CF卡控制器指出是否有CF卡插入,以及系統支持的CF卡的插槽數目。在有卡插入時(shí),軟件必須將MECR的CIT比特位置1;所有的卡拔出時(shí),則必須將之清零。
PXA255處理器PC Card/CF卡接口支持8、16位外圍設備,而且可以處理公共存儲器(Common Memory)、I/O和特性存儲器(Attribute Memory)三種方式的存取。每次訪(fǎng)問(wèn)的時(shí)間取決于MCMEMx、MCATTx和MCIOx寄存器的設置。圖2給出了PXA255處理器16位PC Card/CF卡地址空間的存儲器映像。16位PC Card/CF卡存儲器映像空間分為8塊。每個(gè)插槽對應其中4塊,分別為公共存儲器、I/O、特性存儲器和保留空間。每個(gè)塊的大小為64M。
每次訪(fǎng)問(wèn)PC Card /CF卡對應的地址空間,PC Card/CF卡控制器將同時(shí)驅動(dòng)信號SA_A25:0、nPREG和nPSKTSEL。(注:PXA255處理器的地址總線(xiàn)為SA_A25:0。)
如果訪(fǎng)問(wèn)公共存儲器和特性存儲器地址空間,PC Card/CF卡控制器驅動(dòng)地址總線(xiàn)的時(shí)候,同時(shí)驅動(dòng)nPCE1、nPCE2信號,并使用nPOE和nPWE信號作為讀寫(xiě)控制信號。
如果是訪(fǎng)問(wèn)I/O空間,nPCE1、nPCE2的值取決于CF卡的信號輸出nIOIS16,而且在nIOIS16有效后,nPCE1、nPCE2將有效固定的一段時(shí)間。nIOIS16信號用來(lái)決定傳送的數據總線(xiàn)的寬度(8位或16位):nIOIS16=1,表明當前的數據總線(xiàn)為8位,nPCE1有效;nIOIS16=0表明當前的數據總線(xiàn)為16位,nPCE1、nPCE2同時(shí)有效。PXA255使用nPCE2向外部設備指出操作將使用數據總線(xiàn)的高8位,使用nPCE1向外部設備指出操作將使用數據總線(xiàn)的低8位。I/O地址空間的訪(fǎng)問(wèn)使用nPIOW和nPIOR信號作為讀寫(xiě)控制信號。
2. PXA255與CF卡硬件接口設計
圖3:硬件接口電路
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論