999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

OMAP-L138處理器的SD卡FAT文件系統(tǒng)讀寫(xiě)

2011-06-22 08:19:28陳正江

陳正江

(電子科技大學(xué) 自動(dòng)化工程學(xué)院,成都611731)

陳正江(碩士研究生),主要研究領(lǐng)域?yàn)闇y(cè)控技術(shù)與儀器。

引 言

德州儀器(TⅠ)公司的OMAP-L138處理器是一款將ARM和DSP整合在一起的低功耗應(yīng)用處理器,其中ARM核采用的是主頻為375MHz的ARM926EJ-S核,而DSP核采用TⅠ公司的型號(hào)為T(mén)MS320C6748的浮點(diǎn)型DSP[1]。

作為一款針對(duì)移動(dòng)設(shè)備和高速數(shù)據(jù)處理的高性能應(yīng)用處理器,SD卡的引入有一定的必要性。在大部分應(yīng)用中OMAP-L138處理器會(huì)產(chǎn)生大量的數(shù)據(jù),SD卡的使用可以大大降低板上存儲(chǔ)數(shù)據(jù)的成本,減少數(shù)據(jù)的轉(zhuǎn)移時(shí)間,提高數(shù)據(jù)的轉(zhuǎn)移效率。而在SD卡上實(shí)現(xiàn)文件系統(tǒng),有利于管理卡上數(shù)據(jù),使之準(zhǔn)確而迅速地轉(zhuǎn)移至PC機(jī)。考慮到FAT文件系統(tǒng)較高的可移植性,且與PC機(jī)上常用的Windows操作系統(tǒng)兼容,因此在本課題中采用了FAT文件系統(tǒng)以便于在PC機(jī)上對(duì)數(shù)據(jù)進(jìn)行分析和備份。

1 SD卡簡(jiǎn)要介紹

由于在成本控制、安全性、移動(dòng)性和讀寫(xiě)速度等方面都有不錯(cuò)的表現(xiàn),SD卡的應(yīng)用越來(lái)越廣泛。下面針對(duì)SD卡在本課題中的應(yīng)用進(jìn)行一些簡(jiǎn)要的介紹。

1.1 SD卡結(jié)構(gòu)

SD卡內(nèi)部結(jié)構(gòu)如圖1所示。SD卡有9個(gè)引腳,以下是對(duì)除供電和接地引腳外的6個(gè)引腳的功能介紹。

①CLK:時(shí)鐘信號(hào)。每個(gè)時(shí)鐘周期能傳輸一個(gè)命令或數(shù)據(jù)位。

② CMD:命令(Command)和響應(yīng)(Response)線。用于主機(jī)與SD卡之間的協(xié)調(diào)通信。

圖1 SD卡內(nèi)部結(jié)構(gòu)

③DAT0~3:數(shù)據(jù)線。用于主機(jī)與SD卡之間的數(shù)據(jù)交換。

另外,SD卡內(nèi)部有6個(gè)長(zhǎng)短不一的寄存器,存儲(chǔ)著SD卡的出廠日期、生產(chǎn)廠商、容量大小、操作條件和SD卡狀態(tài)等信息。

1.2 工作模式

根據(jù)SD卡的相關(guān)標(biāo)準(zhǔn)可知[3],SD卡支持兩種總線模式:一種是SPⅠ模式,即使用SPⅠ接口總線來(lái)進(jìn)行數(shù)據(jù)的傳輸,只使用4位數(shù)據(jù)線中的DAT0進(jìn)行數(shù)據(jù)傳輸,而CD/DAT3引腳用于片選;另一種是SD模式,該模式下可以使用單線或4線傳輸數(shù)據(jù)。只要主控設(shè)備提供了SPⅠ接口,SD卡就能應(yīng)用于該設(shè)備,這使SD卡更具有通用性;而SD模式相比于SPⅠ模式可以提供更快的SD卡讀寫(xiě)速度,這正是高速數(shù)據(jù)處理所需要的。

1.3 SD模式下的Command與Response介紹

Command和Response都是在CMD線上串行傳輸?shù)模皇莻鬏數(shù)姆较虿灰粯印?/p>

Command代表著一次主機(jī)到從卡操作的開(kāi)始,是從主機(jī)到單卡或所有卡。

Response是對(duì)之前Command的響應(yīng),可以來(lái)自單卡或所有卡。

1.3.1Command介紹

Command分為標(biāo)準(zhǔn)CMD和ACMD,它們之間的區(qū)別就是在使用ACMD之前須向SD卡發(fā)送APP_CMD Command(CMD55)[3],而標(biāo)準(zhǔn) CMD 是可以直接對(duì) SD 卡使用的。以下是幾個(gè)常用的Command[3]。

① GO_ⅠDLE_STATE(CMD0):重置所有卡,使它們都處于空閑態(tài),無(wú)Response。

② ALL_SEND_CⅠD(CMD2):向所有卡詢(xún)問(wèn) CⅠD號(hào)碼,響應(yīng)類(lèi)型為R2。

③SEND_RELATⅠVE_ADDR(CMD3):詢(xún)問(wèn)卡的RCA(Relative Card Address,相對(duì)卡地址)。是SD卡的本地系統(tǒng)地址,是由SD卡在初始化期間動(dòng)態(tài)分配并得到主機(jī)承認(rèn)的[3],響應(yīng)類(lèi)型為 R6。

④ SELECT/DESELECT_CARD(CMD7):CMD7使用RCA作為命令參數(shù),當(dāng)某卡收到的是自己本身的RCA,那么它將被選擇。反之,則該卡將被取消選定。當(dāng)發(fā)送的RCA為0時(shí)將取消選定的所有卡,響應(yīng)類(lèi)型為R1b。

⑤SEND_CSD(CMD9):命令參數(shù)為 RCA,其作用是使地址為該RCA的卡給主機(jī)設(shè)備發(fā)送它的CSD信息,響應(yīng)類(lèi)型為R2。

⑥ STOP TRANSMⅠSSⅠON(CMD12):強(qiáng)制卡結(jié)束數(shù)據(jù)傳輸,通常用于SD卡多塊讀寫(xiě)時(shí),響應(yīng)類(lèi)型為R1b。

⑦SET_BLOCKLEN(CMD16):設(shè)置 SD卡的塊長(zhǎng)度,通常的塊長(zhǎng)度都是512字節(jié),響應(yīng)類(lèi)型為R1。

⑧ READ_SⅠNGLE_BLOCK(CMD17),READ_M(jìn)ULTⅠPLE_BLOCK(CMD18):塊的讀命令,前者讀單塊,后者讀多塊,響應(yīng)類(lèi)型都是R1。

⑨ WRⅠTE_SⅠNGLE_BLOCK(CMD24),WRⅠTE_M(jìn)ULTⅠPLE_BLOCK(CMD25):塊的寫(xiě)命令,前者寫(xiě)單塊,后者寫(xiě)多塊,響應(yīng)類(lèi)型都是R1。

⑩ APP_CMD(CMD55):指明下一個(gè)命令為ACMD,響應(yīng)類(lèi)型為R1。

[11]SET_BUS_WⅠDTH(ACMD6):設(shè)置SD卡的數(shù)據(jù)寬度,參數(shù)為數(shù)據(jù)寬度,響應(yīng)類(lèi)型為R1。

[12]SD_SEND_OP_COND(ACMD41):讓SD卡返回OCR寄存器內(nèi)容,參數(shù)為SD卡的電壓范圍,響應(yīng)類(lèi)型為R3。

1.3.2Response介紹

Response分為R1、R1b、R2、R3、R6和R7,除去R2長(zhǎng)度為136位外,其他的全為48位,但它們的功用和意義不一致。

R1為普通命令的響應(yīng),而R1b與R1唯一的區(qū)別就是R1b代表該卡接到命令時(shí)數(shù)據(jù)線會(huì)處于忙態(tài)。R2用于卡向主機(jī)返回SD卡CSD或CⅠD寄存器內(nèi)容,R3作為ACMD41的響應(yīng),返回SD卡OCR寄存器的內(nèi)容。R6返回SD卡的RCA,R7作為CMD8的響應(yīng)[3]。

2 FAT文件系統(tǒng)

之所以引入FAT文件系統(tǒng),一是便于SD卡上數(shù)據(jù)的管理,二是便于將SD卡上的數(shù)據(jù)轉(zhuǎn)移至PC機(jī)上進(jìn)行備份和處理。

2.1 FAT文件系統(tǒng)簡(jiǎn)介

目前FAT文件系統(tǒng)有FAT12、FAT16和FAT32三種類(lèi)型,它們是由FAT表中每個(gè)FAT項(xiàng)所占長(zhǎng)度來(lái)分類(lèi)的,即它們的FAT表中每個(gè)FAT項(xiàng)占用的位數(shù)分別為12、16和32位[4]。由于FAT12文件系統(tǒng)能支持的最大分區(qū)容量只有8MB,再加上不能支持長(zhǎng)文件名,現(xiàn)在已經(jīng)很少能看到它的蹤影了。FAT16能支持的分區(qū)容量為16 MB~2GB[4],F(xiàn)AT32能支持的分區(qū)容量為32MB~32 GB[4]。在本課題中可以靈活地選擇將SD卡格式化為FAT16或FAT32。

2.2 FatFs簡(jiǎn)介

FatFs是在小型的嵌入式系統(tǒng)中的一個(gè)通用的FAT文件系統(tǒng)模塊[5],也 就是 FAT 文 件系統(tǒng)的驅(qū)動(dòng)。它連接著頂層的應(yīng)用和底層的物理實(shí)現(xiàn)如圖2所示。FatFs的引入降低了在SD卡上借助文件系統(tǒng)實(shí)現(xiàn)讀寫(xiě)功能的難度。如圖3所示,只需要實(shí)現(xiàn)底層SD卡的Ⅰ/O函數(shù)、RTC函數(shù)和頂層的應(yīng)用函數(shù)功能就可以實(shí)現(xiàn)FAT文件系統(tǒng)的移植。

圖2 FatFs模塊

下面簡(jiǎn)要介紹FatFs模塊中的一些常用庫(kù)函數(shù)[5]。

①f_mount:用于裝載或卸載一個(gè)工作區(qū)域,在使用FatFs庫(kù)函數(shù)進(jìn)行操作前須裝載一個(gè)工作區(qū)域,操作完畢后要卸載該工作區(qū)域。

②f_read,f_write:文件的讀寫(xiě)函數(shù)。

③f_open:用于打開(kāi)或創(chuàng)建一個(gè)文件,在使用f_read或f_write函數(shù)之前須使用f_open打開(kāi)文件。

④f_close:關(guān)閉一個(gè)文件,在完成文件的讀寫(xiě)操作過(guò)程后須使用此函數(shù)關(guān)閉該文件。

⑤f_mkfs:格式化磁盤(pán)。

⑥f_opendir,f_readdir,f_mkdir,f_chdir:作用依次是打開(kāi)、讀取、創(chuàng)建和更改目錄。

⑦f_unlink:刪除一個(gè)文件或一個(gè)目錄。

3 軟件設(shè)計(jì)與實(shí)現(xiàn)

3.1 軟硬件平臺(tái)

本課題使用的是R0.08b版本的FatFs模塊,編譯調(diào)試軟件為T(mén)Ⅰ公司的CCS v3.3;硬件平臺(tái)是合眾達(dá)的DEC-138開(kāi)發(fā)板,其使用的芯片便是本文一開(kāi)始介紹的OMAP-L138處理器,同時(shí)也提供了SD卡的接口,滿(mǎn)足設(shè)計(jì)要求。

3.2 軟件實(shí)現(xiàn)

FatFs的移植工作主要是根據(jù)硬件平臺(tái)的不同對(duì)底層disk Ⅰ/O函數(shù)和RTC函數(shù)的編寫(xiě)。完成上述工作后,在了解FatFs庫(kù)函數(shù)功能的情況下就可以根據(jù)自己需要編寫(xiě)頂層的應(yīng)用函數(shù)。

3.2.1SD卡的初始化和讀寫(xiě)函數(shù)

(1)初始化函數(shù)SD_Init

SD卡的初始化流程如圖3所示。分為初始化SD控制器和識(shí)別SD卡兩個(gè)主要步驟,其中關(guān)于SD卡識(shí)別中使用到的CMD的相關(guān)解釋請(qǐng)參見(jiàn)1.3.1小節(jié)。另外,流程圖中默認(rèn)在發(fā)送ACMD之前發(fā)送了CMD55。

(2)讀寫(xiě)函數(shù)

圖3 SD卡初始化函數(shù)流程圖

SD卡讀/寫(xiě)數(shù)據(jù)示意圖如圖4所示。對(duì)OMAPL138而言,SD卡數(shù)據(jù)的讀寫(xiě)都要通過(guò)SD控制器上的FⅠFO,大小可設(shè)置為32字節(jié)或64字節(jié)。MMCDRR(MMC Data Receive Register,數(shù)據(jù)接收寄存器)和MMCDXR(MMC Data Transmit Register,數(shù)據(jù)發(fā)送寄存器)長(zhǎng)度都是32位。在讀SD卡上的數(shù)據(jù)的時(shí)候,會(huì)先將SD卡的數(shù)據(jù)復(fù)制到FⅠFO中,然后 MMCDRR會(huì)分次將FⅠFO中的數(shù)據(jù)讀出并發(fā)送至Host;而在寫(xiě)SD卡時(shí),數(shù)據(jù)也會(huì)先放置在FⅠFO中,之后MMCDXR再依次把數(shù)據(jù)讀出來(lái)寫(xiě)到SD卡中[6]。

圖4 SD卡讀/寫(xiě)數(shù)據(jù)示意圖

SD卡的讀寫(xiě)函數(shù)分為單塊和多塊,而多塊的讀寫(xiě)實(shí)際上有兩種實(shí)現(xiàn)方法:

① 將多塊分成多個(gè)單塊來(lái)讀寫(xiě);

② 直接使用多塊讀寫(xiě)CMD完成多塊的讀寫(xiě)。

由于第一種方法在單塊數(shù)據(jù)讀寫(xiě)之前須發(fā)送多次單塊讀寫(xiě)CMD,而第二種方法只用在數(shù)據(jù)傳輸之前發(fā)送一個(gè)多塊讀寫(xiě)CMD,并在數(shù)據(jù)傳輸終止處發(fā)送一個(gè)傳輸結(jié)束CMD,因此后者的速度明顯快于前者。

3.2.2diskI/O函數(shù)

disk Ⅰ/O函數(shù)的作用就是作為上層FatFs函數(shù)庫(kù)與底層存儲(chǔ)設(shè)備Ⅰ/O函數(shù)的紐帶。

(1)磁盤(pán)的初始化函數(shù)disk_initialize

初始化SD卡,此函數(shù)的參數(shù)為無(wú)符號(hào)char型的drv,目前版本的FatFs只支持單塊磁盤(pán),其值只能為0。

(2)磁盤(pán)狀態(tài)獲取函數(shù)disk_status

用于獲取磁盤(pán)狀態(tài),編寫(xiě)此函數(shù)時(shí)只需判斷drv是否為0。

(3)磁盤(pán)讀寫(xiě)函數(shù)disk_read/disk_write

disk_read/disk_write函數(shù)流程如圖5所示。disk_read/disk_write即磁盤(pán)的讀寫(xiě)函數(shù),其作用是將磁盤(pán)的讀寫(xiě)操作包裝起來(lái)供FatFs模塊中的相關(guān)函數(shù)調(diào)用。

圖5 disk_read/disk_write函數(shù)流程圖

(4)磁盤(pán)I/O控制函數(shù)disk_ioctl

用于返回塊大小、扇區(qū)大小和容量的函數(shù)。最典型的應(yīng)用是在格式化函數(shù)f_mkfs中。函數(shù)f_mkfs需從disk_ioctl中得到2個(gè)參數(shù):磁盤(pán)的容量和扇區(qū)大小。只有disk_ioctl得到正確的參數(shù),f_mkfs才能將SD卡正確格式化。

(5)實(shí)時(shí)時(shí)間獲取函數(shù)get_fattime

此函數(shù)用于得到實(shí)時(shí)時(shí)鐘,以標(biāo)示文件的創(chuàng)建時(shí)間和修改時(shí)間。

結(jié) 語(yǔ)

本課題成功實(shí)現(xiàn)了基于OMAP-L138處理器的SD卡FAT文件系統(tǒng)的移植,使得該處理器對(duì)文件的讀寫(xiě)簡(jiǎn)單易行,對(duì)文件的管理事半功倍;此外,讓SD卡工作在SD模式下使得OMAP-L138在進(jìn)行高速數(shù)據(jù)處理過(guò)后產(chǎn)生的數(shù)據(jù)能夠快速地存儲(chǔ)到SD卡中。FAT文件系統(tǒng)的成功移植也使OMAP-L138產(chǎn)生的數(shù)據(jù)能更高效地轉(zhuǎn)移至PC機(jī)上加以處理和備份。

[1]Texas Ⅰnstruments.OMAP-L138Low-Power Applications Processor[EB/OL].(2009-06)[2011-07].http://www.ti.com/cn/litv/pdf/sprs586b.

[2]Texas Ⅰnstruments.OMAP-L138Applications Processor System Reference Guide[EB/OL].(2010-10-16)[2011-07].http://www.ti.com/cn/litv/pdf/sprugm7d.

[3]SD Group and SD Association.SD Specifications Part 1 Physical Layer Simplified Specification Version 3.01[EB/OL].(2010-05-18)[2011-07].http://www.sdcard.org/developers/tech/sdcard/pls/simplified_specs.

[4]劉偉.數(shù)據(jù)恢復(fù)技術(shù)深度揭秘[M].北京:電子工業(yè)出版社,2010.

[5]FatFs Generic FAT File System Module[OL].[2011-07].http://elm-chan.org/fsw/ff/00index_e.html.

[6]Texas Ⅰnstruments.TMS320C674x/OMAP-L1xProcessor Multimedia Card(MMC)/Secure Digital(SD)Card Controller User's Guide [EB/OL].(2010-08)[2011-07].http://www.ti.com/cn/litv/pdf/sprufm2b.

主站蜘蛛池模板: 亚洲有码在线播放| 精品无码人妻一区二区| 婷婷99视频精品全部在线观看| 99久久亚洲综合精品TS| 日本成人一区| 丝袜亚洲综合| 国产永久在线视频| 亚洲综合色婷婷| 日韩欧美一区在线观看| 91系列在线观看| 99热6这里只有精品| 欧美亚洲一区二区三区导航| 日韩无码精品人妻| 国产精品第页| 亚洲av成人无码网站在线观看| 国产超碰一区二区三区| 国产精品成人AⅤ在线一二三四| 色AV色 综合网站| 亚洲综合婷婷激情| 无码丝袜人妻| 亚洲日韩每日更新| 亚洲丝袜第一页| 国产精品lululu在线观看| 超薄丝袜足j国产在线视频| 欧美亚洲国产日韩电影在线| 亚洲第一色网站| 亚洲成a人片| 久久亚洲AⅤ无码精品午夜麻豆| 超薄丝袜足j国产在线视频| 欧美日韩免费| 国产精品福利一区二区久久| 国产精品视频导航| 99久久精品国产精品亚洲| 国产国模一区二区三区四区| 日本色综合网| 国产精品久久精品| 日韩欧美国产综合| 黄色成年视频| 亚洲AV无码乱码在线观看代蜜桃| 99久视频| 亚洲Aⅴ无码专区在线观看q| 国产啪在线| 亚洲国产欧美国产综合久久 | 波多野结衣爽到高潮漏水大喷| 91精品久久久久久无码人妻| 女人18一级毛片免费观看| 精品一区二区久久久久网站| 国产在线小视频| 日本免费新一区视频| 亚洲一道AV无码午夜福利| 日本精品αv中文字幕| 国产无码在线调教| 免费看的一级毛片| 一本大道香蕉中文日本不卡高清二区| 又爽又大又光又色的午夜视频| 激情午夜婷婷| 综合色婷婷| 美女一区二区在线观看| 国产91精品最新在线播放| 日本成人福利视频| 伊人蕉久影院| 国产精品免费久久久久影院无码| 国产麻豆永久视频| 亚洲男人的天堂在线观看| 欧美性爱精品一区二区三区| 欧美一级一级做性视频| 日韩欧美国产另类| 成人国产精品一级毛片天堂| 98超碰在线观看| 99re66精品视频在线观看| 狠狠做深爱婷婷久久一区| 久久综合五月婷婷| 黄色成年视频| 亚洲国产一区在线观看| 欧美亚洲国产视频| 欧美中日韩在线| 国产成人无码AV在线播放动漫| 天堂网国产| 日韩美毛片| 亚洲浓毛av| 91亚洲免费| 亚洲an第二区国产精品|