久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: uC/OS-II學習筆記—操作系統初始化 [打印本頁]

作者: xueren    時間: 2013-7-16 02:19
標題: uC/OS-II學習筆記—操作系統初始化
操作系統初始化函數OS_Init是操作系統在開始運行時,對全局變量、任務控制塊、就緒表、事件及消息隊列等重要數據結構進行的初始化操作,并創建空閑任務、統計任務等系統任務。該函數必須在創建用戶對象及調用OSStart()啟動實時任務調度之前運行。
內核初始化函數采用模塊化編程,該函數又分為若干子塊,每個子塊實現一定的功能。操作系統初始化函數OS_Init聲明代碼如下所示:

如上面的程序所示,OS_InitMisc實現對操作系統一些混雜的全局變量的初始化(Misc是單詞miscellaneous的前4個字母,是雜項的意思),這些混雜的全局變量是初始化過程或運行過程中需要使用的,因此在第一步完成,非常重要。

這些全局變量在ucos_ii.h中聲明,在這里進行了初始化。接下來的OS_InitRdyList對就緒表進行初始化的工作,程序代碼如下所示:

可見,該函數首先對就緒表和就緒組全部清零,然后對4個重要的任務相關的全局變量進行了初始化。前兩個是當前任務的優先級和最高任務的優先級,后兩個是對應的兩個任務控制塊的指針。
下面該輪到任務控制塊了,由于沒有任務,任務控制塊的兩個鏈表應該初始化為什么樣子呢?
在有用戶任務運行之前,因為沒有用戶任務就緒,就緒鏈表該是個空鏈表。而空閑鏈表這個時候應該是最長的,它的長度是操作系統能容納的任務數。代碼如下所示:


到這里,全局變量、就緒表、就緒組、任務優先級指針表、空閑鏈表、就緒鏈表等重要數據結構都已經完成了初始化的操作。
接下來OS_InitEventList對時間所用數據結構進行初始化,OS_FlagInit對事件標志數據結構進行初始化,OS_MemInit對內存進行初始化,OS_QInit對消息隊列進行初始化。
OS_InitTaskIdle將創建和初始化操作系統的第一個任務——空閑任務,該部分內容個如下所示:

這部分代碼主要是根據配置信息調用創建任務的函數創建空閑任務,其中,無論是OSTaskCreateExt還是OSTaskCreate的第一個參數,都是OS_TaskIdle,OS_TaskIdle是空閑任務函數的地址。該任務的優先級是OS_TASK_IDLE_PRIO,這是一個供用戶配置的宏,默認值是63,是最低優先級的任務。
接著,用類似的方法調用OS_InitTaskSta創建統計任務。

那么,在創建了這兩個系統任務后,那個任務運行了呢?沒有任務運行,因為還沒有真正啟動多任務。只是為任務分配和設置了它們生存的數據結構。
如果系統配置有定時器模塊,執行OSTmr_Init初始化定時器。
后面的兩個空函數,可以編寫合適的內容及顯示一些自己需要的調試信息。
操作系統初始化是操作系統開始運行時首先執行的函數,對操作系統使用的各種全局變量和重要的數據結構如任務控制塊及其鏈表、就緒表等進行初始化。接著創建兩個系統任務——空閑任務和統計任務。對這個流程的總結如下所示:







歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产午夜在线 | 欧美日韩中文字幕在线 | 国产乱码精品一区二区三 | av福利网站| 日产久久视频 | 成人国产精品久久久网站 | 婷婷97 | 日本国产视频 | 一级做a爱片性色毛片 | 日韩精品久久久久久久 | 色婷婷国产 | 五月开心激情网 | 亚洲国产天堂 | 天天色播 | 欧美国产一区二区三区 | 日韩精品一区在线观看 | 亚洲精选在线观看 | 在线观看免费av网站 | 日本色综合| 成人在线播放视频 | 四虎黄色片 | 三a毛片| 九九色影院 | 天天干视频 | 国产成人亚洲精品自产在线 | 欧美日韩一区二 | 日韩在线专区 | 亚洲综合在线视频 | 亚洲成人福利 | 秋霞福利视频 | 亚洲一区二区免费看 | 亚洲男人av| 91黄色片| 国产精品成人免费精品自在线观看 | 青青久久久| 亚洲成人av | 在线播放黄色 | 一区二区三区影院 | 国产黄视频在线观看 | 国产午夜在线 | 亚洲成人精品 |