




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、中南大學信息科學與工程學院實驗報告姓名: 安磊 班級: 計科0901 學號: 指導老師: 宋虹 目錄課程設計內容 - 3uC/OS操作系統簡介 - 3uC/OS操作系統的組成 - 3uC/OS操作系統功能作用 - 4uC/OS文件系統的建立 - 6文件系統設計的原則 - 6文件系統的層次結構和功能模塊 - 6文件系統的詳細設計 - 8文件系統核心代碼 - 9課程設計感想 - 11附錄 - 12課程設計內容在uC/OS操作系統中增加一個簡單的文件系統。 要求如下:(1) 熟悉并分析uc/os操作系統(2) 設計并實現一個簡單的文件系統(3) 可以是存放在內存的虛擬文件系統,也可以是存放在磁盤的實
2、際文件系統(4) 編寫測試代碼,測試對文件的相關操作:建立,讀寫等課程設計目的操作系統課程主要講述的內容是多道操作系統的原理與技術,與其它計算機原理、編譯原理、匯編語言、計算機網絡、程序設計等專業課程關系十分密切。本課程設計的目的綜合應用學生所學知識,建立系統和完整的計算機系統概念,理解和鞏固操作系統基本理論、原理和方法,掌握操作系統開發的基本技能。IuC/OS操作系統簡介C/OS-II是一種可移植的,可植入ROM的,可裁剪的,搶占式的,實時多任務操作系統內核。它被廣泛應用于微處理器、微控制器和數字信號處理器。C/OS 和C/OS-II 是專門為計算機的嵌入式應用設計的, 絕大部分代碼是用C語
3、言編寫的。CPU 硬件相關部分是用匯編語言編寫的、總量約200行的匯編語言部分被壓縮到最低限度,為的是便于移植到任何一種其它的CPU 上。用戶只要有標準的ANSI 的C交叉編譯器,有匯編器、連接器等軟件工具,就可以將C/OS-II嵌入到開發的產品中。C/OS-II 具有執行效率高、占用空間小、實時性能優良和可擴展性強等特點, 最小內核可編譯至 2KB 。C/OS-II 已經移植到了幾乎所有知名的CPU 上。嚴格地說uC/OS-II只是一個實時操作系統內核,它僅僅包含了任務調度,任務管理,時間管理,內存管理和任務間的通信和同步等基本功能。沒有提供輸入輸出管理,文件系統,網絡等額外的服務。但由于u
4、C/OS-II良好的可擴展性和源碼開放,這些非必須的功能完全可以由用戶自己根據需要分別實現。uC/OS-II目標是實現一個基于優先級調度的搶占式的實時內核,并在這個內核之上提供最基本的系統服務,如信號量,郵箱,消息隊列,內存管理,中斷管理等。uC/OS操作系統的組成C/OS-II可以大致分成核心、任務處理、時間處理、任務同步與通信,CPU的移植等5個部分。如下圖:每個部分具體作用1) 核心部分(OSCore.c) 是操作系統的處理核心,包括操作系統初始化、操作系統運行、中斷進出的前導、時鐘節拍、任務調度、事件處理等多部分。能夠維持系統基本工作的部分都在這里。2) 任務處理部分(OSTask.c
5、) 任務處理部分中的內容都是與任務的操作密切相關的。包括任務的建立、刪除、掛起、恢復等等。因為C/OS-II是以任務為基本單位調度的,所以這部分內容也相當重要。3) 時鐘部分(OSTime.c) C/OS-II中的最小時鐘單位是timetick(時鐘節拍)。任務延時等操作是在這里完成的。4) 任務同步和通信部分 為事件處理部分,包括信號量、郵箱、郵箱隊列、事件標志等部分;主要用于任務間的互相聯系和對臨界資源的訪問。5) 與CPU的接口部分 是指C/OS-II針對所使用的CPU的移植部分。由于C/OS-II是一個通用性的操作系統,所以對于關鍵問題上的實現,還是需要根據具體CPU的具體內容和要求作
6、相應的移植。這部分內容由于牽涉到SP等系統指針,所以通常用匯編語言編寫。主要包括中斷級任務切換的底層實現、任務級任務切換的底層實現、時鐘節拍的產生和處理、中斷的相關處理部分等內容。uC/OS操作系統功能作用任務管理uC/OS-II 中最多可以支持64 個任務,分別對應優先級063,其中0 為最高優先級。63為最低級,系統保留了4個最高優先級的任務和4個最低優先級的任務,所有用戶可以使用的任務數有56個。uC/OS-II提供了任務管理的各種函數調用,包括創建任務,刪除任務,改變任務的優先級,任務掛起和恢復等。系統初始化時會自動產生兩個任務:一個是空閑任務,它的優先級最低,該任務僅給一個整形變量做
7、累加運算;另一個是系統任務,它的優先級為次低,該任務負責統計當前cpu的利用率。時間管理uC/OS-II的時間管理是通過定時中斷來實現的,該定時中斷一般為10毫秒或100毫秒發生一次,時間頻率取決于用戶對硬件系統的定時器編程來實現。中斷發生的時間間隔是固定不變的,該中斷也成為一個時鐘節拍。uC/OS-II要求用戶在定時中斷的服務程序中,調用系統提供的與時鐘節拍相關的系統函數,例如中斷級的任務切換函數,系統時間函數。內存管理在ANSI C中是使用malloc和free兩個函數來動態分配和釋放內存。但在嵌入式實時系統中,多次這樣的操作會導致內存碎片,且由于內存管理算法的原因,malloc和free
8、的執行時間也是不確定。uC/OS-II中把連續的大塊內存按分區管理。每個分區中包含整數個大小相同的內存塊,但不同分區之間的內存塊大小可以不同。用戶需要動態分配內存時,系統選擇一個適當的分區,按塊來分配內存。釋放內存時將該塊放回它以前所屬的分區,這樣能有效解決碎片問題,同時執行時間也是固定的。任務間通信與同步對一個多任務的操作系統來說,任務間的通信和同步是必不可少的。uC/OS-II中提供了4種同步對象,分別是信號量,郵箱,消息隊列和事件。所有這些同步對象都有創建,等待,發送,查詢的接口用于實現進程間的通信和同步。任務調度uC/OS-II 采用的是可剝奪型實時多任務內核。可剝奪型的實時內核在任何
9、時候都運行就緒了的最高優先級的任務。uC/os-II的任務調度是完全基于任務優先級的搶占式調度,也就是最高優先級的任務,一旦處于就緒狀態,則立即搶占正在運行的低優先級任務的處理器資源。為了簡化系統設計,uC/OS-II規定所有任務的優先級不同,因為任務的優先級也同時唯一標志了該任務本身IIuC/OS文件系統的建立uC/OS操作系統本身是沒有自帶文件系統的。但可由用戶自行設計。文件系統設計的原則:1.簡潔性現有的比較完善的文件系統功能齊全、對系統資源要求較高,而我們所需要的這個嵌入式文件系統是嵌入式平臺的一個中間件,要求簡潔高效可靠。為此我們在設計過程中借鑒了MS-DOS的FAT16文件系統格式
10、的目錄形式進行文件管理,打開文件數據結構則采用了類似于UNIX系統文件表的方式,為每一個打開文件設置了一個數據結構指針FS_FILE,使得用戶接口簡潔明了。2.多設備驅動支持考慮到應用的廣泛性和存儲介質的多樣性,要求我們在進行設計文件系統時必須考慮對多種存儲介質的兼容性。整個系統采用模塊化分層設計的原則和面向對象的實現方法,使得用戶可以通過統一的頂層應用程序接口方便地對各種存儲介質進行文件操作。利用本文件系統可以管理不同的存儲介質,可以同時訪問不同的硬件。3. 多操作系統支持文件系統的開發是基于ucos ii,在設計開發過程中,考慮到以后對多操作系統的支持,OS接口模塊設計為動態可變,當文件系
11、統應用于其它操作系統時,只需將OS接口模塊中的操作系統信息變為新的操作系統即可。4. 可靠性由于嵌入式系統的數據資源的重要性,要求存儲數據的物理介質必須具有很高的穩定性,可是我們知道一些人為或外在的因素可能會導致介質的損壞,從而造成數據的缺失,所以我們要盡可能提高文件系統可靠性。文件系統的層次結構和功能模塊嵌入式文件系統由于功能和作用與普通桌面操作系統的文件系統不同,導致了二者在體系結構上具有很大的差異性。在普通桌面操作系統中,文件系統不僅要管理文件,提供文件系統調用API,還要管理各種設備,支持對設備和文件操作的一致性。在嵌入式文件系統中,這種規則發生了很大的變化。在某些情況下,嵌入式系統可
12、以針對特殊的目的來進行定制,對嵌入式操作系統的系統功能規整性、可伸縮性及其靈活性提出了更高的要求。基于以上的考慮,我們采用了如上圖所示的嵌入式文件系統體系結構,該結構定義的文件系統從上到下有三個層次:第一層為API層、第二層為中間轉換層、下層為介質驅動層。API層API層是文件系統和用戶應用程序之間的接口,它有一個標準C函數庫,其中包含有諸如打開文件(FS_FOPEN)、寫文件(FS_FWRITE)等函數。本層的功能是將用戶調用傳送給中間轉換層。這是整個系統設計的核心,也是嵌入式文件系統中用戶唯一可見的部分 POSIX中文件系統的標準系統調用全部在該部分中得以實現。中間轉換層中間轉換層要為文件
13、系統的實現提供與硬件無關的統一接口,是文件系統結構規整性的基礎。中間轉換層包含有文件系統子層及邏輯塊子層,其中文件系統子層將文件操作解釋到邏輯塊子層,然后文件系統調用邏輯塊子層并根據不同的設備定義出相應的設備驅動程序;邏輯塊子層主要是同步對設備驅動程序的訪問,向上提供友好界面。介質驅動層介質驅動層是訪問硬件的最低端的程序,該程序的結構要能夠便于實現對硬件的訪問。本層的功能主要是完成對介質的訪問。本層的重要任務就是提供統一的設備驅動程序接口。根據文件系統的層次結構,可以將該文件系統分成四大功能塊:API接口模塊、中間轉換模塊、磁盤分區模塊、設備驅動模塊。如上圖:API接口模塊主要完成文件的基本操
14、作,包含有文件的生成、刪除、打開、關閉、文件讀、文件寫等。中間轉換模塊主要完成對存取權限的檢查、介質的選擇、邏輯到物理的轉換。磁盤分區模塊主要完成對幾個主要數據結構的初始化,設置文件系統的總體分區信息以及每個分區的幾部分:空閑塊管理、引導區、FAT區、文件存儲區等。設備驅動模塊完成存儲介質的驅動程序,包含有一個驅動程序函數表和介質讀、介質寫、檢查狀態、執行特定命令等驅動程序。文件系統的詳細設計文件系統組織方式文件系統邏輯組織為流式文件,物理組織為連續文件。用戶對于流式文件的訪問是以字節為單位的。每個文件的內部有一個讀寫指針,通過系統調用可以將該指針固定到文件的某一個位置處,以后的讀寫系統調用將
15、從該指針所確定的位置處開始。而用于保存文件的物理設備是劃分為塊頁的,文件的物理結構就是要確定如何將字節保存在存儲介質中。所以說文件的物理組織形式對于文件系統的性能有著較為直接的影響,所以我們在進行文件的物理組織選擇時比較慎重。結合我們系統的實際應用情況,我們決定文件的物理組織方式采用順序結構,這是因為我們的嵌入式應用環境要求實時性高,采集到的數據一旦以文件的方式存儲在介質上很少進行改動,也即文件的長度變化不大,所以我們將邏輯文件的信息存放在外存的連續編號的物理塊中。文件和文件控制塊FCB為了實現對于文件的管理,系統需要掌握一組有關文件的描述信息,例如文件的名稱、文件的地址、文件的建立曰期等等,
16、這些信息組合在一起構成一個數據結構,在這里我們稱之為文件控制塊FCB(File Control Block)。FCB是文件存在的標志,其中記錄著系統對于文件進行管理所需要的全部信息,FCB所包含內容如圖2所示。每一個文件都有一個文件控制塊,它們被保存于外存空間,當系統欲訪問一個文件時,應當能夠根據文件名字找到它所對應的文件控制塊,然后根據文件控制塊中的文件位置信息找到該文件具體所存放的區域。文件描述符文件描述符由基本文件名和擴展文件名兩部分構成,二者以圓點分開。文件名由1-8個字符構成,擴展名由1-3個字符構成。分別占據FCB中的00H- 07H和08H-0AH兩部分。在FCB中,文件名和擴展
17、名是左對齊放置的,剩余部分填入空格碼。當進行文件刪除時,在文件目錄記錄項的第一字節中放入 E5H,表示該記錄項是空項。從公平沒有使用過的記錄項的第一字節中寫入的是00H,剛剛格式化的根文件目錄或剛剛生成的子文件目錄的未使用文件目錄記錄項的開頭寫入的均是00H。這個00H在文件進行檢索時特別有用,主要是用來確定搜索到文件目錄的什么區域就可以不用再繼續搜索了。例如,當文件檢索中沒有00H時,必須對全文件目錄區進行檢索,而一旦遇到有00H的場合,檢索便宣告結束,這樣可以大大縮短檢索文件的時間,提高了文件檢索的效率。對文件的主要操作文件系統的功能是通過一系列對文件的操作實現的。為此,系統提供給用戶一整
18、套系統調用,用以完成創建、打開、讀、寫、關閉、刪除文件等項工作。對應的函數分別為:FS_FOPEN()、FS_REMOVE()、FS_FCLOSE()、FS_FREAD()和FS_FWRITE(),各函數均通過驅動模塊來實現,具體的代碼此處不在羅列。文件的保護機制由于文件系統保存著用戶非常重要的信息,因而如何保護信息、防止未授權使用就是所有文件系統必須要解決的重要問題之一。但系統中的全部信息又不能完全成為私有,還必須進行文件共享,以提高資源的利用率和方便用戶使用。文件共享和保密是一個問題的兩個方面。對文件的保護保密是由對文件的共享要求起的。在非共享環境中,不需要再做什么保護,實際上它已經是極端
19、的完全保護情況;相反,另一種極端情況則是完成共享,而不做任何保護。這兩種情況都缺乏實用意義,一般用法是有控制的進行文件共享。保護機制通過限制文件的存取類型來實現受控制共享。允許或禁止對文件的存取受多種因素的限制,如用戶的身份、文件本身的性質、對文件所要進行的存取類型等。常用的保護機制有命名、口令、存取控制、密碼等,對文件的保護必須要根據實際需要和實現的可能性來選擇合適的方法。由于本文件系統主要是以FAT文件系統為基礎來進行設計的,所以在對文件進行保護和共享方面同樣也有FAT文件系統所具有的不足,沒有一套完整的文件保護機制來完成對文件的保護,安全特性只能通過共享權限來加以實現。文件系統核心代碼截
20、圖各部分代碼文件功能解釋api_dir.cPurpose: 對 文件系統的目錄 的各種操作,包括顯示目錄建立,刪除等操作的函數api_in.cPurpose: FS_FRead()函數,從文件中讀取數據api_misc.cPurpose: 對 文件 的各種的操作函數,打開文件,關閉文件,刪除文件,文件系統初始化api.out_.cPurpose: 向一個文件寫入數據,FS_FWrite()函數app.c:Purpose:.主函數.1.向系統申請一段內存空間2.fs.capp_cfg.cPorpose:定義申請空間的程序的優先級(pid) 定義程序開始時的棧的大小clibmisc.cPurpos
21、e:由于該文件系統所用的c庫文件并非c的運行庫函數,而是自己的庫函數包括字符串的復制,比較,測量長度,二進制與字符串的相互轉化,由src所指內存區域復制count個字節到dest所指內存區域.大小寫轉換函數等fs.cPurpose:.文件操作測試函數.包括函數:向某個文件(*name)寫(write_file)數據(*txt)_dump_file(const char *name)利用文件系統讀取一個文件fs_api.hPurpose:聲明file_system的全局函數,定義各種宏fs_cong.hPropose:此文件包含該文件系統的所有設置fs_dev.hPurpose: 定義驅動器驅動
22、的結構FS_device_type(名稱,讀取參數(id,塊,緩沖區), 寫入參數(id,塊,緩沖區),設備控制函數)fs_fsl.hPurpose:定義文件系統層的結構FS_fsl_typefs_info.cPurpose:定義文件系統層功能表,設備驅動程序函數表,邏輯塊層緩存,其中的_Fs_devinfo結構可以簡述該文件系統是建立在何種設備之上的fs_int.hPurpose:定義內部參數,這些參數是在整個文件系統層的不同層均有使用fs_os.hPurpose:定義文件系統的系統層的函數聲明(頭文件)fs_port.hPurpose:體系結構定義了文件系統的依賴這個頭文件定義了幾乎所有的
23、基本的數據類型(INT8U等)和宏,該參數可以根據你的編譯器和cpu的種類而改變fs_x_ucos_ii.cPurpose:對文件句柄的上鎖和解鎖操作,對文件option的上鎖和解鎖操作對目錄的句柄的上鎖和解鎖操作/*filehandle是一個數字,在文件打開的時候由操作系統分配給一個文件。當訪問文件的時候操作系統使用內部的文件句柄,。一塊特殊的區域的內存被預留給文件句柄,這個區域的大小決定了有多少文件可以同時打開。在DOS和Windows,你可以設置最大數量的打開的文件*/ide_x_hw.hPurpose:Segger SED137XE 板的硬件層是一個CF卡,在IDE模式P8.P9.P1
24、0.P7os_cfg.hPurpose:對系統的宏定義*name:指向文件名的指針myfile:文件的物理地址.myfile=FS_FOpen(name,r);int x:對應地址的字符 x = FS_FRead(mybuffer,1,sizeof(mybuffer)-1,myfile)FS_FClose(myfile);關閉文件UCOS-II :ucos的源代碼UCOS-II-PORT:移植系統時需要修改的部分III.課程設計感想通過本次課程設計,使我對uC/OS操作系統有了更深入的理解。操作系統是一門實踐性較強的課程,為了學好這門課程,必須在掌握理論知識的同時,加強上機實踐。一個人的力量是
25、有限的,要想把課程設計做的更好,就要學會參考一定的資料,吸取別人的經驗,讓自己和別人的思想有機的結合起來,得出屬于你自己的靈感。程序的編寫需要有耐心,有些事情看起來很復雜,但問題需要一點一點去解決,分析問題,把問題一個一個劃分,劃分成小塊以后就逐個去解決。再總體解決大的問題。這樣做起來不僅有條理也使問題得到了輕松的解決。在這個過程中,我也曾經因為實踐經驗的缺乏失落過,也曾經仿真成功而熱情高漲。生活就是這樣,汗水預示著結果也見證著收獲。勞動是人類生存生活永恒不變的話題。雖然這只是一次的極簡單的課程制作,可是平心而論,也耗費了我不少的心血,這就讓我不得不佩服開發技術的前輩,才意識到老一輩對我們社會
26、的付出,為了人們的生活更美好,他們為我們社會所付出多少心血啊!對我而言,知識上的收獲重要,精神上的豐收更加可喜。讓我知道了學無止境的道理。我們每一個人永遠不能滿足于現有的成就,人生就像在爬山,一座山峰的后面還有更高的山峰在等著你。挫折是一份財富,經歷是一份擁有。這次課程設計必將成為我人生旅途上一個非常美好的回憶!通過這次的課程設計我對于專業課的學習有了更加深刻的認識,以為現在學的知識用不上就加以怠慢,等到想用的時候卻發現自己的學習原來是那么的不扎實。以后努力學好每門專業課,讓自己擁有更多的知識,才能解決更多的問題!IV.附錄因為本次課程設計為小組合作完成。我只負責系統到硬件的代碼編寫。現附上代
27、碼如下:fs_dev.h/* Micrium, Inc.* 949 Crestview Circle* Weston, FL 33327-1848* uC/FS* (c) Copyright 2002, Micrium, Inc.* All rights reserved.*-File : fs_dev.hPurpose : Define structures for Device Drivers-Known problems or limitations with current version-None.-END-OF-HEADER-*/#ifndef _FS_DEV_H_#define
28、_FS_DEV_H_/* Global data types*/typedef struct FS_FARCHARPTR name; int (*dev_status)(FS_u32 id); int (*dev_read)(FS_u32 id, FS_u32 block, void *buffer); int (*dev_write)(FS_u32 id, FS_u32 block, void *buffer); int (*dev_ioctl)(FS_u32 id, FS_i32 cmd, FS_i32 aux, void *buffer); FS_device_type;#endif -
29、fs_info.h/* Micrium, Inc.* 949 Crestview Circle* Weston, FL 33327-1848* uC/FS* (c) Copyright 2001 - 2003, Micrium, Inc.* All rights reserved.*-File : fs_conf.cPurpose : File system configurable global data Unless you are going to add own device drivers, or you would like to modify e.g. order in the
30、device table, you do not have to modify this file. Usually all configuration can be made in fs_conf.h.-Known problems or limitations with current version-None.-END-OF-HEADER-*/* #include Section*/#include fs_port.h#include fs_dev.h#include fs_api.h#include fs_fsl.h#include fs_int.h#include fs_conf.h
31、/* Externals*/* File System Layer Function Tables*/* FAT function table */#ifdef FS_USE_FAT_FSL extern const FS_fsl_type FS_fat_functable;#endif /* FS_USE_FAT_FSL */* Device Driver Function Tables* If you add an own device driver, you will have to add an external for its function table here.*/* RAMD
32、ISK_DRIVER function table */#if FS_USE_RAMDISK_DRIVER extern const FS_device_type FS_ramdevice_driver;#endif /* FS_USE_RAMDISK_DRIVER */* WINDRIVE_DRIVER function table */#if FS_USE_WINDRIVE_DRIVER extern const FS_device_type FS_windrive_driver;#endif /* FS_USE_WINDRIVE_DRIVER */* SMC_DRIVER functio
33、n table */#if FS_USE_SMC_DRIVER extern const FS_device_type FS_smcdevice_driver;#endif /* FS_USE_SMC_DRIVER */* MMC_DRIVER function table */#if FS_USE_MMC_DRIVER extern const FS_device_type FS_mmcdevice_driver;#endif /* FS_USE_SMC_DRIVER */#if FS_USE_IDE_DRIVER /extern const FS_device_type FS_idedev
34、ice_driver;/#endif /* FS_USE_IDE_DRIVER */#if FS_USE_FLASH_DRIVER extern const FS_device_type FS_flashdevice_driver;#endif /* FS_USE_FLASH_DRIVER */* Local variables */* Logical Block Layer Cache* If FS_USE_LB_READCACHE is enabled, then the buffer definition for each media is done here according to
35、the settings in fs_conf.h.*/#if FS_USE_LB_READCACHE /* RAMDISK cache settings. There is no cache required for RAM. */ #define FS_CACHEINFO_RAMDISK_DRIVER 0, /* Windrive cache settings. The driver does have its own cache. Therefore we never use LB read cache for it. */ #define FS_CACHEINFO_WINDRIVE_D
36、RIVER 0, /* FLASH cache settings. There is no read cache required for flash. */ #define FS_CACHEINFO_FLASH_DRIVER 0, /* SmartMedia cache settings */ #ifndef FS_SMC_CACHENUM #define FS_SMC_CACHENUM 0 #endif #if (FS_SMC_CACHENUM) & (FS_USE_SMC_DRIVER) static FS_CACHE_BUFFER _FS_SMC_BuffersFS_SMC_MAXUN
37、ITFS_SMC_CACHENUM; static FS_LB_CACHE _FS_SMC_CacheFS_SMC_MAXUNIT = #if (FS_SMC_MAXUNIT=1) FS_SMC_CACHENUM, 0, &_FS_SMC_Buffers00 ; #elif (FS_SMC_MAXUNIT=2) FS_SMC_CACHENUM, 0, &_FS_SMC_Buffers00, FS_SMC_CACHENUM, 0, &_FS_SMC_Buffers10 ; #else #error Please define _FS_SMC_Cache for desired number of
38、 units #endif #define FS_CACHEINFO_SMC_DRIVER &_FS_SMC_Cache0, #else #define FS_CACHEINFO_SMC_DRIVER 0, #endif /* MMC/SD cache settings */ #ifndef FS_MMC_CACHENUM #define FS_MMC_CACHENUM 0 #endif #if (FS_MMC_CACHENUM) & (FS_USE_MMC_DRIVER) static FS_CACHE_BUFFER _FS_MMC_BuffersFS_MMC_MAXUNITFS_MMC_C
39、ACHENUM; static FS_LB_CACHE _FS_MMC_CacheFS_MMC_MAXUNIT = #if (FS_MMC_MAXUNIT=1) FS_MMC_CACHENUM, 0, &_FS_MMC_Buffers00 ; #elif (FS_MMC_MAXUNIT=2) FS_MMC_CACHENUM, 0, &_FS_MMC_Buffers00, FS_MMC_CACHENUM, 0, &_FS_MMC_Buffers10 ; #else #error Please define _FS_MMC_Cache for desired number of units #en
40、dif #define FS_CACHEINFO_MMC_DRIVER &_FS_MMC_Cache0, #else #define FS_CACHEINFO_MMC_DRIVER 0, #endif /* IDE cache settings */ #ifndef FS_IDE_CACHENUM #define FS_IDE_CACHENUM 0 #endif #if (FS_IDE_CACHENUM) & (FS_USE_IDE_DRIVER) static FS_CACHE_BUFFER _FS_IDE_BuffersFS_IDE_MAXUNITFS_IDE_CACHENUM; stat
41、ic FS_LB_CACHE _FS_IDE_CacheFS_IDE_MAXUNIT = #if (FS_IDE_MAXUNIT=1) FS_IDE_CACHENUM, 0, &_FS_IDE_Buffers00 ; #elif (FS_IDE_MAXUNIT=2) FS_IDE_CACHENUM, 0, &_FS_IDE_Buffers00, FS_IDE_CACHENUM, 0, &_FS_IDE_Buffers10 ; #else #error Please define _FS_IDE_Cache for desired number of units #endif #define F
42、S_CACHEINFO_IDE_DRIVER &_FS_IDE_Cache0, #else #define FS_CACHEINFO_IDE_DRIVER 0, #endif#else #define FS_CACHEINFO_RAMDISK_DRIVER #define FS_CACHEINFO_WINDRIVE_DRIVER #define FS_CACHEINFO_SMC_DRIVER #define FS_CACHEINFO_MMC_DRIVER #define FS_CACHEINFO_IDE_DRIVER #define FS_CACHEINFO_FLASH_DRIVER #end
43、if /* FS_USE_LB_READCACHE */* Global variables */* _FS_devinfo* This data structure does tell the file system, which file system layer (currently FAT only) and device driver (e.g. SmartMedia or RAM disk) is used for which device name. If you do not specify the device name in an file system API call,
44、 the first entry in this table will be used.*/#ifndef FS_DEVINFO #if FS_USE_SMC_DRIVER #define FS_DEVINFO_DEVSMC smc, &FS_fat_functable, &FS_smcdevice_driver, FS_CACHEINFO_SMC_DRIVER 0 , #else #define FS_DEVINFO_DEVSMC #endif #if FS_USE_MMC_DRIVER #define FS_DEVINFO_DEVMMC mmc, &FS_fat_functable, &FS_mmcdevice_driver, FS_CACHEINFO_MMC_DRIVER 0 , #e
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《布藝花》教學課件
- 《新時代大學生勞動教育理論與實踐》1.6【拓展閱讀】“五一國際勞動節”的由來
- 兒童心臟疾病的診斷與治療技術
- 妊娠期高血壓疾病病人護理
- 喉癌病例討論護理
- 銀行管理人員培訓匯報
- 構建學生心理健康教育長效機制保
- 2025年城市更新視角下歷史文化街區保護與城市文化軟實力提升研究報告
- 高中信息學競賽數學試卷
- 甘肅靜寧2024中考數學試卷
- I-MR(單值-移動極差)控制圖
- 《經皮椎體成形術》課件
- 《鄒忌諷齊王納諫》比較閱讀82篇(歷年中考語文文言文閱讀試題匯編)(含答案與翻譯)(截至2024年)
- 工業生產設備投資資金使用計劃
- 政府應急管理與協調機制
- 數字文化空間創意設計-深度研究
- 老年人慢性病管理方案
- 除甲醛施工方案
- 三、油氣回收設備組成
- AI智能在小學音樂課堂中的應用研究
- 智能制造全過程造價咨詢服務方案
評論
0/150
提交評論