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

正文內(nèi)容

arm體系結(jié)構(gòu)與編程-第六章(編輯修改稿)

2025-03-27 12:58 本頁面
 

【文章內(nèi)容簡介】 bl[]作為記錄等待事件任務(wù)的記錄表,叫做等待任務(wù)表,每個(gè)任務(wù)占 1位,為 1表示是等待任務(wù)。 ? 任務(wù)的等待時(shí)限,記錄在等待任務(wù)的任務(wù)控制塊 TCB的成員OSTCBDly中 35 ( 1)事件控制塊 μC/OS II使用叫做事件控制塊 ECB的數(shù)據(jù)結(jié)構(gòu)來描述諸如信號(hào)量、郵箱和消息隊(duì)列這些事件。事件控制塊包含包括等待任務(wù)表在內(nèi)的所有有關(guān)事件的數(shù)據(jù)。 36 ? 操作事件控制塊的函數(shù) μC/OS II有 4個(gè)對(duì)事件控制塊進(jìn)行基本操作的函數(shù)(定義在)。 – 事件控制塊的初始化函數(shù) void OS_EventWaitListInit(OS_ENENT * pevent ) 把變量 OSEventGrp及任務(wù)等待表中的每一位都清 0,即令事件的任務(wù)等待表中不含有任何等待任務(wù)。該函數(shù)被OSXXXCreate()創(chuàng)建時(shí)所調(diào)用。 XXX Sem 信號(hào)量 Mutex 互斥信號(hào)量 Mbox 消息郵箱 Q 消息隊(duì)列 37 – 使一個(gè)任務(wù)進(jìn)入等待狀態(tài)的函數(shù) void OS_EventTaskWait( OS_ENENT * pevent) 將在任務(wù)調(diào)用函數(shù) OSXXXPend()請(qǐng)求一個(gè)事件時(shí)調(diào)用。 – 使一個(gè)正在等待任務(wù)進(jìn)入就緒狀態(tài)的函數(shù) INT8U OS_EventTaskRdy( OS_EVENT * pevent, void *msg , INT8U msk) 作用:把調(diào)用這個(gè)函數(shù)的任務(wù)在任務(wù)等待表中的位置清 0后,再把任務(wù)在任務(wù)就緒表中的對(duì)應(yīng)的位置 1,然后引發(fā)一次任務(wù)調(diào)度 將在任務(wù)調(diào)用函數(shù) OSXXXPost()發(fā)送一個(gè)事件時(shí),被調(diào)用。 – 使一個(gè)等待超時(shí)的任務(wù)僅需就緒狀態(tài)的函數(shù) void OS_EventTo(OS_EVENT *pevent) 作用:當(dāng)任務(wù)已經(jīng)超過了等待的時(shí)間,卻要使它進(jìn)入就緒狀態(tài)。 將在任務(wù)調(diào)用函數(shù) OSXXXPend()請(qǐng)求一個(gè)事件時(shí),被調(diào)用。 38 ( 2)信號(hào)量管理 ? 使用信號(hào)量可以在任務(wù)間傳遞信息,實(shí)現(xiàn)任務(wù)與任務(wù)或中斷服務(wù)子程序的同步。 μC/OS II中的信號(hào)量由兩部分組成: 16位的無符號(hào)整數(shù)信號(hào)量的計(jì)數(shù)值( 0~ 65535);另一部分是由等待該信號(hào)量的任務(wù)組成的等待任務(wù)列表。 μC/OS II提供了以下 6個(gè)函數(shù)對(duì)信號(hào)量進(jìn)行操作。 ? 操作 – 創(chuàng)建信號(hào)量 OSSemCreat( INT16U t)創(chuàng)建,返回已創(chuàng)建信號(hào)量的指針。 – 請(qǐng)求信號(hào)量 OSSemPend( OS_EVENT *pevent,INT16U timeout,NT8U *err) 39 time為 0,則表示無限等待。 不等待調(diào)用的函數(shù)為 OSSemAccept( OS_EVENT * pevent)。 – 發(fā)送信號(hào)量 INT8U OSSemPost( OS_EVENT * pevent) 當(dāng)獲得信號(hào)量,訪問共享資源結(jié)束以后,釋放信號(hào)量,調(diào)用該函數(shù)。先檢查是否有等待該信號(hào)量的任務(wù)。沒有,信號(hào)量計(jì)數(shù)器加 1,有,則調(diào)用調(diào)度器 OS_Sched()。 40 – 刪除信號(hào)量 OS_EVENT *OSSemDel( OS_EVENT * pevent, INT8U opt, INT8U *err) opt OS_DEL_NO_PEND 沒有等待任務(wù)刪除 OS_DEL_ALLWAYS 立即刪除 只能任務(wù)執(zhí)行,不能在中斷服務(wù)程序中刪除 – 查詢信號(hào)量的狀態(tài) INT8U OSSemQuery( OS_EVENT * pevent, OS_SEM_DATA *pdata) pdata是一個(gè)結(jié)構(gòu)指針,存儲(chǔ)信號(hào)量的狀態(tài)。 41 ( 3)消息郵箱管理 ? 消息郵箱是 μC/OS II中的一種通信機(jī)制,通常使用時(shí)要先定義一個(gè)指針型的變量該指針指向一個(gè)包含了消息內(nèi)容的特定數(shù)據(jù)結(jié)構(gòu)。發(fā)送消息的任務(wù)或中斷服務(wù)子程序把這個(gè)變量送往郵箱,接收消息的任務(wù)從郵箱中取出該指針變量,完成信息交換。 μC/OS II提供 6種對(duì)消息郵箱的操作,它們通過以下函數(shù)實(shí)現(xiàn): – 創(chuàng)建 OS_EVENT * OSMoxCreate( void * msg) Msg為消息指針,一般初始為 NuLL。 42 – 向消息郵箱發(fā)送消息 INT8U OSMboxPost( OS_EVENT * pevent, void * msg) 發(fā)送廣播消息 INT8U OSMboxPostOpt( OS_EVENT * pevent, void * msg, INT8U opt) opt: OS_POST_OPT_BROADCAST 廣播消息 OS_POST_OPT_NONE 最高優(yōu)先級(jí) 43 – 請(qǐng)求消息郵箱 void * OSMboxPend( OS_EVENT * pevent, INT16U timeout, INT8U *err) – 查詢郵箱狀態(tài) INT8U OSMboxQuery( OS_EVENT * pevent, OS_MBOX_DATA *pdata) – 刪除郵箱 OS_EVENT *OSMboxDel( OS_EVENT * pevent,INT8U opt, INT8U *err) 44 ( 4)消息隊(duì)列管理 ? 消息隊(duì)列是 μC/OS II的另一種通信機(jī)制,它可以使一個(gè)任務(wù)或中斷服務(wù)子程序向另一個(gè)任務(wù)發(fā)送以指針定義的變量。 μC/OS II提供了 9個(gè)對(duì)消息隊(duì)列進(jìn)行操作的函數(shù)。 – 創(chuàng)建 先創(chuàng)建一個(gè)指針數(shù)組,然后用該數(shù)組來創(chuàng)建消息隊(duì)列 OS_EVENT OSQCreate( void ** start,INT16U size) – 請(qǐng)求消息隊(duì)列 void* OSQPend( OS_EVENT * pevent, INT16U timeout,INT8U *err) 45 – 向消息隊(duì)列發(fā)送消息 INT8U OSQPost( OS_EVENT * pevent,void * msg) 工作方式 FIFO INT8U OSQPostFront( OS_EVENT * pevent,void * msg) 工作方式 LIFO 發(fā)送廣播消息 INT8U OSQPostOpt( OS_EVENT * pevent,void * msg, INT8U opt) 46 – 清空消息隊(duì)列 INT8U OSQFlμsh ( OS_EVENT * pevent ) – 刪除消息隊(duì)列 OS_EVENT * OSQDel( OS_EVENT * pevent ) – 查詢消息隊(duì)列 INT8U OSuery( OS_EVENT * pevent, OS_Q_DATA *pdata) 47 181。C/ OSII操作系統(tǒng)的文件體系結(jié)構(gòu)如圖 2所示 , 其核心主要可分為以下 3部分: ( 1) 應(yīng)用軟件層 , 指的是基于 181。C/ OSII的應(yīng)用程序代碼 。 ( 2) 內(nèi)核的核心代碼層 , 主要包括 8個(gè)源代碼文件 。 這 8個(gè)源代碼文件為、 、 、 、 、μCOS_II .C、 ,其主要實(shí)現(xiàn)的功能分別是核心管理 、事件管理 、 存儲(chǔ)管理 、 消息隊(duì)列管理 、 定時(shí)管理 、 信號(hào)量處理 、 消息管理和任務(wù)調(diào)度等 , 這部分代碼與處理器無關(guān) 。 ( 3) 系統(tǒng)設(shè)置與移植層 。 系統(tǒng)設(shè)置部分的代碼由兩個(gè)頭文件 INCLμDES .H組成 。 其主要功能是用來配置事件控制塊的數(shù)目以及是否包含消息管理的相關(guān)代碼等 。 與處理器相關(guān)的移植代碼部分包括:一個(gè)頭文件 、 一個(gè)匯編文件 C代碼文件。 系統(tǒng)設(shè)置與移植層與具體應(yīng)用和處理器相關(guān) , 在隨后的181。C/ OSII的移植和開發(fā)過程中 , 用戶所需要關(guān)注的就是這部分文件 。 181。C/ OSII操作系統(tǒng)的文件系統(tǒng) 48 圖 2 181。C/ OSII文件體系結(jié)構(gòu) 49 181。C/ OSII 操作系統(tǒng)的初始化 在調(diào)用 181。C/ OSII操作系統(tǒng)的其他服務(wù)之前 , 181。C/ OSII操作系統(tǒng)要求用戶首先調(diào)用系統(tǒng)初始化函數(shù) OSInit()。 執(zhí)行 OSInit()函數(shù)后將初始化181。C/ OSII所有的變量和數(shù)據(jù)結(jié)構(gòu) , 另外 OSInit()會(huì)建立空閑任務(wù) , 并且這個(gè)任務(wù)總是處于就緒狀態(tài)的 。 空閑任務(wù) OSTaskldle()函數(shù)的優(yōu)先級(jí)總是設(shè)置成為最低級(jí)別 , 即 OS_LOWEST_PRIO。 多任務(wù)的啟動(dòng)是用戶通過調(diào)用 OSStart()函數(shù)來實(shí)現(xiàn)的 。 然而 ,在啟動(dòng) 181。C/ OSII之前 , 用戶至少要建立一個(gè)應(yīng)用任務(wù) , 例如: void main() { OSInit()。 .. 通過 OSTaskCreate()或 OSTaskCreateExt()創(chuàng)建至少一個(gè)任務(wù) .. OSStart()。 /*開始多任務(wù)調(diào)度 , OSStart()永遠(yuǎn)都不會(huì)返回 */ } 50 ? ? ? 第六章 μC/OS II程序設(shè)計(jì)基礎(chǔ) 51 181。C/ OSII系統(tǒng)在 ARM系統(tǒng)中的移植 所謂移植,就是指使一個(gè)實(shí)時(shí)操作系統(tǒng)能夠在其他的微處理器平臺(tái)上進(jìn)行運(yùn)行。由于 181。C/OSII的主要代碼都是由標(biāo)準(zhǔn)的 C語言寫成的,所以,一般來說移植過程并不復(fù)雜。 181。C/ OSII移植條件 雖然 181。C/ OSII的大部分源代碼是用 C語言寫成的 , 但是 , 仍需要用匯編語言完成一些與微處理器相關(guān)的代碼 。 例如 , 181。C/ OSII在讀寫微處理器 、 寄存器時(shí)只能通過匯編語言來實(shí)現(xiàn) 。 這是因?yàn)?181。C/ OSII在設(shè)計(jì)的時(shí)候就已經(jīng)充分考慮了可移植性 。 為了要使 181。C/ OSII可以正常工作 , 處理器必須要滿足如下要求: 52 1). 微處理器的 C編譯器能產(chǎn)生可重入代碼 可重入的代碼指的是一段代碼 (如一個(gè)函數(shù) )可以被多個(gè)任務(wù)同時(shí)調(diào)用 , 而不必
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1