freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

科技學(xué)院本科畢業(yè)論文畢業(yè)設(shè)計(jì)學(xué)位論文范文模板參考資料-電能智能采集終端器設(shè)計(jì)(編輯修改稿)

2025-01-08 17:28 本頁面
 

【文章內(nèi)容簡介】 程( IAP)。使用在應(yīng)用編程的應(yīng)用程序也可以在應(yīng)用程序運(yùn)行時(shí)對 FLAH 進(jìn)行擦除和 /或編程,這樣就為數(shù)據(jù)存儲和現(xiàn)場固件的升級都帶來了極大的靈活性。 片內(nèi)靜態(tài) RAM LPC2214 含有 16kB 的靜態(tài) RAM,可用作代碼和 /或數(shù)據(jù)的存儲。 SRAM 支持 8 位、16 位和 32 位訪問。 SRAM 控制器包含一個(gè)回寫緩沖區(qū),它用于防止 CPU 在連續(xù)的寫操作時(shí)停止運(yùn)行?;貙懢彌_區(qū)總是保存著軟件發(fā) 送到 SRAM 的最后一個(gè)字節(jié)。該數(shù)據(jù)只有在軟件請求下一次寫操作時(shí)才寫入 SRAM(數(shù)據(jù)只有在軟件執(zhí)行另外一次寫操作時(shí)被寫入 SRAM)。如果發(fā)生芯片復(fù)位,實(shí)際的 SRAM 內(nèi)容將不會反映最近一次的寫請求(即:在一次“熱”芯片復(fù)位后, SRAM 不會反映最后一次寫入的內(nèi)容)。任何在復(fù)位后檢查 SRAM 內(nèi)容的程序都必須注意這一點(diǎn)。通過對一個(gè)單元執(zhí)行兩次相同的寫操作可保證復(fù)位后數(shù)據(jù)的寫入。或者,也可通過在進(jìn)入空閑或掉電模式前執(zhí)行虛寫( dummy write)操作來保證最后的數(shù)據(jù)在復(fù)位后被真正寫入到 SRAM。 C/OSII 操作系統(tǒng) C/OSII 簡介 μ C/OSII是一種可移植的,可植入 ROM 的,可裁剪的,搶占式的,實(shí)時(shí)多任務(wù)操作系統(tǒng)內(nèi)核。它被廣泛應(yīng)用于微處理器、微控制器和數(shù)字信號處理器。 μ C/OSII 的前身是μ C/OS,最早出自于 1992 年美國嵌入式系統(tǒng)專家 Jean 在《嵌入式系統(tǒng)編程》雜志的 5 月和 6 月刊上刊登的文章連載,并把μ C/OS 的源碼發(fā)布在該雜志的 B B S 上。 μ C/OS 和μ C/OSII 是專門為計(jì)算機(jī)的嵌入式應(yīng)用設(shè)計(jì)的, 絕大部分代碼 是用 C語言編寫的。 CPU 硬件相關(guān)部分是用匯編語言編寫的、總量約 200 行的匯編語言部分被壓縮到最低限度,為的是便于移植到任何一種其它的 CPU 上。用戶只要有標(biāo)準(zhǔn)的 ANSI 的C交叉編譯器,有匯編器、連接器等軟件工具,就可以將μ C/OSII 嵌人到開發(fā)的產(chǎn)品中。μ C/OSII 具有執(zhí)行效率高、占用空間小、實(shí)時(shí)性能優(yōu)良和可擴(kuò)展性強(qiáng)等特點(diǎn), 最小內(nèi)核可編譯至 2KB 。μ C/OSII 已經(jīng)移植到了幾乎所有知名的 CPU 上。 嚴(yán)格地說 uC/OSII只是一個(gè)實(shí)時(shí)操作系統(tǒng)內(nèi)核,它僅僅包含了任務(wù)調(diào)度,任務(wù)管理,時(shí)間 管理,內(nèi)存管理和任務(wù)間的通信和同步等基本功能。沒有提供輸入輸出管理,文件系統(tǒng),網(wǎng)絡(luò)等額外的服務(wù)。但由于 uC/OSII 良好的可擴(kuò)展性和源碼開放,這些非必須的功能完全可以由用戶自己根據(jù)需要分別實(shí)現(xiàn)。 uC/OSII 目標(biāo)是實(shí)現(xiàn)一個(gè)基于優(yōu)先級調(diào)度的搶占式的實(shí)時(shí)內(nèi)核,并在這個(gè)內(nèi)核之上提供最基本的系統(tǒng)服務(wù),如信號量,郵箱,消息隊(duì)列,內(nèi)存管理,中斷管理等。 uC/OSII 以源代碼的形式發(fā)布,但并不意味著它是開源軟件。你可以將其用于教學(xué)和私下研究( peaceful research);但是如果你將其用于商業(yè) 用途,那么你必須通過Micrium 獲得商用許可。 任務(wù)管理 uC/OSII 中最多可以支持 64 個(gè)任務(wù),分別對應(yīng)優(yōu)先級 0~ 63,其中 0 為最高優(yōu)先級。 63為最低級,系統(tǒng)保留了 4 個(gè)最高優(yōu)先級的任務(wù)和 4個(gè)最低優(yōu)先級的任務(wù),所有用戶可以使用的任務(wù)數(shù)有 56 個(gè)。 uC/OSII 提供了任務(wù)管理的各種函數(shù)調(diào)用,包括創(chuàng)建任務(wù),刪除任務(wù),改變?nèi)蝿?wù)的優(yōu)先級,任務(wù)掛起和恢復(fù)等。 系統(tǒng)初始化時(shí)會自動產(chǎn)生兩個(gè)任務(wù):一個(gè)是空閑任務(wù),它的優(yōu)先級最低,該任務(wù)僅給一個(gè)整形變量做累加運(yùn)算;另一個(gè)是系統(tǒng)任務(wù),它的優(yōu)先級為次低 ,該任務(wù)負(fù)責(zé)統(tǒng)計(jì)當(dāng)前 cpu 的利用率。 時(shí)間管理 uC/OSII 的時(shí)間管理是通過定時(shí)中斷來實(shí)現(xiàn)的,該定時(shí)中斷一般為 10毫秒或 100毫秒發(fā)生一次,時(shí)間頻率取決于用戶對硬件系統(tǒng)的定時(shí)器編程來實(shí)現(xiàn)。中斷發(fā)生的時(shí)間間隔是固定不變的,該中斷也成為一個(gè)時(shí)鐘節(jié)拍。 uC/OSII 要求用戶在定時(shí)中斷的服務(wù)程序中,調(diào)用系統(tǒng)提供的與時(shí)鐘節(jié)拍相關(guān)的系統(tǒng)函數(shù),例如中斷級的任務(wù)切換函數(shù),系統(tǒng)時(shí)間函數(shù)。 內(nèi)存管理 在 ANSI C 中是使用 malloc 和 free 兩個(gè)函數(shù)來動態(tài)分配和釋放內(nèi)存。但在嵌入式實(shí)時(shí)系統(tǒng)中,多次 這樣的操作會導(dǎo)致內(nèi)存碎片,且由于內(nèi)存管理算法的原因, malloc和 free 的執(zhí)行時(shí)間也是不確定。 uC/OSII 中把連續(xù)的大塊內(nèi)存按分區(qū)管理。每個(gè)分區(qū)中包含整數(shù)個(gè)大小相同的內(nèi)存塊,但不同分區(qū)之間的內(nèi)存快大小可以不同。用戶需要動態(tài)分配內(nèi)存時(shí),系統(tǒng)選擇一個(gè)適當(dāng)?shù)姆謪^(qū),按塊來分配內(nèi)存。釋放內(nèi)存時(shí)將該塊放回它以前所屬的分區(qū),這樣能有效解決碎片問題,同時(shí)執(zhí)行時(shí)間也是固定的。 任務(wù)間通信與同步 對一個(gè)多任務(wù)的操作系統(tǒng)來說,任務(wù)間的通信和同步是必不可少的。 uC/OSII 中提供了 4種同步對象,分別是信號量,郵 箱,消息隊(duì)列和事件。所有這些同步對象都有創(chuàng)建,等待,發(fā)送,查詢的接口用于實(shí)現(xiàn)進(jìn)程間的通信和同步。 任務(wù)調(diào)度 uC/OSII 采用的是可剝奪型實(shí)時(shí)多任務(wù)內(nèi)核??蓜儕Z型的實(shí)時(shí)內(nèi)核在任何時(shí)候都運(yùn)行就緒了的最高優(yōu)先級的任務(wù)。 uC/osII 的任務(wù)調(diào)度是完全基于任務(wù)優(yōu)先級的搶占式調(diào)度,也就是最高優(yōu)先級的任務(wù)一旦處于就緒狀態(tài),則立即搶占正在運(yùn)行的低優(yōu)先級任務(wù)的處理器資源。為了簡化系統(tǒng)設(shè)計(jì), uC/OSII 規(guī)定所有任務(wù)的優(yōu)先級不同,因?yàn)槿蝿?wù)的優(yōu)先級也同時(shí)唯一標(biāo)志了該任務(wù)本身。 任務(wù)調(diào)度將在以下情況 下發(fā)生: 1) 高優(yōu)先級的任務(wù)因?yàn)樾枰撤N臨界資源,主動請求掛起,讓出處理器,此時(shí)將調(diào)度就緒狀態(tài)的低優(yōu)先級任務(wù)獲得執(zhí)行,這種調(diào)度也稱為任務(wù)級的上下文切換。 2) 高優(yōu)先級的任務(wù)因?yàn)闀r(shí)鐘節(jié)拍到來,在時(shí)鐘中斷的處理程序中,內(nèi)核發(fā)現(xiàn)高優(yōu)先級任務(wù)獲得了執(zhí)行條件 (如休眠的時(shí)鐘到時(shí) ),則在中斷態(tài)直接切換到高優(yōu)先級任務(wù)執(zhí)行。這種調(diào)度也稱為中斷級的上下文切換。 這兩種調(diào)度方式在 uC/OSII 的執(zhí)行過程中非常普遍,一般來說前者發(fā)生在系統(tǒng)服務(wù)中,后者發(fā)生在時(shí)鐘中斷的服務(wù)程序中。 調(diào)度工作的內(nèi)容可以分為兩部分:最高優(yōu)先級任 務(wù)的尋找和任務(wù)切換。其最高優(yōu)先級任務(wù)的尋找是通過建立就緒任務(wù)表來實(shí)現(xiàn)的。 u C / O S 中的每一個(gè)任務(wù)都有獨(dú)立的堆??臻g,并有一個(gè)稱為任務(wù)控制塊 TCB(Task Control Block)的數(shù)據(jù)結(jié)構(gòu),其中第一個(gè)成員變量就是保存的任務(wù)堆棧指針。任務(wù)調(diào)度模塊首先用變量 OSTCBHighRdy 記錄當(dāng)前最高級就緒任務(wù)的 TCB 地址,然后調(diào)用 OS_TASK_SW()函數(shù)來進(jìn)行任務(wù)切換。 C/OSII 的組成部分 μ C/OSII可以大致分成核心、任務(wù)處理、時(shí)間處理、任務(wù)同步與通信, CPU 的移植等 5個(gè)部分。 1) 核心部分 () 是操作系統(tǒng)的處理核心,包括操作系統(tǒng)初始化、操作系統(tǒng)運(yùn)行、中斷進(jìn)出的前導(dǎo)、時(shí)鐘節(jié)拍、任務(wù)調(diào)度、事件處理等多部分。能夠維持系統(tǒng)基本工作的部分都在這里。 2) 任務(wù)處理部分 () 任務(wù)處理部分中的內(nèi)容都是與任務(wù)的操作密切相關(guān)的。包括任務(wù)的建立、刪除、掛起、恢復(fù)等等。因?yàn)棣?C/OSII 是以任務(wù)為基本單位調(diào)度的,所以這部分內(nèi)容也相當(dāng)重要。 3) 時(shí)鐘部分 () μ C/OSII中的最小時(shí)鐘單位是 timetick(時(shí)鐘節(jié)拍)。任務(wù)延時(shí) 等操作是在這里完成的。 4) 任務(wù)同步和通信部分 為事件處理部分,包括信號量、郵箱、郵箱隊(duì)列、事件標(biāo)志等部分;主要用于任務(wù)間的互相聯(lián)系和對臨界資源的訪問。 5) 與 CPU 的接口部分 是指μ C/OSII針對所使用的 CPU 的移植部分。由于μ C/OSII 是一個(gè)通用性的操作系統(tǒng),所以對于關(guān)鍵問題上的實(shí)現(xiàn),還是需要根據(jù)具體 CPU 的具體內(nèi)容和要求作相應(yīng)的移植。這部分內(nèi)容由于牽涉到 SP 等系統(tǒng)指針,所以通常用匯編語言編寫。主要包括中斷級任務(wù)切換的底層實(shí)現(xiàn)、任務(wù)級任務(wù)切換的底層實(shí)現(xiàn)、時(shí)鐘節(jié)拍的產(chǎn)生和處理、中斷的相關(guān) 處理部分等內(nèi)容。 C/OSII 移植到 LPC2214 編譯器的選擇 目前,針對 ARM 處理器核的 C 語言編譯器有很多,如 SDT、 ADS、 IAR、 TASKING和 GCC 等。據(jù)了解,目前在國內(nèi)最流行的是 SDT、 ADS 和 GCC。 SDT 和 ADS 均為 ARM公司自己開發(fā), ADS 為 SDT 的升級版,以后 ARM 公司不再支持 SDT,所以不選擇 SDT。GCC 雖然支持廣泛,很多開發(fā)套件使用它作為編譯器,與 ADS 比較其編譯效率較低,這對充分發(fā)揮芯片性能很不利,所以最終使用 ADS 編譯程序和調(diào)試。 任務(wù)模式的取舍 ARM7 處理器核具有用戶、系統(tǒng)、管理、中止、未定義、中斷和快中斷七種模式,其中除用戶模式外其它均為特權(quán)模式。 關(guān)于 ARM7 處理器核的詳細(xì)情況參考參考文獻(xiàn)[11]。由參考文獻(xiàn) [11]可知, 管理、中止、未定義、中斷和快中斷與相應(yīng)異常相聯(lián)系,任務(wù)使用這些模式不太不適合。而系統(tǒng)模式除了是特權(quán)模式外,其它與用戶模式一樣,因而可選的給任務(wù)使用的模式只有用戶模式和系統(tǒng)模式。為了盡量減少任務(wù)代碼錯(cuò)誤對整個(gè)程序的影響,缺省的任務(wù)模式定為用戶模式,可選為系統(tǒng)模式,同時(shí)提供接口使 任務(wù)可以在這兩種模式間切換。 支持的指令集 帶 T 變量的 ARM7 處理器核具有兩個(gè)指令集:標(biāo)準(zhǔn) 32 位 ARM 指令集和 16 位 Thumb 指令集,兩種指令集有不同的應(yīng)用范圍。為了最大限度地支持芯片的特性,任務(wù)應(yīng)當(dāng)可以使用任意一個(gè)指令集并可以自由切換,而且不同的任務(wù)應(yīng)當(dāng)可以使用不同的指令集,這次移植的代碼已經(jīng)實(shí)現(xiàn)了這一點(diǎn)。 移植 μ C/OSII 概述 要移植一個(gè)操作系統(tǒng)到一個(gè)特定的 CPU 體系結(jié)構(gòu)上并不是一件很容易的事情,它對移植者有以下要求: 1. 對目標(biāo)體系結(jié)構(gòu)要有很深了解; 2. 對 OS 原理要有較深入的了解; 3. 對所使用的編譯器要有較深入的了解; 4. 對需要移植的操作系統(tǒng)要有相當(dāng)?shù)牧私猓? 5. 對具體使用的芯片也要一定的了解。 因此,在移植μ C/OSII 到 ARM7 時(shí),我們必須先把上面幾個(gè)方面的知識了解得比較透徹。這不單單是閱讀資料就可以實(shí)現(xiàn)的,還需要不斷地實(shí)踐和實(shí)驗(yàn)。關(guān)于第 1 點(diǎn)的參考資料最權(quán)威的是參考文獻(xiàn) [11], 已經(jīng)自帶這個(gè)文檔的電子版。關(guān)于第 2 點(diǎn)和第 4 點(diǎn)可以參考參考文獻(xiàn) [9]。關(guān)于第 3 點(diǎn)需要參考 ADS 自帶的編譯器和連接器的手冊,安 裝 時(shí)都附帶了它們的電子版。關(guān)于第 5 點(diǎn),參考資料為具體芯片的數(shù)據(jù)手冊和使用手冊。這里著重說明一下第 4 點(diǎn),因?yàn)檫@一點(diǎn)的影響是全局性的的,決定移植代碼的框架和功能。其它部分也很重要,它們在細(xì)節(jié)上影響代碼,并最終影響代碼的正確性、可靠性和健壯性。 μ C/OSII中要移植的部分見 表 。根據(jù)μ C/OSII 的要求,移植μ C/OSII到一個(gè)新的體系結(jié)構(gòu)上需要提供 2 個(gè)或 3 個(gè)文件: ( C語言頭文件)、 ( C 程序源文件)及 (匯編程序源文 件),其中 在某些情況下不需要,但極其罕見。不需要 的必須滿足以下苛刻條件: 1. 可以直接使用 C 語言開關(guān)中斷; 2. 可以直接使用 C 語言編寫中斷服務(wù)程序; 3. 可以直接使用 C 語言操作堆棧指針; 4. 可以直接使用 C 語言保存 CPU 的所有寄存器。 同時(shí)支持以上 4 點(diǎn)的 C語言編譯器幾乎不存在,即使存在,移植代碼往往也會使用部分匯編語言來提高移植代碼的效率。由 表 可以看出,移植μ C/OSII 需要在 包含幾個(gè)類型的定義和幾個(gè)常數(shù)的定 義;在 OS_CPU_C 和 中包含幾個(gè)函數(shù)的定義和時(shí)鐘節(jié)拍中斷服務(wù)程序的代碼。實(shí)際上,還有一個(gè) 文件需要關(guān)注,因?yàn)槊恳粋€(gè)應(yīng)用都包含獨(dú)特的 文件。 而筆者的移植也包含 、 及 三個(gè)文件。將 更名為 是遵照編譯器的慣例。實(shí)際上,還有一個(gè)文件很重要,它就是 ,它定義了一個(gè)匯編宏,它是 μ C/OSII for ARM7 通用的中斷服務(wù)程序的匯編 與 C 函數(shù)接口代碼。時(shí)鐘節(jié)拍中斷服務(wù)程序也沒有移植,因?yàn)槠渑c芯片和應(yīng)用都緊密相關(guān),需要用戶自己編寫,不過可以通過 簡化用戶代碼的編寫。 表 μ C/OSII 需要移植的代碼 *某些情況可在 中實(shí)現(xiàn)。 關(guān)于頭文件 和 C/OSII 要求所有 .C 文件的都要包含頭文件 ,這樣使得用戶項(xiàng)目中的每個(gè) .C文件不用分別去考慮它實(shí)際上需要哪些頭文件。使用 的缺點(diǎn)是它可能會包含一些實(shí)際不相關(guān)的頭文件,這意味著每個(gè)文件的編譯時(shí)間可能會增加,但卻增強(qiáng)了代碼的可移植性。在本移植中另外增加了一個(gè)頭文件 ,我們要求所有用戶程序必須包含 ,在 中包含 和特定的頭文 件和配置項(xiàng)。而 μC/OSII 的系統(tǒng)文件依然只是包含 ,即 μ C/OSII 的系統(tǒng)文件完全不必改移植內(nèi)容 類型 所屬文件 描述 BOOLEAN、 INT8U、 INT8S、INT16U、 INT16S、 INT32U、INT32S、 FP3 FP64 數(shù)據(jù)類型 與編譯器無關(guān)的數(shù)據(jù)類型 OS_STK 數(shù)據(jù)類型 堆棧的數(shù)據(jù)類型 OS_ENTER_CRITIC
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1