嵌入式操作系統(tǒng)實驗報告_第1頁
嵌入式操作系統(tǒng)實驗報告_第2頁
嵌入式操作系統(tǒng)實驗報告_第3頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、中南大學(xué)信息科學(xué)與工程學(xué)院實驗報告安磊班級: 計科0901 學(xué)號:0909090310指導(dǎo)老師:宋虹目錄課程設(shè)計容 3uC/OS操作系統(tǒng)簡介 3uC/OS操作系統(tǒng)的組成 3uC/OS操作系統(tǒng)功能作用4uC/OS文件系統(tǒng)的建立 6文件系統(tǒng)設(shè)計的原則 6文件系統(tǒng)的層次結(jié)構(gòu)和功能模塊 6文件系統(tǒng)的詳細(xì)設(shè)計 8文件系統(tǒng)核心代碼 9課程設(shè)計感想 11附錄12課程設(shè)計容在uC/OS操作系統(tǒng)中增加一個簡單的文件系統(tǒng)。要求如下:(1) 熟悉并分析uc/os操作系統(tǒng)(2) 設(shè)計并實現(xiàn)一個簡單的文件系統(tǒng)(3) 可以是存放在存的虛擬文件系統(tǒng),也可以是存放在磁盤的實際文件系統(tǒng)(4) 編寫測試代碼,測試對文件的相關(guān)操作

2、:建立,讀寫等課程設(shè)計目的操作系統(tǒng)課程主要講述的容是多道操作系統(tǒng)的原理與技術(shù),與其它計算機原理、編譯原理、匯編語言、計算機網(wǎng)絡(luò)、程序設(shè)計等專業(yè)課程關(guān)系十分密切。本課程設(shè)計的目的綜合應(yīng)用學(xué)生所學(xué)知識,建立系統(tǒng)和完整的計算機系統(tǒng)概念,理解和鞏固操作系統(tǒng)基本理論、原理和方法,掌握操作系統(tǒng)開發(fā)的基本技能。I . uC/OS操作系統(tǒng)簡介卩C/OS-II是一種可移植的,可植入ROM的,可裁剪的,搶占式的,實時多任務(wù)操作系統(tǒng)核。它被廣泛應(yīng)用于微處理器、微控制器和數(shù)字信號處理器。卩C/OS和卩C/OS-II是專門為計算機的嵌入式應(yīng)用設(shè)計的,絕大部分代碼是用 C語言編寫的。CPU硬件相關(guān)部分是用匯編語言編寫的、

3、總量約200行的匯編語言部分被壓縮到最低限度,為的是便于移植到任何一種其它的CPU上。用戶只要有標(biāo)準(zhǔn)的 ANSI的C交叉編譯器,有匯編器、連接器等軟件工具,就可以將 卩C/OS-II嵌入到開發(fā)的產(chǎn)品中。卩C/OS-II具 有執(zhí)行效率高、占用空間小、實時性能優(yōu)良和可擴展性強等特點,最小核可編譯至2KB。卩C/OS-II已經(jīng)移植到了幾乎所有知名的CPU上。嚴(yán)格地說uC/OS-ll只是一個實時操作系統(tǒng)核,它僅僅包含了任務(wù)調(diào)度,任務(wù)管理,時間 管理,存管理和任務(wù)間的通信和同步等基本功能。沒有提供輸入輸出管理,文件系統(tǒng),網(wǎng)絡(luò)等額外的服務(wù)。但由于uC/OS-ll良好的可擴展性和源碼開放,這些非必須的功能完

4、全可以由用戶自己根據(jù)需要分別實現(xiàn)。uC/OS-II目標(biāo)是實現(xiàn)一個基于優(yōu)先級調(diào)度的搶占式的實時核,并在這個核之上提供最 基本的系統(tǒng)服務(wù),如信號量,消息隊列,存管理,中斷管理等。uC/OS操作系統(tǒng)的組成CPU的移植等卩C/OS-II可以大致分成核心、任務(wù)處理、時間處理、任務(wù)同步與通信, 個部分。如下圖:uc/os11 1核心任務(wù)處理1時能理琴勰? cpu的移植每個部分具體作用1)核心部分(OSCore.c)是操作系統(tǒng)的處理核心,包括操作系統(tǒng)初始化、操作系統(tǒng)運行、中斷進出的前導(dǎo)、時鐘節(jié)拍、任務(wù)調(diào)度、事件處理等多部分。能夠維持系統(tǒng)基本工作的部分都在這里。2)任務(wù)處理部分(OSTask.c)任務(wù)處理部分

5、中的容都是與任務(wù)的操作密切相關(guān)的。包括任務(wù)的建立、刪除、掛起、 恢復(fù)等等。因為 卩C/OS-II是以任務(wù)為基本單位調(diào)度的,所以這部分容也相當(dāng)重要。3)時鐘部分(OSTime.c)卩C/OS-II中的最小時鐘單位是 timetick (時鐘節(jié)拍)。任務(wù)延時等操作是在這里完成的。4)任務(wù)同步和通信部分為事件處理部分,包括信亍號量、隊列、事件標(biāo)志等部分;主要用于任務(wù)間的互相聯(lián)系和對臨界資源的訪問。5)與CPU的接口部分是指卩C/OS-II針對所使用的CPU的移植部分。由于卩C/OS-II是一個通用性的操作 系統(tǒng),所以對于關(guān)鍵問題上的實現(xiàn),還是需要根據(jù)具體CPU的具體容和要求作相應(yīng)的移植。這部分容由于

6、牽涉到 SP等系統(tǒng)指針,所以通常用匯編語言編寫。主要包括中斷級任務(wù)切換的底層實現(xiàn)、任務(wù)級任務(wù)切換的底層實現(xiàn)、時鐘節(jié)拍的產(chǎn)生和處理、中斷的相關(guān) 處理部分等容。uC/OS操作系統(tǒng)功能作用任務(wù)管理63為最低級,系統(tǒng)保留了4個最高優(yōu)先級的任務(wù)和 4個最低優(yōu)先級的任務(wù),所有用戶可以使用的任務(wù)數(shù)有56個。uC/OS-ll提供了任務(wù)管理的各種函數(shù)調(diào)用,包括創(chuàng)建任務(wù),刪除任務(wù),改變?nèi)蝿?wù)的優(yōu)先 級,任務(wù)掛起和恢復(fù)等。系統(tǒng)初始化時會自動產(chǎn)生兩個任務(wù): 一個是空閑任務(wù),它的優(yōu)先級最低,該任務(wù)僅給一個 整形變量做累加運算;另一個是系統(tǒng)任務(wù),它的優(yōu)先級為次低,該任務(wù)負(fù)責(zé)統(tǒng)計當(dāng)前cpu的利用率。時間管理uC/OS-ll的

7、時間管理是通過定時中斷來實現(xiàn)的,該定時中斷一般為10毫秒或100毫秒發(fā)生一次,時間頻率取決于用戶對硬件系統(tǒng)的定時器編程來實現(xiàn)。中斷發(fā)生的時間間隔是固定不變的,該中斷也成為一個時鐘節(jié)拍。uC/OS-ll要求用戶在定時中斷的服務(wù)程序中,調(diào)用系統(tǒng)提供的與時鐘節(jié)拍相關(guān)的系統(tǒng)函數(shù),例如中斷級的任務(wù)切換函數(shù),系統(tǒng)時間函數(shù)。存管理在ANSl C中是使用malloc和free兩個函數(shù)來動態(tài)分配和釋放存。 但在嵌入式實時系統(tǒng) 中,多次這樣的操作會導(dǎo)致存碎片,且由于存管理算法的原因,malloc和free的執(zhí)行時間也是不確定。uC/OS-ll中把連續(xù)的大塊存按分區(qū)管理。每個分區(qū)中包含整數(shù)個大小相同的存塊,但不 同

8、分區(qū)之間的存塊大小可以不同。用戶需要動態(tài)分配存時,系統(tǒng)選擇一個適當(dāng)?shù)姆謪^(qū),按塊來分配存。釋放存時將該塊放回它以前所屬的分區(qū),這樣能有效解決碎片問題,同時執(zhí)行時間也是固定的。任務(wù)間通信與同步對一個多任務(wù)的操作系統(tǒng)來說,任務(wù)間的通信和同步是必不可少的。uC/OS-ll中提供了4種同步對象,分另憂信號量,消息隊列和事件。所有這些同步對象都有創(chuàng)建,等待,發(fā) 送,查詢的接口用于實現(xiàn)進程間的通信和同步。任務(wù)調(diào)度uC/OS-ll采用的是可剝奪型實時多任務(wù)核??蓜儕Z型的實時核在任何時候都運行就緒 了的最高優(yōu)先級的任務(wù)。uC/os-II的任務(wù)調(diào)度是完全基于任務(wù)優(yōu)先級的搶占式調(diào)度, 也就是最高優(yōu)先級的任務(wù), 一旦

9、處于就緒狀態(tài),則立即搶占正在運行的低優(yōu)先級任務(wù)的處理器資源。 為了簡化系統(tǒng)設(shè)計, uC/OS-ll規(guī)定所有任務(wù)的優(yōu)先級不同,因為任務(wù)的優(yōu)先級也同時唯一標(biāo)志了該任務(wù)本身II . uC/OS文件系統(tǒng)的建立uC/OS操作系統(tǒng)本身是沒有自帶文件系統(tǒng)的。但可由用戶自行設(shè)計。文件系統(tǒng)設(shè)計的原則:1. 簡潔性現(xiàn)有的比較完善的文件系統(tǒng)功能齊全、對系統(tǒng)資源要求較高,而我們所需要的這個嵌入式文件系統(tǒng)是嵌入式平臺的一個中間件,要求簡潔高效可靠。為此我們在設(shè)計過程中借鑒了 MS-DOS的 FAT16文件系統(tǒng)格式的目錄形式進行文件管理,打開文件數(shù)據(jù)結(jié)構(gòu)則采用了類似 于UNIX系統(tǒng)文件表的方式,為每一個打開文件設(shè)置了一個

10、數(shù)據(jù)結(jié)構(gòu)指針FS_FILE,使得用戶接口簡潔明了。2. 多設(shè)備驅(qū)動支持考慮到應(yīng)用的廣泛性和存儲介質(zhì)的多樣性,要求我們在進行設(shè)計文件系統(tǒng)時必須考慮對多種存儲介質(zhì)的兼容性。整個系統(tǒng)采用模塊化分層設(shè)計的原則和面向?qū)ο蟮膶崿F(xiàn)方法,使得用戶可以通過統(tǒng)一的頂層應(yīng)用程序接口方便地對各種存儲介質(zhì)進行文件操作。利用本文件系統(tǒng)可以管理不同的存儲介質(zhì),可以同時訪問不同的硬件。3. 多操作系統(tǒng)支持文件系統(tǒng)的開發(fā)是基于 ucos ii,在設(shè)計開發(fā)過程中,考慮到以后對多操作系統(tǒng)的支持,OS接口模塊設(shè)計為動態(tài)可變,當(dāng)文件系統(tǒng)應(yīng)用于其它操作系統(tǒng)時,只需將OS接口模塊中的操作系統(tǒng)信息變?yōu)樾碌牟僮飨到y(tǒng)即可。4. 可靠性由于嵌入式

11、系統(tǒng)的數(shù)據(jù)資源的重要性, 要求存儲數(shù)據(jù)的物理介質(zhì)必須具有很高的穩(wěn)定性,可是我們知道一些人為或外在的因素可能會導(dǎo)致介質(zhì)的損壞,從而造成數(shù)據(jù)的缺失, 所以我們要盡可能提高文件系統(tǒng)可靠性。文件系統(tǒng)的層次結(jié)構(gòu)和功能模塊API層中間轉(zhuǎn)換層介質(zhì)驅(qū)動層系結(jié)構(gòu)上具有很大的差異性。在普通桌面操作系統(tǒng)中,文件系統(tǒng)不僅要管理文件,提供文件 系統(tǒng)調(diào)用API,還要管理各種設(shè)備,支持對設(shè)備和文件操作的一致性。在嵌入式文件系統(tǒng)中,這種規(guī)則發(fā)生了很大的變化。在某些情況下,嵌入式系統(tǒng)可以針對特殊的目的來進行定制, 對嵌入式操作系統(tǒng)的系統(tǒng)功能規(guī)整性、可伸縮性及其靈活性提出了更高的要求?;谝陨系目紤],我們采用了如上圖所示的嵌入式

12、文件系統(tǒng)體系結(jié)構(gòu),該結(jié)構(gòu)定義的文件系統(tǒng)從上到下有三個層次:第一層為API層、第二層為中間轉(zhuǎn)換層、下層為介質(zhì)驅(qū)動層。API層API層是文件系統(tǒng)和用戶應(yīng)用程序之間的接口,它有一個標(biāo)準(zhǔn)C函數(shù)庫,其中包含有諸如打開文件(FS_FOPE)寫文件(FS_FWRITE等函數(shù)。本層的功能是將用戶調(diào)用傳送給中間轉(zhuǎn) 換層。這是整個系統(tǒng)設(shè)計的核心,也是嵌入式文件系統(tǒng)中用戶唯一可見的部分一一POSIX中文件系統(tǒng)的標(biāo)準(zhǔn)系統(tǒng)調(diào)用全部在該部分中得以實現(xiàn)。中間轉(zhuǎn)換層中間轉(zhuǎn)換層要為文件系統(tǒng)的實現(xiàn)提供與硬件無關(guān)的統(tǒng)一接口,是文件系統(tǒng)結(jié)構(gòu)規(guī)整性的基 礎(chǔ)。中間轉(zhuǎn)換層包含有文件系統(tǒng)子層及邏輯塊子層,其中文件系統(tǒng)子層將文件操作解釋到邏輯

13、塊子層,然后文件系統(tǒng)調(diào)用邏輯塊子層并根據(jù)不同的設(shè)備定義出相應(yīng)的設(shè)備驅(qū)動程序;邏輯塊子層主要是同步對設(shè)備驅(qū)動程序的訪問,向上提供友好界面。介質(zhì)驅(qū)動層介質(zhì)驅(qū)動層是訪問硬件的最低端的程序,該程序的結(jié)構(gòu)要能夠便于實現(xiàn)對硬件的訪問。本層的功能主要是完成對介質(zhì)的訪問。本層的重要任務(wù)就是提供統(tǒng)一的設(shè)備驅(qū)動程序接口。AP接口模中E口轉(zhuǎn)換塊1氫塊磁盤分區(qū)I設(shè)備驅(qū)動模塊I模塊根據(jù)文件系統(tǒng)的層次結(jié)構(gòu),可以將該文件系統(tǒng)分成四大功能塊:API接口模塊、中間轉(zhuǎn)換模塊、磁盤分區(qū)模塊、設(shè)備驅(qū)動模塊。如上圖:API接口模塊主要完成文件的基本操作,包含有文件的生成、刪除、打開、關(guān)閉、文件讀、文件寫等。中間轉(zhuǎn)換模塊主要完成對存取權(quán)

14、限的檢查、介質(zhì)的選擇、邏輯到物理的轉(zhuǎn)換。磁盤分區(qū)模塊主要完成對幾個主要數(shù)據(jù)結(jié)構(gòu)的初始化,設(shè)置文件系統(tǒng)的總體分區(qū)信息以及每個分區(qū)的幾部分:空閑塊管理、引導(dǎo)區(qū)、FAT區(qū)、文件存儲區(qū)等。設(shè)備驅(qū)動模塊完成存儲介質(zhì)的驅(qū)動程序,包含有一個驅(qū)動程序函數(shù)表和介質(zhì)讀、介質(zhì)寫、檢查狀態(tài)、執(zhí)行特定命令等驅(qū)動程序。文件系統(tǒng)的詳細(xì)設(shè)計文件系統(tǒng)組織方式文件系統(tǒng)邏輯組織為流式文件,物理組織為連續(xù)文件。用戶對于流式文件的訪問是以字節(jié)為單位的。每個文件的部有一個讀寫指針,通過系統(tǒng)調(diào)用可以將該指針固定到文件的某一個位置處,以后的讀寫系統(tǒng)調(diào)用將從該指針?biāo)_定的位置處開始。而用于保存文件的物理設(shè)備是劃分為塊頁的,文件的物理結(jié)構(gòu)就是要

15、確定如何將字節(jié)保存在存儲介質(zhì)中。所以說文件的物理組織形式對于文件系統(tǒng)的性能有著較為直接的影響,所以我們在進行文件的物理組織選擇時比較慎重。結(jié)合我們系統(tǒng)的實際應(yīng)用情況,我們決定文件的物理組織方式采用順序結(jié)構(gòu), 這是因為我們的嵌入式應(yīng)用環(huán)境要時性高,采集到的數(shù)據(jù)一旦以文件的方式存儲在介質(zhì)上很少進行改動,也即文件的長度變化不大,所以我們將邏輯文件的信息存放在外存的連續(xù)編號 的物理塊中。文件和文件控制塊 FCB為了實現(xiàn)對于文件的管理,系統(tǒng)需要掌握一組有關(guān)文件的描述信息,例如文件的名稱、文件的地址、文件的建立曰期等等,這些信息組合在一起構(gòu)成一個數(shù)據(jù)結(jié)構(gòu),在這里我們稱之為文件控制塊FCB( File Co

16、ntrol Block )。FCB是文件存在的標(biāo)志,其中記錄著系統(tǒng)對于文件 進行管理所需要的全部信息,F(xiàn)CB所包含容如圖2所示。每一個文件都有一個文件控制塊,它們被保存于外存空間, 當(dāng)系統(tǒng)欲訪問一個文件時,應(yīng)當(dāng)能夠根據(jù)文件名字找到它所對應(yīng)的文件控制塊,然后根據(jù)文件控制塊中的文件位置信息找到該文件具體所存放的區(qū)域。文件描述符文件描述符由基本文件名和擴展文件名兩部分構(gòu)成,二者以圓點分開。文件名由1-8個字符構(gòu)成,擴展名由1-3個字符構(gòu)成。分別占據(jù) FCB中的OOH- 07H和08H-0AH兩部分。在FCB 中,文件名和擴展名是左對齊放置的,剩余部分填入空格碼。當(dāng)進行文件刪除時, 在文件目錄記錄項的

17、第一字節(jié)中放入E5H,表示該記錄項是空項。 從公平?jīng)]有使用過的記錄項的第一字節(jié)中寫入的是00H,剛剛格式化的根文件目錄或剛剛生成的子文件目錄的未使用文件目錄 記錄項的開頭寫入的均是00H。這個00H在文件進行檢索時特別有用,主要是用來確定搜索到文件目錄的什么區(qū)域就可以不用再繼續(xù)搜索了。例如,當(dāng)文件檢索中沒有 00H時,必須對全文件目錄區(qū)進行檢索, 而一旦遇到有00H的場合,檢索便宣告結(jié)束,這樣可以大大縮短檢 索文件的時間,提高了文件檢索的效率。對文件的主要操作文件系統(tǒng)的功能是通過一系列對文件的操作實現(xiàn)的。為此,系統(tǒng)提供給用戶一整套系統(tǒng)調(diào)用,用以完成創(chuàng)建、打開、讀、寫、關(guān)閉、刪除文件等項工作。對

18、應(yīng)的函數(shù)分別為:FS_FOPEN()、FS_REMOVE)、FS_FCLOS()、FS_FREA()和 FS_FWRITE(),各函數(shù)均通過驅(qū)動模 塊來實現(xiàn),具體的代碼此處不在羅列。文件的保護機制由于文件系統(tǒng)保存著用戶非常重要的信息,因而如何保護信息、防止未授權(quán)使用就是所有文件系統(tǒng)必須要解決的重要問題之一。但系統(tǒng)中的全部信息又不能完全成為私有,還必須進行文件共享,以提高資源的利用率和方便用戶使用。文件共享和是一個問題的兩個方面。 對文件的保護是由對文件的共享要求起的。 在非共享環(huán) 境中,不需要再做什么保護,實際上它已經(jīng)是極端的完全保護情況;相反,另一種極端情況則是完成共享,而不做任何保護。這兩

19、種情況都缺乏實用意義, 一般用法是有控制的進行文件共享。保護機制通過限制文件的存取類型來實現(xiàn)受控制共享。允許或禁止對文件的存取受多種因素的限制,如用戶的身份、文件本身的性質(zhì)、對文件所要進行的存取類型等。常用的 保護機制有命名、口令、 存取控制、密碼等,對文件的保護必須要根據(jù)實際需要和實現(xiàn)的可 能性來選擇合適的方法。由于本文件系統(tǒng)主要是以 FAT文件系統(tǒng)為基礎(chǔ)來進行設(shè)計的,所以 在對文件進行保護和共享方面同樣也有FAT文件系統(tǒng)所具有的不足,沒有一套完整的文件保護機制來完成對文件的保護,安全特性只能通過共享權(quán)限來加以實現(xiàn)。文件系統(tǒng)核心代碼截圖2012/6/2 & 19:5BC文件3 KB1 , a

20、pi_in.e2003/10/15 15:35C J3 KBBpLinth2003/10/15 15:35H文件2 KB,api_misc.e201/6/27 16:40匚文件15 KBapi_out.c2003/10/15 15:35匚文件3clibmicx2006/12/13 10t32匚文件11 K62012/&/27 19:14匚文件4 KB1 , h_api.h2008/7/14 15:53H立件13 KBE clibnh1d2003/10/15 15:35H立件2 KB,f5_conf.h2007/&/11 18:01H立件lfi KBfs_dcvHh2005/4/11 212H文

21、件2 KBa fc_fcLh2Q12/b/27 19:14H立件3 KBfsjrfo.c2012/6/27 13:04CSW9 KB,.hjnt.h2003/10/15 15:35H立件3 KBU WbLh2003/10/15 15:35H文件2 K6I , fs_os.h2003/10/15 15:35H立件2 KBh.port,h2005/4/25 18:Z7H文件3 K6門 fc_X_ucosji-c2012/6/27 17:17C文件10 KBd eh30QS/7/29 16:41H文件2 KEide_drv.c2008/7/30 ;D:10C文件8 KB,ide_x_hwx30Q8/

22、7/?0 20:25匚文件11 KB,ide_x_hw.h200B/7/25 16:41H立件3 KB,iritc,h2CXJS/3/1J 16:19H文件4 KBD sd.c2008/7/30C文件15 KB,.sdnh20Q8/7/?0 20:25H立件1 KB各部分代碼文件功能解釋api_dir.cPurpose:對文件系統(tǒng)的目錄的各種操作,包括顯示目錄建立,刪除等操作的函數(shù)apin .cPurpose: FS_FRead()函數(shù),從文件中讀取數(shù)據(jù)api_misc.cPurpose:對 文件 的各種的操作函數(shù),打開文件,關(guān)閉文件,刪除文件,文件系統(tǒng)初 始化Purpose:向一個文件寫入數(shù)

23、據(jù),F(xiàn)S_FWrite ()函數(shù)app.c :Purpose:.主函數(shù).1.向系統(tǒng)申請一段存空間app_cfg.cPorpose :定義申請空間的程序的優(yōu)先級(pid )定義程序開始時的棧的大小clibmisc.cPurpose:由于該文件系統(tǒng)所用的c庫文件并非c的運行庫函數(shù),而是自己的庫函數(shù)包括字符串的復(fù)制,比較,測量長度,二進制與字符串的相互轉(zhuǎn)化, 由src所指存區(qū)域復(fù)制count個字節(jié)到dest所指存區(qū)域.大小寫轉(zhuǎn)換函數(shù)等fs.cPurpose:.文件操作測試函數(shù).包括函數(shù):向某個文件(*name)寫(write_file) 數(shù)據(jù)(*txt)_dump_file(co nst char

24、*n ame)利用文件系統(tǒng)讀取一個文件fs_api.hPurpose :聲明file_system的全局函數(shù),定義各種宏fs_con g.hPropose:此文件包含該文件系統(tǒng)的所有設(shè)置fs_dev.hPurpose:定義驅(qū)動器驅(qū)動的結(jié)構(gòu)FS_device_type (名稱,讀取參數(shù)(id,塊,緩沖區(qū)),寫入?yún)?shù)(id,塊,緩沖區(qū)),設(shè)備控制函數(shù))fs_fsl.hPurpose :定義文件系統(tǒng)層的結(jié)構(gòu)FS_fsl_typefs_in fo.cPurpose :定義文件系統(tǒng)層功能表,設(shè)備驅(qū)動程序函數(shù)表,邏輯塊層緩存,其中的_Fs_devinfo結(jié)構(gòu)可以簡述該文件系統(tǒng)是建立在何種設(shè)備之上的fsn

25、t.hPurpose :定義部參數(shù),這些參數(shù)是在整個文件系統(tǒng)層的不同層均有使用fs_os.hPurpose :定義文件系統(tǒng)的系統(tǒng)層的函數(shù)聲明(頭文件)fs_port.hPurpose :體系結(jié)構(gòu)定義了文件系統(tǒng)的依賴這個頭文件定義了幾乎所有的基本的數(shù)據(jù)類型(INT8U等)和宏,該參數(shù)可以根據(jù)你的編譯器和cpu的種類而改變fs_x_ucos_ii.cPurpose :對文件句柄的上鎖和解鎖操作,對文件option的上鎖和解鎖操作對目錄的句柄的上鎖和解鎖操作/*fileha ndle是一個數(shù)字,在文件打開的時候由操作系統(tǒng)分配給一個文件。當(dāng)訪問文件的時候操作系統(tǒng)使用部的文件句柄,。一塊特殊的區(qū)域的存被

26、預(yù)留給文件句柄,這個區(qū)域的大小決定了有多少文件可以同時打開。在DOS和Windows,你可以設(shè)置最大數(shù)量的打開的文件*/ide_x_hw.hPurpose : Segger SED137XE 板的硬件層是一個 CF卡,在 IDE 模式 P8.P9.P 10.P7os_cfg.hPurpose :對系統(tǒng)的宏定義*name:指向文件名的指針myfile :文件的物理地址.myfile=FS_FOpen(name,r);int x :對應(yīng)地址的字符x = FS_FRead(mybuffer,1,sizeof(mybuffer)-1,myfile)FS_FClose(myfile);關(guān)閉文件UCOS-

27、II : ucos的源代碼UCOS-II-PORT:移植系統(tǒng)時需要修改的部分III.課程設(shè)計感想通過本次課程設(shè)計,使我對uC/OS操作系統(tǒng)有了更深入的理解。操作系統(tǒng)是一門實踐性較強的課程,為了學(xué)好這門課程,必須在掌握理論知識的同時,加強上機實踐。一個人的力 量是有限的,要想把課程設(shè)計做的更好,就要學(xué)會參考一定的資料,吸取別人的經(jīng)驗,讓自己和別人的思想有機的結(jié)合起來,得出屬于你自己的靈感。程序的編寫需要有耐心,有些事情看起來很復(fù)雜,但問題需要一點一點去解決,分析問題,把問題一個一個劃分,劃分成小塊以后就逐個去解決。再總體解決大的問題。這樣做起來不僅有條理也使問題得到了輕松的解決。在這個過程中,我

28、也曾經(jīng)因為實踐經(jīng)驗的缺乏失落過,也曾經(jīng)仿真成功而熱情高漲。生活就是這樣,汗水預(yù)示著結(jié)果也見證著收獲。勞動是人類生存生活永恒不變的話題。雖然這只是一次的極簡單的課程制作,可是平心而論,也耗費了我不少的心血,這就讓我不得不佩服開發(fā)技術(shù)的前輩,才意識到老一輩對我們社會的付出,為了人們的生活更美好,他們?yōu)槲覀兩鐣冻龆嗌傩难?!對我而言,知識上的收獲重要,精神上的豐收更加可喜。讓我知道了學(xué)無止境的道理。我們每一個人永遠(yuǎn)不能滿足于現(xiàn)有的成就,人生就像在爬山,一座山峰的后面還有更高的山峰在等著你。挫折是一份財富,經(jīng)歷是一份擁有。這次課程設(shè)計必將成為我人生旅途上一個 非常美好的回憶!通過這次的課程設(shè)計我對

29、于專業(yè)課的學(xué)習(xí)有了更加深刻的認(rèn)識,以為現(xiàn)在學(xué)的知識用不以后努力學(xué)好每門上就加以怠慢,等到想用的時候卻發(fā)現(xiàn)自己的學(xué)習(xí)原來是那么的不扎實。專業(yè)課,讓自己擁有更多的知識,才能解決更多的問題!IV.附錄因為本次課程設(shè)計為小組合作完成。我只負(fù)責(zé)系統(tǒng)到硬件的代碼編寫?,F(xiàn)附上代碼如下:fs_dev.h/*Micrium, I nc.949 Crestview CircleWesto n, FL 33327-1848 uC/FS(c) Copyright 2002, Micrium, I nc.All rights reserved.*File : fs_dev.hPurpose : Define struc

30、tures for Device DriversKnown problems or limitati ons with curre nt vers ionNone.END-OF-HEADER*/#ifndef _FS_DEV_H_#defi ne _FS_DEV_H_* Global data types*/ typedef struct FS_FARCHARPTRn ame;int(uC/FSdev_status)(FS_u32 id);int(*dev_read)(FS_u32 id, FS_u32 block, void *buffer);int(*dev_write)(FS_u32 i

31、d, FS_u32 block, void *buffer);int(*dev_ioctl)(FS_u32 id, FS_i32 cmd, FS_i32 aux, void *buffer); FS_device_type;#en diffs_in fo.h/*Micrium, I nc.949 Crestview CircleWesto n, FL 33327-1848* (c) Copyright 2001 - 2003, Micrium, I nc.* All rights reserved.*File : fs_conf.cPurpose: File system con figura

32、ble global dataUn less you are going to add own device drivers, or you would like to modify e.g. order in the device table, you do not have to modify this file. Usually all configuration can be made in fs_con f.h.Known problems or limitati ons with curre nt vers ionNone.END-OF-HEADER*/* #i nclude Se

33、ctio n*/#i nclude fs_port.h#i nclude fs_dev.h #in clude fs_api.h#i nclude fs_fsl.h#i nclude fs_in t.h#in elude fs_c on f.h/* Exter nals*/*File System Layer Fun cti on Tables*/* FAT function table */#ifdef FS_USE_FAT_FSLextern const FS_fsl_type FS_fat_fun ctable;#en dif /* FS_USE_FAT_FSL */*Device Dr

34、iver Function TablesIf you add an own device driver, you will have to add an external for its function table here.*/* RAMDISK_DRIVER fun ctio n table */#if FS_USE_RAMDISK_DRIVERextern const FS_device_type FS_ramdevice_driver;#e ndif /* FS_USE_RAMDISK_DRIVER */* WINDRIVE_DRIVER fun ctio n table */#if

35、 FS_USE_WINDRIVE_DRIVERextern const FS_device_type FS_win drive_driver;#en dif /* FS_USE_WINDRIVE_DRIVER */* SMC_DRIVER fun ction table */#if FS_USE_SMC_DRIVERexter n const FS_device_type FS_smcdevice_driver;#en dif /* FS_USE_SMC_DRIVER */* MMC_DRIVER fun ctio n table */#if FS_USE_MMC_DRIVERextern c

36、onst FS_device_type FS_mmcdevice_driver;#en dif /* FS_USE_SMC_DRIVER */#if FS_USE_IDE_DRIVER/extern const FS_device_type FS_idedevice_driver;#endif /* FS_USE_IDE_DRIVER */#if FS_USE_FLASH_DRIVERexter n const FS_device_type FS_flashdevice_driver;#en dif /* FS_USE_FLASH_DRIVER */* Local variables*/* L

37、ogical Block Layer Cache*If FS_USE_LB_READCACHE is en abled, then the buffer defin ition for each media is done here according to the settings in fs_con f.h.*/#if FS_USE_LB_READCACHE/*RAMDISK cache setti ngs.There is no cache required for RAM.*/#defi ne FS_CACHEINFO_RAMDISK_DRIVER 0,/*Win drive cach

38、e sett in gs.The driver does have its own cache. Therefore we n ever use LB read cache for it.*/#defi ne FS_CACHEINFO_WINDRIVE_DRIVER 0,/*FLASH cache setti ngs.There is no read cache required for flash.*/#defi ne FS_CACHEINFO_FLASH_DRIVER 0,/* SmartMedia cache sett ings */#ifndef FS_SMC_CACHENUM#def

39、i ne FS_SMC_CACHENUM 0#en dif#if (FS_SMC_CACHENUM) & (FS_USE_SMC_DRIVER)static FS_CACHE_BUFFER _FS_SMC_BuffersFS_SMC_MAXUNITFS_SMC_CACHENUM;static FS_LB_CACHE _FS_SMC_CacheFS_SMC_MAXUNIT=#if (FS_SMC_MAXUNIT=1) FS_SMC_CACHENUM, 0, &_FS_SMC_BuffersOO ;#elif (FS_SMC_MAXUNIT=2) FS_SMC_CACHENUM, 0, &_FS_

40、SMC_BuffersOO,FS_SMC_CACHENUM, 0, &_FS_SMC_Buffers10 ;#else#error Please defi ne _FS_SMC_Cache for desired nu mber of un its#en dif#defi ne FS_CACHEINFO_SMC_DRIVER &_FS_SMC_Cache0,#else#defi ne FS_CACHEINFO_SMC_DRIVER 0,#en dif/* MMC/SD cache sett ings */#ifndef FS_MMC_CACHENUM#define FS_MMC_CACHENU

41、M 0 #en dif#if (FS_MMC_CACHENUM) & (FS_USE_MMC_DRIVER)static FS_CACHE_BUFFER _FS_MMC_BuffersFS_MMC_MAXUNITFS_MMC_CACHENUM;static FS_LB_CACHE _FS_MMC_CacheFS_MMC_MAXUNIT=#if (FS_MMC_MAXUNIT=1) FS_MMC_CACHENUM, 0, &_FS_MMC_BuffersOO ;#elif (FS_MMC_MAXUNIT=2) FS_MMC_CACHENUM, 0, &_FS_MMC_BuffersOO,FS_M

42、MC_CACHENUM, 0, &_FS_MMC_Buffers10 ;#else#error Please defi ne _FS_MMC_Cache for desired nu mber of un its#en dif#define FS_CACHEINFO_MMC_DRIVER &_FS_MMC_Cache0,#else#define FS_CACHEINFO_MMC_DRIVER 0,#en dif/* IDE cache sett ings */#ifndef FS_IDE_CACHENUM#defi ne FS_IDE_CACHENUM 0#en dif#if (FS_IDE_

43、CACHENUM) & (FS_USE_IDE_DRIVER)static FS_CACHE_BUFFER _FS_IDE_BuffersFS_IDE_MAXUNITFS_IDE_CACHENUM;static FS_LB_CACHE _FS_IDE_CacheFS_IDE_MAXUNIT=#if (FS_IDE_MAXUNIT=1) FS_IDE_CACHENUM, 0, &_FS_IDE_BuffersOO ;#elif (FS_IDE_MAXUNIT=2) FS_IDE_CACHENUM, 0, &_FS_IDE_BuffersOO,FS_IDE_CACHENUM, 0, &_FS_ID

44、E_Buffers10 ;#else#error Please defi ne _FS_IDE_Cache for desired nu mber of un its#en dif#defi ne FS_CACHEINFO_IDE_DRIVER &_FS_IDE_CacheO,#else#define FS_CACHEINFO_IDE_DRIVER 0,#en dif#else#defi ne FS_CACHEINFO_RAMDISK_DRIVER#defi ne FS_CACHEINFO_WINDRIVE_DRIVER#defi ne FS_CACHEINFO_SMC_DRIVER#defi

45、 ne FS_CACHEINFO_MMC_DRIVER#defi ne FS_CACHEINFO_IDE_DRIVER#defi ne FS_CACHEINFO_FLASH_DRIVER#en dif /* FS_USE_LB_READCACHE */* Global variables*/* _FS_devi nfo*This data structure does tell the file system, which file system layer(curre ntly FAT only) and device driver (e.g. SmartMedia or RAM disk)

46、 is used for which device n ame.If you do not specify the device name in an file system API call, thefirst entry in this table will be used.*/#ifndef FS_DEVINFO#if FS_USE_SMC_DRIVER#defi neFS_DEVINFO_DEVSMC smc,&F S_smcdevice_driver, FS_CACHEINFO_SMC_DRIVER 0 ,#else#define FS_DEVINFO_DEVSMC#en dif#i

47、f FS_USE_MMC_DRIVER#define FS_DEVINFO_DEVMMC mmc,&F S_mmcdevice_driver, FS_CACHEINFO_MMC_DRIVER 0 ,#else#define FS_DEVINFO_DEVMMC#en dif#if FS_USE_IDE_DRIVER#define FS_DEVINFO_DEVIDE ide,&F S_idedevice_driver, FS_CACHEINFO_IDE_DRIVER 0 ,#else#define FS_DEVINFO_DEVIDE#endif /* FS_USE_IDE_DRIVER */#if

48、 FS_USE_FLASH_DRIVER#define FS_DEVINFO_DEVFLASH flash,&F S_flashdevice_driver, FS_CACHEINFO_FLASH_DRIVER 0 ,#else#define FS_DEVINFO_DEVFLASH#en dif /* FS_USE_FLASH_DRIVER */&FS_fat_fun ctable,&FS_fat_fun ctable,&FS_fat_fun ctable,&FS_fat_fun ctable,#defi neFS DEVINFO DEVWINDRVwi ndrv,&FS_fat_fun cta

49、ble,#if FS_USE_WINDRIVE_DRIVER&F S_wi ndrive_driver, FS_CACHEINFO_WINDRIVE_DRIVER 0 ,#else#define FS_DEVINFO_DEVWINDRV#en dif#if FS_USE_RAMDISK_DRIVER#defi neFS_DEVINFO_DEVRAM ram,&FS_fat_fun ctable,&F S_ramdevice_driver, FS_CACHEINFO_RAMDISK_DRIVER 0 ,#else#define FS_DEVINFO_DEVRAM#en dif#define FS_DEVINFO FS_DEVINFO_DEVSMCFS_DEVINFO_DEVMM(FS_DEVINFO_DEVIDEFS_DEVINFO_DEVFLASH FS_DEVINFO_DEVWINDRV FS_DEVINFO_DEVRAM#en dif /* FS_DEVINFO */const FS_devi nfo_type _FS_devi

溫馨提示

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

評論

0/150

提交評論