亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2011-06-22 08:19:28陳正江
        關(guān)鍵詞:PC機磁盤寄存器

        陳正江

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

        陳正江(碩士研究生),主要研究領(lǐng)域為測控技術(shù)與儀器。

        引 言

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

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

        1 SD卡簡要介紹

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

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

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

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

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

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

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

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

        1.2 工作模式

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

        1.3 SD模式下的Command與Response介紹

        Command和Response都是在CMD線上串行傳輸?shù)?,只是傳輸?shù)姆较虿灰粯印?/p>

        Command代表著一次主機到從卡操作的開始,是從主機到單卡或所有卡。

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

        1.3.1Command介紹

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

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

        ② ALL_SEND_CⅠD(CMD2):向所有卡詢問 CⅠD號碼,響應(yīng)類型為R2。

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

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

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

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

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

        ⑧ READ_SⅠNGLE_BLOCK(CMD17),READ_MULTⅠPLE_BLOCK(CMD18):塊的讀命令,前者讀單塊,后者讀多塊,響應(yīng)類型都是R1。

        ⑨ WRⅠTE_SⅠNGLE_BLOCK(CMD24),WRⅠTE_MULTⅠPLE_BLOCK(CMD25):塊的寫命令,前者寫單塊,后者寫多塊,響應(yīng)類型都是R1。

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

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

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

        1.3.2Response介紹

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

        R1為普通命令的響應(yīng),而R1b與R1唯一的區(qū)別就是R1b代表該卡接到命令時數(shù)據(jù)線會處于忙態(tài)。R2用于卡向主機返回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機上進行備份和處理。

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

        目前FAT文件系統(tǒng)有FAT12、FAT16和FAT32三種類型,它們是由FAT表中每個FAT項所占長度來分類的,即它們的FAT表中每個FAT項占用的位數(shù)分別為12、16和32位[4]。由于FAT12文件系統(tǒng)能支持的最大分區(qū)容量只有8MB,再加上不能支持長文件名,現(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簡介

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

        圖2 FatFs模塊

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

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

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

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

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

        ⑤f_mkfs:格式化磁盤。

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

        ⑦f_unlink:刪除一個文件或一個目錄。

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

        3.1 軟硬件平臺

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

        3.2 軟件實現(xiàn)

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

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

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

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

        (2)讀寫函數(shù)

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

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

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

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

        ① 將多塊分成多個單塊來讀寫;

        ② 直接使用多塊讀寫CMD完成多塊的讀寫。

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

        3.2.2diskI/O函數(shù)

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

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

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

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

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

        (3)磁盤讀寫函數(shù)disk_read/disk_write

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

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

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

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

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

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

        結(jié) 語

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

        [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.

        猜你喜歡
        PC機磁盤寄存器
        Lite寄存器模型的設(shè)計與實現(xiàn)
        解決Windows磁盤簽名沖突
        電腦愛好者(2019年2期)2019-10-30 03:45:31
        修改磁盤屬性
        基于PC機與單片機的多機通信技術(shù)及抗干擾方法
        基于三菱FXPLC的感應(yīng)淬火機床與PC機的串行通信實現(xiàn)
        分簇結(jié)構(gòu)向量寄存器分配策略研究*
        磁盤組群組及iSCSI Target設(shè)置
        VC.NET下實現(xiàn)dsPIC單片機與PC機的通信
        電子制作(2017年23期)2017-02-02 07:16:47
        創(chuàng)建VSAN群集
        高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
        日日摸日日碰人妻无码老牲| 护士的小嫩嫩好紧好爽| 色妞色视频一区二区三区四区 | 国产人妻人伦精品1国产| 秋霞鲁丝片av无码| 亚洲乱码少妇中文字幕| 少妇久久一区二区三区| 美女人妻中出日本人妻| 国产精品国产精品国产专区不卡| 日本丰满熟妇videossex8k| 天天躁日日躁狠狠躁人妻 | 久久中文字幕日韩无码视频| 亚洲男人在线天堂av| 久久免费看的少妇一级特黄片| 国产大片内射1区2区| 欧美人与动牲交a欧美精品| 综合网在线视频| 免费一区二区三区av| 久久精品一区午夜视频| 被三个男人绑着躁我好爽视频| 免费人成视频在线观看网站| 国产av专区一区二区三区 | 青青草是针对华人绿色超碰| 日韩综合无码一区二区| 中文字幕人妻丝袜乱一区三区| 一区二区无码中出| 亲少妇摸少妇和少妇啪啪| 精品国产亚洲av高清日韩专区 | 亚洲国产综合久久精品| 欧美xxxxx高潮喷水| 中文字幕av无码一区二区三区| 中文字幕国产91| 亚洲一区二区三区ay| 人妻av中文字幕久久| 天天弄天天模| 99国产精品丝袜久久久久| 日本久久精品国产精品| 丰满人妻一区二区三区蜜桃| 亚洲一区二区三区成人网站| 尤物蜜芽福利国产污在线观看 | 亚洲自拍偷拍色图综合|