基于ARM平臺和Linux2_6內(nèi)核的SD卡驅(qū)動設計_第1頁
基于ARM平臺和Linux2_6內(nèi)核的SD卡驅(qū)動設計_第2頁
基于ARM平臺和Linux2_6內(nèi)核的SD卡驅(qū)動設計_第3頁
基于ARM平臺和Linux2_6內(nèi)核的SD卡驅(qū)動設計_第4頁
基于ARM平臺和Linux2_6內(nèi)核的SD卡驅(qū)動設計_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Computer Knowledge and Technology 電腦知識與技術(shù)計算機工程應用技術(shù)本欄目責任編輯:梁書第6卷第28期(2010年10月基于ARM 平臺和Linux2.6內(nèi)核的SD 卡驅(qū)動設計魯亞東,程勇(山東科技大學,山東青島266510摘要:主要分析SD 卡協(xié)議,Linux 系統(tǒng)驅(qū)動程序,S3C2440芯片的SD 卡接口。整體上詳細給出Linux2.6內(nèi)核下,基于SD 總線協(xié)議的SD 卡驅(qū)動程序的具體設計以及注意事項。關(guān)鍵詞:ARM ;嵌入式Linux ;SD 卡;設備驅(qū)動;S3C2440中圖分類號:TP316文獻標識碼:A 文章編號:1009-3044(201028-81

2、31-02The Design of SD Driver Based on ARM and Kernel of Linux2.6LU Ya-dong,CHENG Yong(Shandong University of Science and Technology,Qingdao 266510,ChinaAbstract:The main analysis of SD card agreement,Linux system drivers,and SD card interface of S3C2440.For more,on the whole give a detailed design o

3、f SD card driver in line with the SD card bus driver and Linux2.6kernel as well as the specific design considerations.Key words:ARM;embeded linux;SD card;device driver;S3C2440SD 存儲卡(Secure Digital Memory Card是基于Flash 技術(shù)的新一代存儲器,具有體積小、容量大、數(shù)據(jù)傳輸快、移動靈活等優(yōu)點,設計它是為了滿足新出現(xiàn)的多媒體電子消費產(chǎn)品對于保密,容量,性能和應用環(huán)境的要求。是許多便攜式電子儀

4、器理想的外部存儲介質(zhì),在數(shù)碼相機、MP3、手機,PDA 與大容量存儲設備中被廣泛使用。隨著處理器能力的提升以及系統(tǒng)復雜度的提高,更多嵌入式系統(tǒng)選擇使用操作系統(tǒng)來提高開發(fā)速度,降低開發(fā)風險和提高系統(tǒng)的穩(wěn)定性.Linux 操作系統(tǒng)具有內(nèi)核小,開源,穩(wěn)定和可裁剪等優(yōu)點,在嵌入式設備中得到了廣泛的應用。1SD 概述和協(xié)議SD 卡的引腳具有雙重功能,既可工作在SD 模式,也可工作在SPI 模式。SD 模式數(shù)據(jù)通信是基于以起始位開始、以停止位結(jié)束的數(shù)據(jù)位流。SPI 模式數(shù)據(jù)是面向字節(jié)的。每個命令或數(shù)據(jù)塊都由8位的字節(jié)組。SD 卡從SD 模式中喚醒。如果CS 信號在復位命令(CMD0被接收期間被拉低,并進入

5、空閑模式,如果認為是SD 模式被需求則不會響應此命令,仍在SD 模式下。如果SPI 模式被需求,則卡將會切換到SPI ,且用SPI 模式R1響應。唯一返回SD 模式的方法是進入上電周期。在SPI 模式下,SD 存儲卡協(xié)議狀態(tài)機不被遵守。所有的在SPI 模式下被支持的SD 存儲卡命令總是可用的。不同的模式下,引腳的功能不同。SD 模式多用于對SD 卡讀寫速度要求較高的場合,SPI 模式則是以犧牲讀寫速度換取更好的硬件接口兼容性。ARM9芯片S3C2440的SD 卡通信是基于9管腳的接口(時鐘線,命令線,4個數(shù)據(jù)線和三個電源線,工作在低電壓范圍。2SD 卡驅(qū)動設計2.1SD 卡驅(qū)動分析Linux

6、系統(tǒng)設備主要分為三種類型:字符設備:以比特流形式訪問設備。塊設備:以固定大小的快來訪問設備,每次訪問都是以塊大小的整數(shù)倍進行。網(wǎng)絡設備:處理網(wǎng)絡事務的接口。SD 卡屬于塊設備,因此設計其驅(qū)動是按塊設備類型的驅(qū)動來編寫。Linux 系統(tǒng)空間分為:用戶空間和內(nèi)核空間。驅(qū)動程序工作于系統(tǒng)內(nèi)核空間。在Linux 系統(tǒng)中設備驅(qū)動通過靜態(tài)編譯和動態(tài)加載兩種方式與系統(tǒng)建立連接。由于動態(tài)加載靈活方便,我們使用這種方式設計SD 卡驅(qū)動。在這個過程中我們使用到兩個Linux 系統(tǒng)命令:加載命令inmod,卸載命令rmmod 它們工作于用戶空間,驅(qū)動程序必須實現(xiàn)與之對應的工作于內(nèi)核空間的函數(shù):module_init

7、(void和module_exit(void。要在系統(tǒng)中正確的訪問SD 卡必須在其驅(qū)動加載時注冊SD 卡,這時需要使用系統(tǒng)接口函數(shù):int register_blkdev(unsigned int major,const char *name,struct block_device_op -erations *bdops;當不需要訪問SD 卡時,我們在卸載模塊時,要在系統(tǒng)中注銷SD 卡,這時需要用到系統(tǒng)接口函數(shù):int unregis -ter_blkdev (unsigned int major,const char *name,;其中,major 表示塊設備主設備號;name 表示塊設備名

8、稱;bdops 時一個結(jié)構(gòu)體數(shù)據(jù),定義對設備操作的成員函數(shù)。它的定義如下:struct block_device_operationsint (*open(struct inode*,struct file*;int (*release(struct inode*,struct file*;收稿日期:2010-07-16作者簡介:魯亞東(1986-,男,河南信陽人,山東科技大學,碩士,計算機控制與嵌入式系統(tǒng)專業(yè);程勇(1951-,男,山東泰安人,山東科技大學,教授,研究方向為嵌入式系統(tǒng)與計算機控制。ISSN 1009-3044Computer Knowledge and Technology電

9、腦知識與技術(shù)Vol.6,No.28,October 2010,pp.8131-8132E-mail:kfyj Tel:+86-551-569096356909648131Computer Knowledge and Technology 電腦知識與技術(shù)計算機工程應用技術(shù)本欄目責任編輯:梁書第6卷第28期(2010年10月 (上接第8130頁3Rezavi B.Design of Analog CMOS Integrated CircuitsM.New York,McGran-Hill,2001:514-546.4Roche J,Rahajandraibe W,Zad L,et al.A New

10、 Adaptation Scheme For Low Noise and Fast Settling Phase Locked LoopC.IEEE Midwest Symposium on Circuit and Systems,2008:197-200.5張亞南,解光軍.鎖相環(huán)中一種新型電荷泵結(jié)構(gòu)的設計J.微計算機信息,2008,24(29:271-272.6Larsson P.A 2-1600-Mhz CMOS Clock Recovery PLL with Low-Vdd CapabilityJ.IEEE Journal of Solid-State Circuits,1999,34(

11、12:1951-1960.7Lin Yijing,Sheng Shimin.A Novel Charge Pump in PLLJ.Acta Scientiarum Naturalium Universitatis Pekinensis,2002,38(3:384-386.int (*ioctl(struct inode*,struct file*,unsigned ,unsigned long;int (*check_media_change(kdev_t;int (*revalidate(kdev_t;struct module *owner ;在驅(qū)動程序中,對SD 卡系統(tǒng)軟硬件環(huán)境初始化

12、,需要實現(xiàn)open 函數(shù);在SD 卡訪問結(jié)束時,對于資源的清除,需要實現(xiàn)release函數(shù)。在SD 設備驅(qū)動中占據(jù)主要位置時SD 卡的讀寫功能實現(xiàn)。讀寫功能通常在請求隊列中實現(xiàn),Linux 系統(tǒng)會自動處理每個設備的請求隊列,因此我們注冊設備時應當通知系統(tǒng):這個設備讀寫的請求隊列以及具體函數(shù)的實現(xiàn)。注冊和初始化請求隊列,需要實現(xiàn)系統(tǒng)接口函數(shù):blk_init_queue (request_requeue_t *queue,re -quest_fn_proc *request;完成請求隊列清理工作,需要實現(xiàn)系統(tǒng)接口函數(shù):blk_cleanup_queue (request_requeue_t *q

13、ueue;其中re -quest_requeue_t *queue 為請求隊列;request_fn_proc *request 為請求方法。我們在設計SD 卡時采用中斷方式。這就要求在家中驅(qū)動時要注冊中斷,需要實現(xiàn)系統(tǒng)接口函數(shù):request_irp ;在卸載驅(qū)動時要注銷中斷,需要實現(xiàn)系統(tǒng)接口函數(shù);free_irp 。至此,我們整體上分析整個SD 卡驅(qū)動設計步驟和藥實現(xiàn)函數(shù)。在系統(tǒng)中位SD 卡建立一個對應的設備文件,然后就可以用訪問普通文件的方式,訪問SD 卡上的數(shù)據(jù)信息。2.2SD 卡驅(qū)動程序流程圖1為SD 卡驅(qū)動程序流程圖。3結(jié)束語本文主要介紹了ARM9芯片S3C2440的SD 卡接口,SD 卡的協(xié)議,SD 卡的操作和Linux2.6內(nèi)核驅(qū)動程序設計接口。然后給出了在ARM 和Linux2.6內(nèi)核下,SD 卡驅(qū)動程序的具體設計與實現(xiàn)方法和流程。參考文獻:1孫天澤,袁文菊.嵌入式設計及Linux 驅(qū)動開發(fā)指南基于A

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論