![嵌入式程序設(shè)計復(fù)習(xí)題_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/21/30fa749a-2662-48fc-8290-3644d7de30ea/30fa749a-2662-48fc-8290-3644d7de30ea1.gif)
![嵌入式程序設(shè)計復(fù)習(xí)題_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/21/30fa749a-2662-48fc-8290-3644d7de30ea/30fa749a-2662-48fc-8290-3644d7de30ea2.gif)
![嵌入式程序設(shè)計復(fù)習(xí)題_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/21/30fa749a-2662-48fc-8290-3644d7de30ea/30fa749a-2662-48fc-8290-3644d7de30ea3.gif)
![嵌入式程序設(shè)計復(fù)習(xí)題_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/21/30fa749a-2662-48fc-8290-3644d7de30ea/30fa749a-2662-48fc-8290-3644d7de30ea4.gif)
![嵌入式程序設(shè)計復(fù)習(xí)題_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/21/30fa749a-2662-48fc-8290-3644d7de30ea/30fa749a-2662-48fc-8290-3644d7de30ea5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、嵌入式系統(tǒng)程序設(shè)計練習(xí)題;1uC/OS-II是一個簡潔、易用的 基于優(yōu)先級的嵌入式搶占式多任務(wù)實時內(nèi)核。2任務(wù)是一個執(zhí)行體,包括:代碼、控制塊和任務(wù)堆棧。3.任務(wù)代碼可是無返回的無窮循環(huán),也可以是一次性代碼,但最后一定要刪除執(zhí)行操作的一次性代碼;4因為uc/os-ii總是運行進入就緒狀態(tài)中任務(wù)優(yōu)先級最高,下面該哪個任務(wù)運行,這個工作就由調(diào)度器進行切換調(diào)度操作來完成的;5任務(wù)級的調(diào)度是由函數(shù)OSSched()和函數(shù)OSIntExt()完成6任務(wù)級的調(diào)度是由函數(shù)OSSched()完成的,而【 中斷級 】的調(diào)度是由函數(shù)OSIntExt() 完成。對于OSSched(),它內(nèi)部調(diào)用的是OS_TASK_
2、SW()完成實際的調(diào)度;OSIntExt()內(nèi)部調(diào)用的是OSCtxSw() 實現(xiàn)調(diào)度。7 任務(wù)切換其實很簡單,由如下2步完成:(1)將被掛起任務(wù)的處理器寄存器推入自己的任務(wù)堆棧。(2)然后將進入就緒狀態(tài)的最高優(yōu)先級的任務(wù)的寄存器值從堆棧中恢復(fù)到寄存器中。8任務(wù)的5種狀態(tài)?!舅邞B(tài)(task dormat) 】:任務(wù)駐留于程序空間(rom或ram)中,暫時沒交給ucos-ii處理?!揪途w態(tài)(task ready)】:任務(wù)一旦建立,這個任務(wù)就進入了就緒態(tài)。【運行態(tài)(task running)】:調(diào)用OSStart()可以啟動多任務(wù)。OSStart()函數(shù)只能調(diào)用一次,一旦調(diào)用,系統(tǒng)將運行進入就緒態(tài)
3、并且優(yōu)先級最高的任務(wù)?!镜却隣顟B(tài)(task waiting)】:正在運行的任務(wù),通過延遲函數(shù)或pend(掛起)相關(guān)函數(shù)后,將進入等待狀態(tài)。【中斷狀態(tài)(ISR running)】:正在運行的任務(wù)是可以被中斷的,除非該任務(wù)將中斷關(guān)閉或者ucos-ii將中斷關(guān)閉。9【 不可剝奪型 】內(nèi)核要求每個任務(wù)自我放棄CPU的所有權(quán)。不可剝奪型調(diào)度法也稱作合作型多任務(wù)調(diào)度法,各個任務(wù)彼此合作共享一個CPU。10當(dāng)系統(tǒng)響應(yīng)時間很重要時,要使用【 可剝奪型 】內(nèi)核。最高優(yōu)先級的任務(wù)一旦就緒,總能得到CPU的控制權(quán)。11使用可剝奪型內(nèi)核時,應(yīng)用程序不應(yīng)直接使用不可重入型函數(shù)。調(diào)用不可重入型函數(shù)時,要滿足互斥條件,這一
4、點可以用【 互斥型信號量 】來實現(xiàn)。(可重入(reentrant)函數(shù)可以由多于一個任務(wù)并發(fā)使用,而不必?fù)?dān)心數(shù)據(jù)錯誤。相反, 不可重入(non-reentrant)函數(shù)不能由超過一個任務(wù)所共享,除非能確保函數(shù)的互斥(或者使用信號量,或者在代碼的關(guān)鍵部分禁用中斷)??芍厝牒瘮?shù)可以在任意時刻被中斷,稍后再繼續(xù)運行,不會丟失數(shù)據(jù)。可重入函數(shù)要么使用本地變量,要么在使用全局變量時保護自己的數(shù)據(jù)。)12【 可重入型 】函數(shù)可以被一個以上的任務(wù)調(diào)用,而不必?fù)?dān)心數(shù)據(jù)的破壞。13可重入型函數(shù)任何時候都可以被中斷,一段時間以后又可以運行,而相應(yīng)數(shù)據(jù)不會丟失??芍厝胄秃瘮?shù)或者只使用【 局部變量 】,即變量保存在C
5、PU寄存器中或堆棧中。如果使用全局變量,則要對全局變量予以【 保護 】。14每個任務(wù)都有其優(yōu)先級。任務(wù)越重要,賦予的優(yōu)先級應(yīng)【 越高 】。15C/OS-初始化是通過調(diào)用系統(tǒng)函數(shù)【OSIint()】實現(xiàn)的,完成C/OS-所有的變量和數(shù)據(jù)結(jié)構(gòu)的初始化。16多任務(wù)的啟動是用戶通過調(diào)用【OSStart()】實現(xiàn)的。然而,啟動C/OS-之前,用戶至少要建立一個應(yīng)用【任務(wù)】。17 C/OS-的參數(shù)配置文件名為【OS_CFG.H】。18 刪除任務(wù),是說任務(wù)將返回并處于【休眠狀態(tài)】,并不是說任務(wù)的代碼被刪除了,只是任務(wù)的代碼不再被C/OS-調(diào)用。19C/OS-要求用戶提供【定時中斷】來實現(xiàn)延時與超時控制等功能
6、。20定時中斷也叫做【時鐘節(jié)拍】,它應(yīng)該每秒發(fā)生10至100次。21. 時鐘節(jié)拍的實際頻率是由用戶的應(yīng)用程序決定的。時鐘節(jié)拍的頻率越高,系統(tǒng)的負(fù)荷就【越重】。22C/OS-II中的信號量由兩部分組成:一個是信號量的【計數(shù)值】,它是一個16位的無符號整數(shù)(0 到65,535之間);另一個是由等待該信號量的任務(wù)組成的【等待任務(wù)表】。 用戶要在OS_CFG.H中將OS_SEM_EN開關(guān)量常數(shù)置成【 1 】 ,這樣C/OS-II才能支持信號量。23. C/OS-II中表示當(dāng)前已經(jīng)創(chuàng)建的任務(wù)數(shù)全局變量名為:【 OSTaskCtr 】。24. C/OS-II中表示當(dāng)前內(nèi)核運行的標(biāo)記全局變量名為:【 OSR
7、unning 】。25在使用OSTaskCreate創(chuàng)建任務(wù)時,若需要TaskData作偽參數(shù)傳遞給任務(wù)Task,并從任務(wù)Task中獲得傳入的字符參數(shù)值,請在下面【 】填上合適的代碼。char TaskData=?A?;OSTaskCreate(Task, 【(void *)& TaskData 】, &TaskStk0TASK_STK_SIZE- 1, 1);void Task (void *pdata)char value = 【 *(char *)pdata 】;for (;) OSSemPend(RandomSem, 0, &err);y = (int) (*(
8、char *)pdata - 'A');OSSemPost(RandomSem); PC_DispChar(10, 25, value, DISP_FGND_WHITE +DISP_BGND_BLUE);OSTimeDly(1);26. 在C/OS-II在任務(wù)Task1中使用郵箱函數(shù)OSMboxPost()發(fā)送字符;而在Task2中接收OSMboxPost()字符, 請在下面【 】填上合適的代碼。void Task1 (void *data)char txmsg;INT8U err;txmsg = 'A'for (;) OSMboxPost(TxMbox, 【
9、(void *)&txmsg】); /* Send message toTask2*/OSMboxPend(AckMbox, 0, &err);txmsg+; if (txmsg = 'Z') txmsg = 'A'void Task5 (void *data)char *rxmsg;INT8U err;data = data;for (;) rxmsg = 【(char *)】OSMboxPend(TxMbox, 0, &err);PC_DispChar(70, 18, *rxmsg, DISP_FGND_YELLOW +DISP_BG
10、ND_BLUE);OSMboxPost(AckMbox, (void *)1); 27. 在Task1中使用消息隊列OSQPend()函數(shù)接收消息“Hello World!”,而在Task2中使用消息隊列OSQPost()函數(shù)發(fā)送消息“Hello World!”, 請在下面【 】填上合適的代碼.void Task1 (void *pdata)char *msg;INT8U err;pdata = pdata;for (;) msg = 【(char *)】OSQPend(MsgQueue, 0, &err);PC_DispStr(70, 13, msg, DISP_FGND_YELLO
11、W +DISP_BGND_BLUE);OSTimeDlyHMSM(0, 0, 0, 100);void Task2 (void *pdata)char msg20;pdata = pdata;strcpy(&msg0, " Hello World!");for (;) OSQPost(MsgQueue, 【(void *)】&msg0);OSTimeDlyHMSM(0, 0, 0, 500);28 C/OS-II操作系統(tǒng)使用OSSchedLock()函數(shù)和OSSchedUnlock()函數(shù)進行鎖定(不允許任務(wù)級調(diào)度)和解鎖(重新允許任務(wù)級調(diào)度)調(diào)度器,在用戶
12、應(yīng)用程序中,OSSchedLock()和OSSchedUnlock()是 【 成對出現(xiàn)的 】,否則系統(tǒng)有可能出錯。29代碼的臨界段代碼的臨界段也稱為臨界區(qū),指處理時不可分割的代碼。30資源任何為任務(wù)所占用的實體都可稱為資源。資源可以是輸入輸出設(shè)備;資源也可以是一個變量,一個結(jié)構(gòu)或一個數(shù)組等。31共享資源可以被一個以上任務(wù)使用的資源叫做共享資源。32任務(wù)一個任務(wù),也稱作一個線程,是一個簡單的程序,該程序可以認(rèn)為CPU完全只屬該程序自己。典型地、每個任務(wù)都是一個無限的循環(huán)。33任務(wù)切換指Context Switch,其含義是CPU寄存器內(nèi)容切換。當(dāng)多任務(wù)內(nèi)核決定運行另外的任務(wù)時,它保存正在運行任務(wù)
13、的當(dāng)前狀態(tài)(Context),即CPU寄存器中的全部內(nèi)容。34內(nèi)核多任務(wù)系統(tǒng)中,內(nèi)核負(fù)責(zé)管理各個任務(wù),或者說為每個任務(wù)分配CPU時間,并且負(fù)責(zé)任務(wù)之間的通訊。內(nèi)核提供的基本服務(wù)是任務(wù)切換。35調(diào)度(Scheduler)內(nèi)核的主要職責(zé)之一,就是要決定該輪到哪個任務(wù)運行了。多數(shù)實時內(nèi)核是基于優(yōu)先級調(diào)度法的。36可剝奪型內(nèi)核最高優(yōu)先級的任務(wù)一旦就緒,總能得到CPU的控制權(quán)。當(dāng)一個運行著的任務(wù)使一個比它優(yōu)先級高的任務(wù)進入了就緒態(tài),當(dāng)前任務(wù)的CPU使用權(quán)就被剝奪了,或者說被掛起了,那個高優(yōu)先級的任務(wù)立刻得到了CPU的控制權(quán)。如果是中斷服務(wù)子程序使一個高優(yōu)先級的任務(wù)進入就緒態(tài),中斷完成時,中斷了的任務(wù)被掛
14、起,優(yōu)先級高的那個任務(wù)開始運行。37. 任務(wù)基本信息內(nèi)涵(1) CPU中的PC寄存器:任務(wù)(程序)當(dāng)前執(zhí)行的位置;(2) CPU中的通用寄存器:任務(wù)當(dāng)前執(zhí)行代碼所涉及的臨時數(shù)據(jù);(3) CPU中的狀態(tài)寄存器:存儲當(dāng)前CPU的狀態(tài)。38. 任務(wù)切換任務(wù)切換是指從一個任務(wù)直接切換到另一個任務(wù),引起該次切換是由于某一個非中斷引起的事件或主動放棄或調(diào)用節(jié)拍函數(shù)時,使一個更高優(yōu)先級的任務(wù)處于就緒狀態(tài),暫停正在運行著的任務(wù),轉(zhuǎn)而切換去執(zhí)行更高優(yōu)先級任務(wù);也可由中斷后,中斷退出時進行任務(wù)調(diào)度,重新去執(zhí)行更高優(yōu)先級任務(wù)。39. 舉例說明COS-II可移植型數(shù)據(jù)類型的定義方式答:因為不同的微處理器有不同的字長,
15、C/OS-II的移植文件包括很多類型定義以確??梢浦残?。COS-II不使用C語言中的short,int,long等數(shù)據(jù)類型的定義,因為它們與處理器類型有關(guān),隱含著不可移植性。C/OS-II代之以移植性強的整數(shù)數(shù)據(jù)類型,這樣,既直觀又可移植(該數(shù)據(jù)類型不依賴于編譯),舉例如下: typedef unsigned char BOOLEAN;typedef unsigned char INT8U;typedef signed char INT8S;typedef unsigned int INT16U;typedef signed int INT16S;typedef unsigned long I
16、NT32U;typedef signed long INT32S;40. COS-II如何定義全局變量?答:眾所周知,全局變量應(yīng)該是得到內(nèi)存分配且可以被其他模塊通過C語言中extern關(guān)鍵字調(diào)用的變量。因此,必須在 .C 和 .H 文件中定義。這種重復(fù)的定義很容易導(dǎo)致錯誤。COS-II采用的方法只需用在頭文件中定義一次。 uC/OS_II.H 頭文件中包括以下定義全局宏定義:#ifdef OS_GLOBALS#define OS_EXT#else#define OS_EXT extern#endifOS_EXT INT32U OSIdleCtr;同時,uCOS_II.H有中以下定義:#defi
17、ne OS_GLOBALS#include “includes.h”當(dāng)編譯器處理uCOS_II.C時,它使得頭文件變成如下所示,因為OS_EXT被設(shè)置為空。INT32U OSIdleCtr;這樣編譯器就會將這些全局變量分配在內(nèi)存中。當(dāng)編譯器處理其他.C文件時,頭文件變成了如下的樣子,因為OS_GLOBAL沒有定義,所以O(shè)S_EXT被定義為extern。extern INT32U OSIdleCtr;在這種情況下,不產(chǎn)生內(nèi)存分配,而任何 .C文件都可以使用這些變量。這樣的就只需在 .H 文件中定義一次就可以了。41. OS_ENTER_CRITICAL() 和 OS_EXIT_CRITICAL(
18、)的含義及作用? 答:OS_ENTER_CRITICAL() :關(guān)中斷;OS_EXIT_CRITICAL():開中斷。關(guān)中斷和開中斷是為了保護臨界段代碼。用戶的應(yīng)用代碼可以使用這兩個宏來開中斷和關(guān)中斷。很明顯,關(guān)中斷會影響中斷延遲,所以要特別小心。用戶還可以用信號量來保護臨界段代碼。42基于PC的服務(wù)中如何測量PC_DisplayChar()的執(zhí)行時間?答:測量PC_DisplayChar()的執(zhí)行時間的代碼如下:INT16U time; /定義時間變量PC_ElapsedInit(); /時鐘初始化PC_ElapsedStart(); /開始計時PC_DispChar(40, 24, ?A?
19、, DISP_FGND_WHITE); /執(zhí)行代碼time = PC_ElapsedStop(); /結(jié)束計時43uC/OS-II的任務(wù)框架答:void task_xxx(void *pData) /* 該任務(wù)的初始化工作 */?/* 進入該任務(wù)的死循環(huán) */while(1)?每個用戶的任務(wù)都必須符合事件驅(qū)動的編程模型,即uC/OS-II的應(yīng)用程序都必須是“事件驅(qū)動的編程模型”。一個任務(wù)首先等待一個事件的發(fā)生,事件可以是系統(tǒng)中斷發(fā)出的,也可以是其它任務(wù)發(fā)出的,又可以是任務(wù)自身等待的時間片。當(dāng)一個事件發(fā)生了,任務(wù)再作相應(yīng)處理,處理結(jié)束后又開始等待下一個事件的發(fā)生。如此周而復(fù)始的任務(wù)處理模型就是“
20、事件驅(qū)動的編程模型”。事件驅(qū)動模型也涵蓋了中斷驅(qū)動模型,uC/OS-II事件歸根結(jié)底來自三個方面:(1)中斷服務(wù)函數(shù)發(fā)送的事件(2)系統(tǒng)延時時間到所引起的(3)其它任務(wù)發(fā)送的事件。44 與共享資源打交道時,使之滿足互斥條件最一般的方法包括哪些? 答:包括:關(guān)中斷、使用測試并置位指令、禁止做任務(wù)切換、利用信號量等。45. 描述利用C/OS_ 宏調(diào)用關(guān)中斷和開中斷處理共享數(shù)據(jù)的示意性代碼程答:OS_ENTER_CRITICAL();/*在這里處理共享數(shù)據(jù)*/OS_EXIT_CRITICAL();46. 信號量的典型應(yīng)用包括哪些?答:信號量(Semaphores) 是一種約定機制,在多任務(wù)內(nèi)核中的典
21、型應(yīng)用包括:(1) 控制共享資源的使用權(quán)(滿足互斥條件);(2) 標(biāo)志某事件的發(fā)生(3) 使兩個任務(wù)的行為同步47對信號量只能實施哪三種操作?答:一般地說,對信號量只能實施三種操作:(1) 初始化(INITIALIZE),也可稱作建立(CREATE);(2) 等信號(WAIT)也可稱作掛起(PEND);(3) 給信號(SIGNAL)或發(fā)信號(POST)。48.給出C/OS-中如何用信號量處理共享數(shù)據(jù)的示意代碼?答:通過獲得信號量處理共享數(shù)據(jù)的示意代碼如下:OS_EVENT *SharedDataSem;void Function (void)INT8U err;OSSemPend(Shared
22、DataSem, 0, &err);/*共享數(shù)據(jù)的處理在此進行,(中斷是開著的)*/OSSemPost(SharedDataSem);49.給出初始化和啟動C/OS-的示意代碼。答:void main (void)OSInit(); /* 初始化uC/OS-II */.通過調(diào)用OSTaskCreate()或OSTaskCreateExt()創(chuàng)建至少一個任務(wù); .OSStart(); /* 開始多任務(wù)調(diào)度!OSStart()永遠(yuǎn)不會返回 */ 50 描述建立任務(wù)OSTaskCreate()的函數(shù)原型。建立任務(wù)OSTaskCreate()的函數(shù)原型為:INT8U OSTaskCreate
23、(void (*task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio)其中,task: 任務(wù)代碼的指針;pdata: 當(dāng)任務(wù)開始執(zhí)行時傳遞給任務(wù)的參數(shù)的指針;ptos: 分配給任務(wù)的堆棧的棧頂指針;prio: 分配給任務(wù)的優(yōu)先級。51任務(wù)可以是一個無限的循環(huán),也可以是在一次執(zhí)行完畢后被刪除掉。 請給出示意代碼結(jié)構(gòu)。答:C/OS-描述的任務(wù)示意代碼必須是以下兩種結(jié)構(gòu)之一:void YourTask (void *pdata)for (;) /* 用戶代碼 */調(diào)用C/OS-的服務(wù)例程之一:OSMboxPend();OSQPend();OSS
24、emPend();OSTaskDel(OS_PRIO_SELF);OSTaskSuspend(OS_PRIO_SELF);OSTimeDly();OSTimeDlyHMSM();/* 用戶代碼 */或void YourTask (void *pdata)/* 用戶代碼 */OSTaskDel(OS_PRIO_SELF);52C/OS-任務(wù)管理提供哪些服務(wù)?答:C/OS-任務(wù)管理提供的服務(wù)包括:(1)建立任務(wù):OSTaskCreate()或OSTaskCreateExt();(2)刪除任務(wù):OSTaskDel();(3)請求刪除任務(wù):OSTaskDelReq();(4)改變?nèi)蝿?wù)的優(yōu)先級:OSTa
25、skChangePrio();(5)掛起任務(wù):OSTaskSuspend();(6)恢復(fù)任務(wù):OSTaskResume();(7)獲得有關(guān)任務(wù)的信息:OSTaskQuery()。53C/OS-時間任務(wù)管理提供哪些服務(wù)?答:C/OS-時間任務(wù)管理提供的服務(wù)包括:(1) 任務(wù)延時函數(shù):OSTimeDly()(2) 按時分秒延時函數(shù):OSTimeDlyHMSM()(3) 讓處在延時期的任務(wù)結(jié)束延時:OSTimeDlyResume()(4) 設(shè)置系統(tǒng)時間:OSTimeGet()(5) 獲得系統(tǒng)時間:OSTimeSet()54. C/OS-提供的數(shù)據(jù)共享和任務(wù)通訊的方法包括哪些?答:C/OS-提供的數(shù)據(jù)
26、共享和任務(wù)通訊的方法包括五種方法:(1) 利用宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()來關(guān)閉中斷和打開中斷。(2) 利用函數(shù)OSSchedLock()和OSSchekUnlock()對C/OS-II中的任務(wù)調(diào)度函數(shù)上鎖和開鎖。(3) 信號量。(4) 郵箱。(5) 消息隊列。55對于事件控制塊進行的一些通用包括哪些操作?答:對于事件控制塊進行的一些通用操作包括:(1) 初始化一個事件控制塊: OSEventWaitListInit();(2) 使一個任務(wù)進入就緒態(tài):OSEventTaskRdy();(3) 使一個任務(wù)進入等待該事件的狀態(tài):OSEventTas
27、kWait();(4) 因為等待超時而使一個任務(wù)進入就緒態(tài):OSEventTO()。56C/OS-信號量提供哪些服務(wù)?答:C/OS-信號量提供的服務(wù)包括:(1) 建立一個信號量:OSSemCreate();(2) 等待一個信號量:OSSemPend();(3)發(fā)送一個信號量:OSSemPost();(4)無等待地請求一個信號量:OSSemAccept();(5)查詢一個信號量的當(dāng)前狀態(tài):OSSemQuery()。57C/OS-郵箱提供哪些服務(wù)?答:C/OS-郵箱提供的服務(wù)包括:(1)建立一個郵箱:OSMboxCreate();(2)等待一個郵箱中的消息:OSMboxPend();(3)發(fā)送一個
28、消息到郵箱中:OSMboxPost();(4)無等待地從郵箱中得到一個消息:OSMboxAccept();(5)查詢一個郵箱的狀態(tài):OSMboxQuery()58C/OS-消息隊列提供哪些服務(wù)?答:C/OS-消息隊列提供的服務(wù)包括:;(1)建立一個消息隊列:OSQCreate();(2)等待一個消息隊列中的消息:OSQPend(;(3)向消息隊列發(fā)送一個消息(FIFO):OSQ;(4)向消息隊列發(fā)送一個消息(LIFO):OSQ;(5)無等待地從一個消息隊列中取得消息:OSQA;(6)清空一個消息隊列:OSQFlush();(7)查詢一個消息答:C/OS-消息隊列提供的服務(wù)包括:(1)建立一個消
29、息隊列:OSQCreate();(2)等待一個消息隊列中的消息:OSQPend();(3)向消息隊列發(fā)送一個消息(FIFO):OSQPost();(4)向消息隊列發(fā)送一個消息(LIFO):OSQPostFront();(5)無等待地從一個消息隊列中取得消息:OSQAccept();(6)清空一個消息隊列:OSQFlush();(7)查詢一個消息隊列的狀態(tài):OSQQuery()。59C/OS-內(nèi)存管理提供哪些服務(wù)?答:C/OS-內(nèi)存管理提供的服務(wù)包括:(1) 建立一個內(nèi)存分區(qū):OSMemCreate();(2) 分配一個內(nèi)存塊:OSMemGet();(3) 釋放一個內(nèi)存塊:OSMemPut();
30、(4) 查詢一個內(nèi)存分區(qū)的狀態(tài):OSMemQuery()。60移植C/OS-時,要使C/OS-正常運行,處理器必須滿足哪些基本要求? 答:要使C/OS-正常運行,處理器必須滿足以下要求:(1) 處理器的C編譯器能產(chǎn)生可重入代碼。(2) 用C語言就可以打開和關(guān)閉中斷。(3) 處理器支持中斷,并且能產(chǎn)生定時中斷(通常在10至100Hz之間)。(4) 處理器支持能夠容納一定量數(shù)據(jù)(可能是幾千字節(jié))的硬件堆棧。(5) 處理器有將堆棧指針和其它CPU寄存器讀出和存儲到堆?;騼?nèi)存中的指令。61. 舉例描述C/OS-II基于任務(wù)的應(yīng)用程序設(shè)計方法 答:#include <includes.h>#
31、define TASK_STK_SIZE 128OS_STK AppStk_oneTASK_STK_SIZE; /任務(wù)one的堆棧 OS_STK AppStk_twoTASK_STK_SIZE; /任務(wù)two的堆棧 OS_STK AppStk_threeTASK_STK_SIZE; /任務(wù)three的堆棧static void App_one(void *p_arg); /任務(wù)one代碼static void App_two(void *p_arg); /任務(wù)two代碼static void App_three(void *p_arg); /任務(wù)three代碼void main(int arg
32、c, char *argv)OSInit(); /初始化系統(tǒng) /依次創(chuàng)建三個任務(wù)OSTaskCreate(App_one,NULL,(OS_STK*)&AppStk_oneTASK_STK_SIZE-1,(INT8U)10);OSTaskCreate(App_two,NULL,(OS_STK*)&AppStk_twoTASK_STK_SIZE-1,(INT8U)20);OSTaskCreate(App_three,NULL,(OS_STK*)&AppStk_threeTASK_STK_SIZE-1,(INT8U)30);OSStart(); 啟動多任務(wù),將CPU控制權(quán)交
33、給系統(tǒng)62. C/OS-II調(diào)度算法原理及其和調(diào)度方式答:(1)優(yōu)先級調(diào)度算法原理為:給每一個任務(wù)分配一個惟一優(yōu)先級,各優(yōu)先級用一個整形數(shù)值標(biāo)識,某優(yōu)先級的值越大,其優(yōu)先級越低;某優(yōu)先級的值越小,其優(yōu)先級越高。也就是說,如果當(dāng)前操作系統(tǒng)準(zhǔn)備進行調(diào)度,當(dāng)有兩個任務(wù)處于就緒狀態(tài), 系統(tǒng)將優(yōu)先執(zhí)行優(yōu)先級別高的任務(wù)。(2) C/OS-II操作系統(tǒng)有兩種調(diào)度方式:任務(wù)級任務(wù)調(diào)度和中斷級任務(wù)調(diào)度,C/OS-II操作系統(tǒng)在完成中斷后允許進行新的調(diào)度。63. 描述C/OS-II操作系統(tǒng)的任務(wù)級任務(wù)調(diào)度OS_Sched()的主要功能答: (1)查找當(dāng)前就緒表中最高優(yōu)先級任務(wù)的優(yōu)先級值;(2)調(diào)用OS_Sched
34、New()函數(shù)進行任務(wù)切換,切換到新任務(wù)執(zhí)行。64從消息郵箱中讀取消息的方式及其函數(shù)原型 ?答:(1) 從消息郵箱中讀取消息的方式包括:非阻塞式讀取和阻塞式讀取兩種方式。(2) 非阻塞式讀取是指無論消息郵箱中是否有數(shù)據(jù),讀取操作也不阻塞,直接返回,顯然,如果有數(shù)據(jù),將讀取出來,如果沒有數(shù)據(jù),將讀取為NULL。 其函數(shù)原型為:void *OSMboxAccept (OS_EVENT *pevent)(3) 阻塞式讀取是指在消息郵箱中有數(shù)據(jù)時,直接讀取出來;如果沒有數(shù)據(jù),則使當(dāng)前任務(wù)進入等待狀態(tài),系統(tǒng)執(zhí)行調(diào)度程序執(zhí)行新的任務(wù),當(dāng)下一次消息到來時將激活等待表中的最高優(yōu)先級任務(wù),從而使該任務(wù)進入就緒狀
35、態(tài)。為了避免任務(wù)一直處于等待狀態(tài)(所等待的資源一直未分配),可以設(shè)置一個等待的時間范圍,當(dāng)超過該延遲時,則直接返回。其函數(shù)原型為:void *OSMboxPend (OS_EVENT *pevent, INT16U timeout, INT8U *err)65. 論述C/OS-控制下的任務(wù)狀態(tài)轉(zhuǎn)換圖答:C/OS-控制下的任務(wù)狀態(tài)轉(zhuǎn)換圖如下圖所示。在任一給定的時刻,任務(wù)的狀態(tài)一定是在這五種狀態(tài)之一。(1) 睡眠態(tài)(DORMANT):指任務(wù)駐留在程序空間之中,還沒有交給C/OS-管理。一個任務(wù)可以通過調(diào)用OSTaskDel()返回到睡眠態(tài),或通過調(diào)用該函數(shù)讓另一個任務(wù)進入睡眠態(tài)。(2) 就緒態(tài)(R
36、EADY):當(dāng)任務(wù)一旦建立,這個任務(wù)就進入就緒態(tài)準(zhǔn)備運行。把任務(wù)交給C/OS-是通過調(diào)用下述兩個函數(shù)之一:OSTaskCreate()或OSTaskCreateExt()。(3) 運行態(tài)(RUN): 調(diào)用OSStart()可以啟動多任務(wù)。OSStart()函數(shù)運行進入就緒態(tài)的優(yōu)先級最高的任務(wù)。(4) 等待狀態(tài)(WAITING): 正在運行的任務(wù)可以通過調(diào)用兩個函數(shù)之一將自身延遲一段時間,這兩個函數(shù)是OSTimeDly()或OSTimeDlyHMSM()。這個任務(wù)于是進入等待狀態(tài),等待這段時間過去,下一個優(yōu)先級最高的、并進入了就緒態(tài)的任務(wù)立刻被賦予了CPU的控制權(quán)。正在運行的任務(wù)期待某一事件的發(fā)
37、生時也要等待,手段是調(diào)用以下3個函數(shù)之一:OSSemPend(),OSMboxPend(),或OSQPend()。調(diào)用后任務(wù)進入了等待狀態(tài)(WAITING)。(5) 中斷狀態(tài)(ISR): 正在運行的任務(wù)是可以被中斷的,除非該任務(wù)將中斷關(guān)了,或者C/OS-將中斷關(guān)了。被中斷了的任務(wù)就進入了中斷服務(wù)態(tài)(ISR)。66. 論述C/OS-的核心數(shù)據(jù)結(jié)構(gòu)任務(wù)控制塊(OS_TCBs)答:任務(wù)控制塊(OS_TCBs)是C/OS-的核心數(shù)據(jù)結(jié)構(gòu),當(dāng)任務(wù)的CPU使用權(quán)被剝奪時,C/OS-用它來保存該任務(wù)的狀態(tài)。當(dāng)任務(wù)重新得到CPU使用權(quán)時,任務(wù)控制塊能確保任務(wù)從當(dāng)時被中斷的那一點絲毫不差地繼續(xù)執(zhí)行。OS_TCB
38、s全部駐留在RAM中。一旦任務(wù)建立了,任務(wù)控制塊OS_TCBs將被賦值。C/OS-II任務(wù)控制塊數(shù)據(jù)結(jié)構(gòu)定義如下:typedef struct os_tcb OS_STK *OSTCBStkPtr;#if OS_TASK_CREATE_EXT_ENvoid *OSTCBExtPtr;OS_STK *OSTCBStkBottom;INT32U OSTCBStkSize;INT16U OSTCBOpt;INT16U OSTCBId;#endifstruct os_tcb *OSTCBNext;struct os_tcb *OSTCBPrev;#if (OS_Q_EN && (OS_
39、MAX_QS >= 2) | OS_MBOX_EN | OS_SEM_EN OS_EVENT *OSTCBEventPtr;#endif#if (OS_Q_EN && (OS_MAX_QS >= 2) | OS_MBOX_ENvoid *OSTCBMsg;#endifINT16U OSTCBDly;INT8U OSTCBStat;INT8U OSTCBPrio;INT8U OSTCBX;INT8U OSTCBY;INT8U OSTCBBitX;INT8U OSTCBBitY;#if OS_TASK_DEL_ENBOOLEAN OSTCBDelReq;#endif O
40、S_TCB;其中:OSTCBStkPtr是指向當(dāng)前任務(wù)棧頂?shù)闹羔?。OSTCBExtPtr 指向用戶定義的任務(wù)控制塊擴展。OSTCBStkBottom是指向任務(wù)棧底的指針。OSTCBStkSize存有棧中可容納的指針元數(shù)目而不是用字節(jié)(Byte)表示的棧容量總數(shù)。OSTCBId用于存儲任務(wù)的識別碼。OSTCBNext和OSTCBPrev用于任務(wù)控制塊OS_TCBs的雙重鏈接。 OSTCBEventPtr是指向事件控制塊的指針。OSTCBMsg是指向傳給任務(wù)的消息的指針。OSTCBStat是任務(wù)的狀態(tài)字。OSTCBPrio是任務(wù)優(yōu)先級。OSTCBDelReq是一個布爾量,用于表示該任務(wù)是否需要刪除
41、。OSTCBX, OSTCBY, OSTCBBitX和 OSTCBBitY用于加速任務(wù)進入就緒態(tài)的過程或進入等待事件發(fā)生狀態(tài)的過程。3論述事件控制塊ECB數(shù)據(jù)結(jié)構(gòu)答:C/OS-II通過uCOS_II.H 中定義的OS_EVENT數(shù)據(jù)結(jié)構(gòu)來維護一個事件控制塊的所有信息。該事件控制塊ECB數(shù)據(jù)結(jié)構(gòu)的定義如下:typedef struct void *OSEventPtr; /* 指向消息或者消息隊列的指針 */ INT8U OSEventTblOS_EVENT_TBL_SIZE; /* 等待任務(wù)列表 */ INT16U OSEventCnt; /* 計數(shù)器(當(dāng)事件是信號量時) */ INT8U O
42、SEventType; /* 時間類型 */INT8U OSEventGrp; /* 等待任務(wù)所在的組 */ OS_EVENT;其中:OSEventPtr指針: 只有在所定義的事件是郵箱或者消息隊列時才使用。當(dāng)所定義的事件是郵箱時,它指向一個消息,而當(dāng)所定義的事件是消息隊列時,它指向一個數(shù)據(jù)結(jié)構(gòu).OSEventTbl 和 OSEventGrp: 兩者包含的是系統(tǒng)中處于就緒狀態(tài)的任務(wù)。OSEventCnt:當(dāng)事件是一個信號量時,用于信號量的計數(shù)器。OSEventType:定義了事件的具體類型。67論述C/OS-II內(nèi)存的管理的內(nèi)存控制塊數(shù)據(jù)結(jié)構(gòu)答:為了便于內(nèi)存的管理,在C/OS-II中使用;內(nèi)存
43、控制塊的數(shù)據(jù)結(jié)構(gòu)定義如下:;typedefstruct;void*OSMemAddr;;void*OSMemFreeList;;INT32UOSMemBlkSize;;INT32UOSMemNBlks;;INT32UOSMemNFree;;OS_MEM;;其中:;OSMemAddr是指向內(nèi)存分區(qū)起始地答:為了便于內(nèi)存的管理,在C/OS-II中使用內(nèi)存控制塊(memory control blocks)的數(shù)據(jù)結(jié)構(gòu)來跟蹤每一個內(nèi)存分區(qū),系統(tǒng)中的每個內(nèi)存分區(qū)都有它自己的內(nèi)存控制塊。內(nèi)存控制塊的數(shù)據(jù)結(jié)構(gòu)定義如下:typedef struct void *OSMemAddr;void *OSMemFre
44、eList;INT32U OSMemBlkSize;INT32U OSMemNBlks;INT32U OSMemNFree; OS_MEM;其中:OSMemAddr是指向內(nèi)存分區(qū)起始地址的指針。OSMemFreeList是指向下一個空閑內(nèi)存控制塊或者下一個空閑的內(nèi)存塊的指針。OSMemBlkSize是內(nèi)存分區(qū)中內(nèi)存塊的大小,是用戶建立該內(nèi)存分區(qū)時指定的。OSMemNBlks是內(nèi)存分區(qū)中總的內(nèi)存塊數(shù)量,也是用戶建立該內(nèi)存分區(qū)時指定的。OSMemNFree是內(nèi)存分區(qū)中當(dāng)前可以得空閑內(nèi)存塊數(shù)量。68、啟動µC/OS-II任務(wù)的函數(shù)是_ OSStart( )_。69、OSTaskCreate
45、(void(*task)(void*pd),void * pdata,OS_STK * ptos,INT8U prio)功能是_創(chuàng)建任務(wù)_。70、µC/OS-II用來記錄任務(wù)的堆棧指針、任務(wù)的當(dāng)前狀態(tài)、任務(wù)的優(yōu)先級別的數(shù)據(jù)結(jié)構(gòu)稱為任務(wù)控制塊(OS_TCB)。71、µC/OS-II有兩種調(diào)度器,一種是任務(wù)級的調(diào)度器;另一種是中斷級的調(diào)度器。72、void OSTimeDly(INT16U ticks)中參數(shù)ticks是指_定時計數(shù)器確定的時間段,又稱節(jié)拍_。73、OSTimeDly()或OSTimeDlyHMSM( )的作用是_延時操作_。74、如果OSEventGrp的值是
46、01101000(二進制),而對應(yīng)的OSUnMapTblOSEventGrp值為3,如果.OSEventTbl3的值是11100100(二進制),OSUnMapTblOSEventTbl3的值為2,則處于等待狀態(tài)的任務(wù)的最高優(yōu)先級是3×8+226。75、能防止出現(xiàn)優(yōu)先級反轉(zhuǎn)現(xiàn)象的信號叫做互斥型信號量。76、消息郵箱是能在任務(wù)之間傳遞消息的指針的數(shù)據(jù)結(jié)構(gòu)。77、µC/OS-II的任務(wù)狀態(tài)有5個狀態(tài);分別是:1)睡眠狀態(tài);2)就緒狀態(tài);3)運行狀態(tài);4)等待狀態(tài);5)中斷服務(wù)狀態(tài)。78、從任務(wù)的存儲結(jié)構(gòu)來看,µC/OS-II的任務(wù)由三個組成部分構(gòu)成,其三部分為:1)任
47、務(wù)程序代碼;2)任務(wù)堆棧;3)任務(wù)控制塊。79、µC/OS-II任務(wù)優(yōu)先級最多可建立64級,其中設(shè)定級為最高級。80、操作消息隊列時向指針數(shù)組中插入消息指針有2種方式,它們是: 先進先出(FIFO)方式和后進先出(LIFO)方式。81、µC/OS-II任務(wù)的代碼結(jié)構(gòu)是( C )。A) 對象結(jié)構(gòu);B)數(shù)據(jù)結(jié)構(gòu);C)一個帶有臨界段的無限循環(huán);D)表結(jié)構(gòu)。82、µC/OS-II的任務(wù)控制塊是采用( B )結(jié)構(gòu)。A)一條鏈表;B)兩條鏈表;C)三條鏈表;D)四條鏈表;83、µC/OS-II中指向當(dāng)前正在運行的任務(wù)指針為( B )。A)OSTCBList B) O
48、STCBCur C)OSTCBFreeList D) OSEVENTList84、µC/OS-II中空任務(wù)控制鏈表的創(chuàng)建是由( B )函數(shù)實現(xiàn)的。A)OSTCBInit( ) B) OSInit( ) C)OSTaskCreate( ) D) OSStart( )85、解決任務(wù)優(yōu)先級反轉(zhuǎn)現(xiàn)象的方法是建立( D )A)消息郵箱 B)信號量 C)消息隊列 D) 互斥型信號量86、變量OSRdyGrp有作用是( C )?A) 記錄就緒任務(wù)的分組信息 B)記錄就緒任務(wù)優(yōu)先級 C)記錄就緒表分組后組內(nèi)有否就緒信息 C)記錄就緒任務(wù)是否就緒87、請求信號量函數(shù)是( D )。A)OSFlagPen
49、d() B) OSMboxPend() C)OSQPend() D) OSSemPend( )88、µC/OS-II中OSTCBDly變量是按( C )計算進行的。A)秒 B)毫秒 C)節(jié)拍 D)微秒89、什么是代碼的臨界區(qū)?答:代碼的監(jiān)界區(qū)是指處理時不可分割的代碼,運行這些代碼不允許被打斷。一旦這部分代碼開始執(zhí)行,則不允許任何中斷打入。中斷不調(diào)用任何臨界區(qū)的代碼或不訪問任何臨界區(qū)使用的共享資源時,這個中斷是可能可以執(zhí)行。為確保臨界區(qū)代碼的執(zhí)行,在進入臨界區(qū)之前要關(guān)中斷,而臨界區(qū)代碼執(zhí)行完成以后要立即開中斷。90、什么是嵌入式操作系統(tǒng)?為何要使用嵌入式操作系統(tǒng)?答:運用在嵌入式系統(tǒng)上
50、的實時操作系統(tǒng),具有事件驅(qū)動和任務(wù)(進程)調(diào)度功能,且在有限時隙內(nèi)能完成事件的響應(yīng)和任務(wù)(進程)的切換,能可靠、實時、靈活地管理嵌入式系統(tǒng)上的各種資源和任務(wù)。使用嵌入式操作系統(tǒng),能方便實時應(yīng)用軟件的開發(fā)和有機地整合,能有效地管理和協(xié)調(diào)各項工作,因此是開發(fā)和運行非常重要的環(huán)境。91、請寫出從任務(wù)就緒表中獲取優(yōu)先級別最高的就緒任務(wù)優(yōu)先級prio的代碼段:答: y =OSUnMapTalOSRdyGrp;x=OSUnMapTalOSRdyTbly;prio = (y<<3)+x;或y=OSUnMapTblOSRdyGrp;prio = (INT8U)(y<<3)+OSUnMa
51、pTblOSRdyTbly);92、初始化函數(shù)OSInit( )對數(shù)據(jù)結(jié)構(gòu)進行初始化時,請舉出4個主要是創(chuàng)建內(nèi)容?答:主要創(chuàng)建的內(nèi)容是 (1)空的內(nèi)任務(wù)控制塊鏈表(OSTCBFreeList);(2)空的事件控制塊鏈表(OSEventFreeList);(3)空的消息隊列控制塊鏈表(OSQFreeList);(4)空的標(biāo)志控制塊鏈表(OSFlagFreeList);(5)存儲控制塊鏈表(OSMemFreeList);93、簡述µC/OS-II的中斷過程?答:系統(tǒng)接收到中斷請求后,如果這時CPU處于中斷允許狀態(tài)(即中斷是開放的),系統(tǒng)就會中止正在運行的當(dāng)前任務(wù),而按照中斷向量的指向轉(zhuǎn)而
52、去運行中斷服務(wù)子程序;當(dāng)中斷服務(wù)子程序的運行結(jié)束后,系統(tǒng)將會根據(jù)情況返回到被中止的任務(wù)繼續(xù)運行,或者轉(zhuǎn)向運行另一個具有更高優(yōu)先級別的就緒任務(wù)。94、為什么µC/OS-II的中斷服務(wù)子程序中不能請求信號量?答:這是由于OSSemPend()的執(zhí)行同時要執(zhí)行OSEventTaskWait(),而中斷服務(wù)子程序并非任務(wù)代碼,也就是非任務(wù)請求,顯然請求的實體不合理,導(dǎo)致程序執(zhí)行錯誤。95、任務(wù)級切換和中斷級任務(wù)切換為什么沒有使用同一切換函數(shù)? 答:中斷切換時要保護的操作已在中斷服務(wù)子程序中完成,因此OSIntCtxSw( )中不包含保護代碼,即無需壓棧操作,而任務(wù)級切換OSCtxSw( )就
53、多一些保護代碼段。96、描述µC/OS-II中的信號量結(jié)構(gòu)組成?答:µC/OS-II中的信號量由兩部分組成:一個是信號量的計數(shù)值,它是一個16位的無符號整數(shù)(0 到65,535之間);另一個是由等待該信號量的任務(wù)組成的等待任務(wù)表。用戶要在OS_CFG.H中將OS_SEM_EN開關(guān)量常數(shù)置成1,這樣µC/OS-II才能支持信號量。97、互斥型信號量是如何防止優(yōu)先級反轉(zhuǎn)現(xiàn)象出現(xiàn)的?答:互斥型信號量是一個二值信號量,其事件控制塊中,成員OSEventCnt被分成了低8位和高8位兩部分,低8位用來存放信號值(該值為0xFF時,信號為有效,否則信號為無效),高8位用來存放避
54、免出現(xiàn)優(yōu)先級反轉(zhuǎn)現(xiàn)象而提升的優(yōu)先級別prio。當(dāng)任務(wù)占有一個獨占式共享資源時,事件控制塊的成員OSEventCnt低8位就不再是0xFF,如果任務(wù)的優(yōu)先級不是最高的,此時,就要將成員OSEventCnt高8位作為本任務(wù)的prio,以使任務(wù)的優(yōu)先級此時最高,防止優(yōu)先級反轉(zhuǎn)現(xiàn)象出現(xiàn)。 98、什么叫消息郵箱?答:在多任務(wù)間需要在任務(wù)與任務(wù)之間傳遞一個數(shù)據(jù)的方式,該數(shù)據(jù)是在存儲空間開出一個緩沖區(qū)的內(nèi)容,建立緩沖區(qū)指針,并能傳遞指針的數(shù)據(jù)結(jié)構(gòu)稱為消息郵箱。99、請描述標(biāo)志組中的OSFlagFlags和等待任務(wù)鏈表OSFlagNodeFlags作用?答:OSFlagFlags提供信號量集的所有信號狀態(tài),每一個信號占據(jù)一個二進制位。當(dāng)所占位為1時,表示此信號量集中該信號量有效,否則該信號量無效。從而辨別信號量集中信號量的分布特點。而等待任務(wù)鏈表OSFlagNod
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全責(zé)任協(xié)議合同
- 2025年貨運從業(yè)模擬考試題庫
- 2025年本溪a2貨運從業(yè)資格證模擬考試題
- 2025年鐵嶺下載b2貨運從業(yè)資格證模擬考試考試
- 電力負(fù)荷平衡合同(2篇)
- 某市人力資源和社會保障局2024年度政治生態(tài)分析報告
- 2024-2025學(xué)年高中地理課時分層作業(yè)1地球的宇宙環(huán)境含解析魯教版必修1
- 2024-2025學(xué)年高中英語Module5GreatPeopleandGreatInventionsofAncientChinaSectionⅡGrammar課后篇鞏固提升外研版必修3
- 2024-2025學(xué)年四年級語文上冊第五單元18爭吵說課稿語文S版
- 托班第一學(xué)期工作總結(jié)
- 五四制青島版三年級數(shù)學(xué)下學(xué)期教學(xué)計劃
- 2024年常德職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫
- ABB工業(yè)機器人應(yīng)用技術(shù) 課件 2.6系統(tǒng)輸入輸出與IO信號的關(guān)聯(lián)
- 山東省濟南市2023-2024學(xué)年高二上學(xué)期期末考試化學(xué)試題 附答案
- 2025 年福建省中考語文試題:作文試題及范文
- 短視頻運營績效考核表KPI-企業(yè)管理
- 慢性心衰的管理:2024年國家心衰指南更新
- 15J403-1-樓梯欄桿欄板(一)
- QC課題提高金剛砂地面施工一次合格率
- 呼吸科護理管理制度
- TCI 331-2024 工業(yè)污染源產(chǎn)排污核算系數(shù)制定通則
評論
0/150
提交評論