嵌入式操作系統(tǒng)實(shí)驗(yàn)報(bào)告_第1頁(yè)
嵌入式操作系統(tǒng)實(shí)驗(yàn)報(bào)告_第2頁(yè)
嵌入式操作系統(tǒng)實(shí)驗(yàn)報(bào)告_第3頁(yè)
嵌入式操作系統(tǒng)實(shí)驗(yàn)報(bào)告_第4頁(yè)
嵌入式操作系統(tǒng)實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

2、統(tǒng),也可以是存放在磁盤(pán)的實(shí)際文件系統(tǒng)(4) 編寫(xiě)測(cè)試代碼,測(cè)試對(duì)文件的相關(guān)操作:建立,讀寫(xiě)等課程設(shè)計(jì)目的操作系統(tǒng)課程主要講述的內(nèi)容是多道操作系統(tǒng)的原理與技術(shù),與其它計(jì)算機(jī)原理、編譯原理、匯編語(yǔ)言、計(jì)算機(jī)網(wǎng)絡(luò)、程序設(shè)計(jì)等專業(yè)課程關(guān)系十分密切。本課程設(shè)計(jì)的目的綜合應(yīng)用學(xué)生所學(xué)知識(shí),建立系統(tǒng)和完整的計(jì)算機(jī)系統(tǒng)概念,理解和鞏固操作系統(tǒng)基本理論、原理和方法,掌握操作系統(tǒng)開(kāi)發(fā)的基本技能。IuC/OS操作系統(tǒng)簡(jiǎn)介C/OS-II是一種可移植的,可植入ROM的,可裁剪的,搶占式的,實(shí)時(shí)多任務(wù)操作系統(tǒng)內(nèi)核。它被廣泛應(yīng)用于微處理器、微控制器和數(shù)字信號(hào)處理器。C/OS 和C/OS-II 是專門(mén)為計(jì)算機(jī)的嵌入式應(yīng)用設(shè)計(jì)

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

4、網(wǎng)絡(luò)等額外的服務(wù)。但由于uC/OS-II良好的可擴(kuò)展性和源碼開(kāi)放,這些非必須的功能完全可以由用戶自己根據(jù)需要分別實(shí)現(xiàn)。uC/OS-II目標(biāo)是實(shí)現(xiàn)一個(gè)基于優(yōu)先級(jí)調(diào)度的搶占式的實(shí)時(shí)內(nèi)核,并在這個(gè)內(nèi)核之上提供最基本的系統(tǒng)服務(wù),如信號(hào)量,郵箱,消息隊(duì)列,內(nèi)存管理,中斷管理等。uC/OS操作系統(tǒng)的組成C/OS-II可以大致分成核心、任務(wù)處理、時(shí)間處理、任務(wù)同步與通信,CPU的移植等5個(gè)部分。如下圖:每個(gè)部分具體作用1) 核心部分(OSCore.c) 是操作系統(tǒng)的處理核心,包括操作系統(tǒng)初始化、操作系統(tǒng)運(yùn)行、中斷進(jìn)出的前導(dǎo)、時(shí)鐘節(jié)拍、任務(wù)調(diào)度、事件處理等多部分。能夠維持系統(tǒng)基本工作的部分都在這里。2) 任務(wù)

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

6、體CPU的具體內(nèi)容和要求作相應(yīng)的移植。這部分內(nèi)容由于牽涉到SP等系統(tǒng)指針,所以通常用匯編語(yǔ)言編寫(xiě)。主要包括中斷級(jí)任務(wù)切換的底層實(shí)現(xiàn)、任務(wù)級(jí)任務(wù)切換的底層實(shí)現(xiàn)、時(shí)鐘節(jié)拍的產(chǎn)生和處理、中斷的相關(guān)處理部分等內(nèi)容。uC/OS操作系統(tǒng)功能作用任務(wù)管理uC/OS-II 中最多可以支持64 個(gè)任務(wù),分別對(duì)應(yīng)優(yōu)先級(jí)063,其中0 為最高優(yōu)先級(jí)。63為最低級(jí),系統(tǒng)保留了4個(gè)最高優(yōu)先級(jí)的任務(wù)和4個(gè)最低優(yōu)先級(jí)的任務(wù),所有用戶可以使用的任務(wù)數(shù)有56個(gè)。uC/OS-II提供了任務(wù)管理的各種函數(shù)調(diào)用,包括創(chuàng)建任務(wù),刪除任務(wù),改變?nèi)蝿?wù)的優(yōu)先級(jí),任務(wù)掛起和恢復(fù)等。系統(tǒng)初始化時(shí)會(huì)自動(dòng)產(chǎn)生兩個(gè)任務(wù):一個(gè)是空閑任務(wù),它的優(yōu)先級(jí)最低

7、,該任務(wù)僅給一個(gè)整形變量做累加運(yùn)算;另一個(gè)是系統(tǒng)任務(wù),它的優(yōu)先級(jí)為次低,該任務(wù)負(fù)責(zé)統(tǒng)計(jì)當(dāng)前cpu的利用率。時(shí)間管理uC/OS-II的時(shí)間管理是通過(guò)定時(shí)中斷來(lái)實(shí)現(xiàn)的,該定時(shí)中斷一般為10毫秒或100毫秒發(fā)生一次,時(shí)間頻率取決于用戶對(duì)硬件系統(tǒng)的定時(shí)器編程來(lái)實(shí)現(xiàn)。中斷發(fā)生的時(shí)間間隔是固定不變的,該中斷也成為一個(gè)時(shí)鐘節(jié)拍。uC/OS-II要求用戶在定時(shí)中斷的服務(wù)程序中,調(diào)用系統(tǒng)提供的與時(shí)鐘節(jié)拍相關(guān)的系統(tǒng)函數(shù),例如中斷級(jí)的任務(wù)切換函數(shù),系統(tǒng)時(shí)間函數(shù)。內(nèi)存管理在ANSI C中是使用malloc和free兩個(gè)函數(shù)來(lái)動(dòng)態(tài)分配和釋放內(nèi)存。但在嵌入式實(shí)時(shí)系統(tǒng)中,多次這樣的操作會(huì)導(dǎo)致內(nèi)存碎片,且由于內(nèi)存管理算法的原

8、因,malloc和free的執(zhí)行時(shí)間也是不確定。uC/OS-II中把連續(xù)的大塊內(nèi)存按分區(qū)管理。每個(gè)分區(qū)中包含整數(shù)個(gè)大小相同的內(nèi)存塊,但不同分區(qū)之間的內(nèi)存塊大小可以不同。用戶需要?jiǎng)討B(tài)分配內(nèi)存時(shí),系統(tǒng)選擇一個(gè)適當(dāng)?shù)姆謪^(qū),按塊來(lái)分配內(nèi)存。釋放內(nèi)存時(shí)將該塊放回它以前所屬的分區(qū),這樣能有效解決碎片問(wèn)題,同時(shí)執(zhí)行時(shí)間也是固定的。任務(wù)間通信與同步對(duì)一個(gè)多任務(wù)的操作系統(tǒng)來(lái)說(shuō),任務(wù)間的通信和同步是必不可少的。uC/OS-II中提供了4種同步對(duì)象,分別是信號(hào)量,郵箱,消息隊(duì)列和事件。所有這些同步對(duì)象都有創(chuàng)建,等待,發(fā)送,查詢的接口用于實(shí)現(xiàn)進(jìn)程間的通信和同步。任務(wù)調(diào)度uC/OS-II 采用的是可剝奪型實(shí)時(shí)多任務(wù)內(nèi)核

9、??蓜儕Z型的實(shí)時(shí)內(nèi)核在任何時(shí)候都運(yùn)行就緒了的最高優(yōu)先級(jí)的任務(wù)。uC/os-II的任務(wù)調(diào)度是完全基于任務(wù)優(yōu)先級(jí)的搶占式調(diào)度,也就是最高優(yōu)先級(jí)的任務(wù),一旦處于就緒狀態(tài),則立即搶占正在運(yùn)行的低優(yōu)先級(jí)任務(wù)的處理器資源。為了簡(jiǎn)化系統(tǒng)設(shè)計(jì),uC/OS-II規(guī)定所有任務(wù)的優(yōu)先級(jí)不同,因?yàn)槿蝿?wù)的優(yōu)先級(jí)也同時(shí)唯一標(biāo)志了該任務(wù)本身IIuC/OS文件系統(tǒng)的建立uC/OS操作系統(tǒng)本身是沒(méi)有自帶文件系統(tǒng)的。但可由用戶自行設(shè)計(jì)。文件系統(tǒng)設(shè)計(jì)的原則:1.簡(jiǎn)潔性現(xiàn)有的比較完善的文件系統(tǒng)功能齊全、對(duì)系統(tǒng)資源要求較高,而我們所需要的這個(gè)嵌入式文件系統(tǒng)是嵌入式平臺(tái)的一個(gè)中間件,要求簡(jiǎn)潔高效可靠。為此我們?cè)谠O(shè)計(jì)過(guò)程中借鑒了MS-DO

10、S的FAT16文件系統(tǒng)格式的目錄形式進(jìn)行文件管理,打開(kāi)文件數(shù)據(jù)結(jié)構(gòu)則采用了類似于UNIX系統(tǒng)文件表的方式,為每一個(gè)打開(kāi)文件設(shè)置了一個(gè)數(shù)據(jù)結(jié)構(gòu)指針FS_FILE,使得用戶接口簡(jiǎn)潔明了。2.多設(shè)備驅(qū)動(dòng)支持考慮到應(yīng)用的廣泛性和存儲(chǔ)介質(zhì)的多樣性,要求我們?cè)谶M(jìn)行設(shè)計(jì)文件系統(tǒng)時(shí)必須考慮對(duì)多種存儲(chǔ)介質(zhì)的兼容性。整個(gè)系統(tǒng)采用模塊化分層設(shè)計(jì)的原則和面向?qū)ο蟮膶?shí)現(xiàn)方法,使得用戶可以通過(guò)統(tǒng)一的頂層應(yīng)用程序接口方便地對(duì)各種存儲(chǔ)介質(zhì)進(jìn)行文件操作。利用本文件系統(tǒng)可以管理不同的存儲(chǔ)介質(zhì),可以同時(shí)訪問(wèn)不同的硬件。3. 多操作系統(tǒng)支持文件系統(tǒng)的開(kāi)發(fā)是基于ucos ii,在設(shè)計(jì)開(kāi)發(fā)過(guò)程中,考慮到以后對(duì)多操作系統(tǒng)的支持,OS接口模

11、塊設(shè)計(jì)為動(dòng)態(tài)可變,當(dāng)文件系統(tǒng)應(yīng)用于其它操作系統(tǒng)時(shí),只需將OS接口模塊中的操作系統(tǒng)信息變?yōu)樾碌牟僮飨到y(tǒng)即可。4. 可靠性由于嵌入式系統(tǒng)的數(shù)據(jù)資源的重要性,要求存儲(chǔ)數(shù)據(jù)的物理介質(zhì)必須具有很高的穩(wěn)定性,可是我們知道一些人為或外在的因素可能會(huì)導(dǎo)致介質(zhì)的損壞,從而造成數(shù)據(jù)的缺失,所以我們要盡可能提高文件系統(tǒng)可靠性。文件系統(tǒng)的層次結(jié)構(gòu)和功能模塊嵌入式文件系統(tǒng)由于功能和作用與普通桌面操作系統(tǒng)的文件系統(tǒng)不同,導(dǎo)致了二者在體系結(jié)構(gòu)上具有很大的差異性。在普通桌面操作系統(tǒng)中,文件系統(tǒng)不僅要管理文件,提供文件系統(tǒng)調(diào)用API,還要管理各種設(shè)備,支持對(duì)設(shè)備和文件操作的一致性。在嵌入式文件系統(tǒng)中,這種規(guī)則發(fā)生了很大的變化。

12、在某些情況下,嵌入式系統(tǒng)可以針對(duì)特殊的目的來(lái)進(jìn)行定制,對(duì)嵌入式操作系統(tǒng)的系統(tǒng)功能規(guī)整性、可伸縮性及其靈活性提出了更高的要求?;谝陨系目紤],我們采用了如上圖所示的嵌入式文件系統(tǒng)體系結(jié)構(gòu),該結(jié)構(gòu)定義的文件系統(tǒng)從上到下有三個(gè)層次:第一層為API層、第二層為中間轉(zhuǎn)換層、下層為介質(zhì)驅(qū)動(dòng)層。API層API層是文件系統(tǒng)和用戶應(yīng)用程序之間的接口,它有一個(gè)標(biāo)準(zhǔn)C函數(shù)庫(kù),其中包含有諸如打開(kāi)文件(FS_FOPEN)、寫(xiě)文件(FS_FWRITE)等函數(shù)。本層的功能是將用戶調(diào)用傳送給中間轉(zhuǎn)換層。這是整個(gè)系統(tǒng)設(shè)計(jì)的核心,也是嵌入式文件系統(tǒng)中用戶唯一可見(jiàn)的部分 POSIX中文件系統(tǒng)的標(biāo)準(zhǔn)系統(tǒng)調(diào)用全部在該部分中得以實(shí)現(xiàn)。中

13、間轉(zhuǎn)換層中間轉(zhuǎn)換層要為文件系統(tǒng)的實(shí)現(xiàn)提供與硬件無(wú)關(guān)的統(tǒng)一接口,是文件系統(tǒng)結(jié)構(gòu)規(guī)整性的基礎(chǔ)。中間轉(zhuǎn)換層包含有文件系統(tǒng)子層及邏輯塊子層,其中文件系統(tǒng)子層將文件操作解釋到邏輯塊子層,然后文件系統(tǒng)調(diào)用邏輯塊子層并根據(jù)不同的設(shè)備定義出相應(yīng)的設(shè)備驅(qū)動(dòng)程序;邏輯塊子層主要是同步對(duì)設(shè)備驅(qū)動(dòng)程序的訪問(wèn),向上提供友好界面。介質(zhì)驅(qū)動(dòng)層介質(zhì)驅(qū)動(dòng)層是訪問(wèn)硬件的最低端的程序,該程序的結(jié)構(gòu)要能夠便于實(shí)現(xiàn)對(duì)硬件的訪問(wèn)。本層的功能主要是完成對(duì)介質(zhì)的訪問(wèn)。本層的重要任務(wù)就是提供統(tǒng)一的設(shè)備驅(qū)動(dòng)程序接口。根據(jù)文件系統(tǒng)的層次結(jié)構(gòu),可以將該文件系統(tǒng)分成四大功能塊:API接口模塊、中間轉(zhuǎn)換模塊、磁盤(pán)分區(qū)模塊、設(shè)備驅(qū)動(dòng)模塊。如上圖:API接

14、口模塊主要完成文件的基本操作,包含有文件的生成、刪除、打開(kāi)、關(guān)閉、文件讀、文件寫(xiě)等。中間轉(zhuǎn)換模塊主要完成對(duì)存取權(quán)限的檢查、介質(zhì)的選擇、邏輯到物理的轉(zhuǎn)換。磁盤(pán)分區(qū)模塊主要完成對(duì)幾個(gè)主要數(shù)據(jù)結(jié)構(gòu)的初始化,設(shè)置文件系統(tǒng)的總體分區(qū)信息以及每個(gè)分區(qū)的幾部分:空閑塊管理、引導(dǎo)區(qū)、FAT區(qū)、文件存儲(chǔ)區(qū)等。設(shè)備驅(qū)動(dòng)模塊完成存儲(chǔ)介質(zhì)的驅(qū)動(dòng)程序,包含有一個(gè)驅(qū)動(dòng)程序函數(shù)表和介質(zhì)讀、介質(zhì)寫(xiě)、檢查狀態(tài)、執(zhí)行特定命令等驅(qū)動(dòng)程序。文件系統(tǒng)的詳細(xì)設(shè)計(jì)文件系統(tǒng)組織方式文件系統(tǒng)邏輯組織為流式文件,物理組織為連續(xù)文件。用戶對(duì)于流式文件的訪問(wèn)是以字節(jié)為單位的。每個(gè)文件的內(nèi)部有一個(gè)讀寫(xiě)指針,通過(guò)系統(tǒng)調(diào)用可以將該指針固定到文件的某一個(gè)位

15、置處,以后的讀寫(xiě)系統(tǒng)調(diào)用將從該指針?biāo)_定的位置處開(kāi)始。而用于保存文件的物理設(shè)備是劃分為塊頁(yè)的,文件的物理結(jié)構(gòu)就是要確定如何將字節(jié)保存在存儲(chǔ)介質(zhì)中。所以說(shuō)文件的物理組織形式對(duì)于文件系統(tǒng)的性能有著較為直接的影響,所以我們?cè)谶M(jìn)行文件的物理組織選擇時(shí)比較慎重。結(jié)合我們系統(tǒng)的實(shí)際應(yīng)用情況,我們決定文件的物理組織方式采用順序結(jié)構(gòu),這是因?yàn)槲覀兊那度胧綉?yīng)用環(huán)境要求實(shí)時(shí)性高,采集到的數(shù)據(jù)一旦以文件的方式存儲(chǔ)在介質(zhì)上很少進(jìn)行改動(dòng),也即文件的長(zhǎng)度變化不大,所以我們將邏輯文件的信息存放在外存的連續(xù)編號(hào)的物理塊中。文件和文件控制塊FCB為了實(shí)現(xiàn)對(duì)于文件的管理,系統(tǒng)需要掌握一組有關(guān)文件的描述信息,例如文件的名稱、文件的

16、地址、文件的建立曰期等等,這些信息組合在一起構(gòu)成一個(gè)數(shù)據(jù)結(jié)構(gòu),在這里我們稱之為文件控制塊FCB(File Control Block)。FCB是文件存在的標(biāo)志,其中記錄著系統(tǒng)對(duì)于文件進(jìn)行管理所需要的全部信息,F(xiàn)CB所包含內(nèi)容如圖2所示。每一個(gè)文件都有一個(gè)文件控制塊,它們被保存于外存空間,當(dāng)系統(tǒng)欲訪問(wèn)一個(gè)文件時(shí),應(yīng)當(dāng)能夠根據(jù)文件名字找到它所對(duì)應(yīng)的文件控制塊,然后根據(jù)文件控制塊中的文件位置信息找到該文件具體所存放的區(qū)域。文件描述符文件描述符由基本文件名和擴(kuò)展文件名兩部分構(gòu)成,二者以圓點(diǎn)分開(kāi)。文件名由1-8個(gè)字符構(gòu)成,擴(kuò)展名由1-3個(gè)字符構(gòu)成。分別占據(jù)FCB中的00H- 07H和08H-0AH兩部分

17、。在FCB中,文件名和擴(kuò)展名是左對(duì)齊放置的,剩余部分填入空格碼。當(dāng)進(jìn)行文件刪除時(shí),在文件目錄記錄項(xiàng)的第一字節(jié)中放入 E5H,表示該記錄項(xiàng)是空項(xiàng)。從公平?jīng)]有使用過(guò)的記錄項(xiàng)的第一字節(jié)中寫(xiě)入的是00H,剛剛格式化的根文件目錄或剛剛生成的子文件目錄的未使用文件目錄記錄項(xiàng)的開(kāi)頭寫(xiě)入的均是00H。這個(gè)00H在文件進(jìn)行檢索時(shí)特別有用,主要是用來(lái)確定搜索到文件目錄的什么區(qū)域就可以不用再繼續(xù)搜索了。例如,當(dāng)文件檢索中沒(méi)有00H時(shí),必須對(duì)全文件目錄區(qū)進(jìn)行檢索,而一旦遇到有00H的場(chǎng)合,檢索便宣告結(jié)束,這樣可以大大縮短檢索文件的時(shí)間,提高了文件檢索的效率。對(duì)文件的主要操作文件系統(tǒng)的功能是通過(guò)一系列對(duì)文件的操作實(shí)現(xiàn)的

18、。為此,系統(tǒng)提供給用戶一整套系統(tǒng)調(diào)用,用以完成創(chuàng)建、打開(kāi)、讀、寫(xiě)、關(guān)閉、刪除文件等項(xiàng)工作。對(duì)應(yīng)的函數(shù)分別為:FS_FOPEN()、FS_REMOVE()、FS_FCLOSE()、FS_FREAD()和FS_FWRITE(),各函數(shù)均通過(guò)驅(qū)動(dòng)模塊來(lái)實(shí)現(xiàn),具體的代碼此處不在羅列。文件的保護(hù)機(jī)制由于文件系統(tǒng)保存著用戶非常重要的信息,因而如何保護(hù)信息、防止未授權(quán)使用就是所有文件系統(tǒng)必須要解決的重要問(wèn)題之一。但系統(tǒng)中的全部信息又不能完全成為私有,還必須進(jìn)行文件共享,以提高資源的利用率和方便用戶使用。文件共享和保密是一個(gè)問(wèn)題的兩個(gè)方面。對(duì)文件的保護(hù)保密是由對(duì)文件的共享要求起的。在非共享環(huán)境中,不需要再做什

19、么保護(hù),實(shí)際上它已經(jīng)是極端的完全保護(hù)情況;相反,另一種極端情況則是完成共享,而不做任何保護(hù)。這兩種情況都缺乏實(shí)用意義,一般用法是有控制的進(jìn)行文件共享。保護(hù)機(jī)制通過(guò)限制文件的存取類型來(lái)實(shí)現(xiàn)受控制共享。允許或禁止對(duì)文件的存取受多種因素的限制,如用戶的身份、文件本身的性質(zhì)、對(duì)文件所要進(jìn)行的存取類型等。常用的保護(hù)機(jī)制有命名、口令、存取控制、密碼等,對(duì)文件的保護(hù)必須要根據(jù)實(shí)際需要和實(shí)現(xiàn)的可能性來(lái)選擇合適的方法。由于本文件系統(tǒng)主要是以FAT文件系統(tǒng)為基礎(chǔ)來(lái)進(jìn)行設(shè)計(jì)的,所以在對(duì)文件進(jìn)行保護(hù)和共享方面同樣也有FAT文件系統(tǒng)所具有的不足,沒(méi)有一套完整的文件保護(hù)機(jī)制來(lái)完成對(duì)文件的保護(hù),安全特性只能通過(guò)共享權(quán)限來(lái)加

20、以實(shí)現(xiàn)。文件系統(tǒng)核心代碼截圖各部分代碼文件功能解釋api_dir.cPurpose: 對(duì) 文件系統(tǒng)的目錄 的各種操作,包括顯示目錄建立,刪除等操作的函數(shù)api_in.cPurpose: FS_FRead()函數(shù),從文件中讀取數(shù)據(jù)api_misc.cPurpose: 對(duì) 文件 的各種的操作函數(shù),打開(kāi)文件,關(guān)閉文件,刪除文件,文件系統(tǒng)初始化api.out_.cPurpose: 向一個(gè)文件寫(xiě)入數(shù)據(jù),F(xiàn)S_FWrite()函數(shù)app.c:Purpose:.主函數(shù).1.向系統(tǒng)申請(qǐng)一段內(nèi)存空間2.fs.capp_cfg.cPorpose:定義申請(qǐng)空間的程序的優(yōu)先級(jí)(pid) 定義程序開(kāi)始時(shí)的棧的大小cli

21、bmisc.cPurpose:由于該文件系統(tǒng)所用的c庫(kù)文件并非c的運(yùn)行庫(kù)函數(shù),而是自己的庫(kù)函數(shù)包括字符串的復(fù)制,比較,測(cè)量長(zhǎng)度,二進(jìn)制與字符串的相互轉(zhuǎn)化,由src所指內(nèi)存區(qū)域復(fù)制count個(gè)字節(jié)到dest所指內(nèi)存區(qū)域.大小寫(xiě)轉(zhuǎn)換函數(shù)等f(wàn)s.cPurpose:.文件操作測(cè)試函數(shù).包括函數(shù):向某個(gè)文件(*name)寫(xiě)(write_file)數(shù)據(jù)(*txt)_dump_file(const char *name)利用文件系統(tǒng)讀取一個(gè)文件fs_api.hPurpose:聲明file_system的全局函數(shù),定義各種宏fs_cong.hPropose:此文件包含該文件系統(tǒng)的所有設(shè)置fs_dev.hPur

22、pose: 定義驅(qū)動(dòng)器驅(qū)動(dòng)的結(jié)構(gòu)FS_device_type(名稱,讀取參數(shù)(id,塊,緩沖區(qū)), 寫(xiě)入?yún)?shù)(id,塊,緩沖區(qū)),設(shè)備控制函數(shù))fs_fsl.hPurpose:定義文件系統(tǒng)層的結(jié)構(gòu)FS_fsl_typefs_info.cPurpose:定義文件系統(tǒng)層功能表,設(shè)備驅(qū)動(dòng)程序函數(shù)表,邏輯塊層緩存,其中的_Fs_devinfo結(jié)構(gòu)可以簡(jiǎn)述該文件系統(tǒng)是建立在何種設(shè)備之上的fs_int.hPurpose:定義內(nèi)部參數(shù),這些參數(shù)是在整個(gè)文件系統(tǒng)層的不同層均有使用fs_os.hPurpose:定義文件系統(tǒng)的系統(tǒng)層的函數(shù)聲明(頭文件)fs_port.hPurpose:體系結(jié)構(gòu)定義了文件系統(tǒng)的依賴

23、這個(gè)頭文件定義了幾乎所有的基本的數(shù)據(jù)類型(INT8U等)和宏,該參數(shù)可以根據(jù)你的編譯器和cpu的種類而改變fs_x_ucos_ii.cPurpose:對(duì)文件句柄的上鎖和解鎖操作,對(duì)文件option的上鎖和解鎖操作對(duì)目錄的句柄的上鎖和解鎖操作/*filehandle是一個(gè)數(shù)字,在文件打開(kāi)的時(shí)候由操作系統(tǒng)分配給一個(gè)文件。當(dāng)訪問(wèn)文件的時(shí)候操作系統(tǒng)使用內(nèi)部的文件句柄,。一塊特殊的區(qū)域的內(nèi)存被預(yù)留給文件句柄,這個(gè)區(qū)域的大小決定了有多少文件可以同時(shí)打開(kāi)。在DOS和Windows,你可以設(shè)置最大數(shù)量的打開(kāi)的文件*/ide_x_hw.hPurpose:Segger SED137XE 板的硬件層是一個(gè)CF卡,在

24、IDE模式P8.P9.P10.P7os_cfg.hPurpose:對(duì)系統(tǒng)的宏定義*name:指向文件名的指針myfile:文件的物理地址.myfile=FS_FOpen(name,"r");int x:對(duì)應(yīng)地址的字符 x = FS_FRead(mybuffer,1,sizeof(mybuffer)-1,myfile)FS_FClose(myfile);關(guān)閉文件UCOS-II :ucos的源代碼UCOS-II-PORT:移植系統(tǒng)時(shí)需要修改的部分III.課程設(shè)計(jì)感想通過(guò)本次課程設(shè)計(jì),使我對(duì)uC/OS操作系統(tǒng)有了更深入的理解。操作系統(tǒng)是一門(mén)實(shí)踐性較強(qiáng)的課程,為了學(xué)好這門(mén)課程,必須

25、在掌握理論知識(shí)的同時(shí),加強(qiáng)上機(jī)實(shí)踐。一個(gè)人的力量是有限的,要想把課程設(shè)計(jì)做的更好,就要學(xué)會(huì)參考一定的資料,吸取別人的經(jīng)驗(yàn),讓自己和別人的思想有機(jī)的結(jié)合起來(lái),得出屬于你自己的靈感。程序的編寫(xiě)需要有耐心,有些事情看起來(lái)很復(fù)雜,但問(wèn)題需要一點(diǎn)一點(diǎn)去解決,分析問(wèn)題,把問(wèn)題一個(gè)一個(gè)劃分,劃分成小塊以后就逐個(gè)去解決。再總體解決大的問(wèn)題。這樣做起來(lái)不僅有條理也使問(wèn)題得到了輕松的解決。在這個(gè)過(guò)程中,我也曾經(jīng)因?yàn)閷?shí)踐經(jīng)驗(yàn)的缺乏失落過(guò),也曾經(jīng)仿真成功而熱情高漲。生活就是這樣,汗水預(yù)示著結(jié)果也見(jiàn)證著收獲。勞動(dòng)是人類生存生活永恒不變的話題。雖然這只是一次的極簡(jiǎn)單的課程制作,可是平心而論,也耗費(fèi)了我不少的心血,這就讓我

26、不得不佩服開(kāi)發(fā)技術(shù)的前輩,才意識(shí)到老一輩對(duì)我們社會(huì)的付出,為了人們的生活更美好,他們?yōu)槲覀兩鐣?huì)所付出多少心血??!對(duì)我而言,知識(shí)上的收獲重要,精神上的豐收更加可喜。讓我知道了學(xué)無(wú)止境的道理。我們每一個(gè)人永遠(yuǎn)不能滿足于現(xiàn)有的成就,人生就像在爬山,一座山峰的后面還有更高的山峰在等著你。挫折是一份財(cái)富,經(jīng)歷是一份擁有。這次課程設(shè)計(jì)必將成為我人生旅途上一個(gè)非常美好的回憶!通過(guò)這次的課程設(shè)計(jì)我對(duì)于專業(yè)課的學(xué)習(xí)有了更加深刻的認(rèn)識(shí),以為現(xiàn)在學(xué)的知識(shí)用不上就加以怠慢,等到想用的時(shí)候卻發(fā)現(xiàn)自己的學(xué)習(xí)原來(lái)是那么的不扎實(shí)。以后努力學(xué)好每門(mén)專業(yè)課,讓自己擁有更多的知識(shí),才能解決更多的問(wèn)題!IV.附錄因?yàn)楸敬握n程設(shè)計(jì)為小

27、組合作完成。我只負(fù)責(zé)系統(tǒng)到硬件的代碼編寫(xiě)?,F(xiàn)附上代碼如下: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-*/#

28、ifndef _FS_DEV_H_#define _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)

29、; FS_device_type;#endif -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

30、modify e.g. order in the 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_ap

31、i.h"#include "fs_fsl.h"#include "fs_int.h"#include "fs_conf.h"/* 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 yo

32、u add an own device driver, you will have to add an external for its function table here.*/* RAMDISK_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 exter

33、n const FS_device_type FS_windrive_driver;#endif /* FS_USE_WINDRIVE_DRIVER */* SMC_DRIVER function 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_

34、driver;#endif /* 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_DRIVER extern const FS_device_type FS_flashdevice_driver;#endif /* FS_USE_FLASH_DRIVER */* Local variables */* Logical Block Layer Cache* If FS_

35、USE_LB_READCACHE is enabled, then the buffer definition for each media is done here according to 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 ha

36、ve its own cache. Therefore we never use LB read cache for it. */ #define FS_CACHEINFO_WINDRIVE_DRIVER 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 #end

37、if #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_Buffers00 ; #elif (FS_SMC_MAXUNIT=2) FS_SMC_CACHENUM, 0, &_FS_SMC_

38、Buffers00, FS_SMC_CACHENUM, 0, &_FS_SMC_Buffers10 ; #else #error Please define _FS_SMC_Cache for desired number of 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_

39、CACHENUM 0 #endif #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_Buffers00 ; #elif (FS_MMC_MAXUNIT=2) FS_MMC_CACHENUM, 0

40、, &_FS_MMC_Buffers00, FS_MMC_CACHENUM, 0, &_FS_MMC_Buffers10 ; #else #error Please define _FS_MMC_Cache for desired number of units #endif #define FS_CACHEINFO_MMC_DRIVER &_FS_MMC_Cache0, #else #define FS_CACHEINFO_MMC_DRIVER 0, #endif /* IDE cache settings */ #ifndef FS_IDE_CACHENUM #de

41、fine FS_IDE_CACHENUM 0 #endif #if (FS_IDE_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_Buffers00 ; #elif (FS_IDE_MAXUNIT=2) FS_IDE

42、_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 FS_CACHEINFO_IDE_DRIVER &_FS_IDE_Cache0, #else #define FS_CACHEINFO_IDE_DRIVER 0, #endif#else #define FS_CACHEINFO_RAMDISK_DRIVER

43、 #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 #endif /* FS_USE_LB_READCACHE */* Global variables */* _FS_devinfo* This data structure does tell the file system, which file system

44、 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, the first entry in this table will be used.*/#ifndef FS_DEVINFO #if FS_USE_SMC_DRIVER #define FS_DEVINFO_DEVSMC "smc"

45、, &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 , #else #define FS_DEVINFO_DEVMMC #endif #if FS_USE_IDE

溫馨提示

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

評(píng)論

0/150

提交評(píng)論