新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于NIOS II的uC/OS系統的開發

        基于NIOS II的uC/OS系統的開發

        作者: 時間:2016-09-12 來源:網絡 收藏

        1、uC/OSII簡介

        本文引用地址:http://www.104case.com/article/201609/305167.htm

        u C / O S 是一種免費公開源代碼、結構小巧、具有可剝奪實時內核的實時操作系統。

        μC/OS-II 的前身是μC/OS,最早出自于1992 年美國嵌入式系統專家Jean J.Labrosse 在《嵌入式系統編程》雜志的5 月和6 月刊上刊登的文章連載,并把μC/OS 的源碼發布在該雜志的B B S 上。

        μC/OS 和μC/OS-II 是專門為計算機的嵌入式應用設計的, 絕大部分代碼是用C語言編寫的。CPU 硬件相關部分是用匯編語言編寫的、總量約200行的匯編語言部分被壓縮到最低限度,為的是便于移植到任何一種其它的CPU 上。用戶只要有標準的ANSI 的C交叉編譯器,有匯編器、連接器等軟件工具,就可以將μC/OS-II嵌人到開發的產品中。μC/OS-II 具有執行效率高、占用空間小、實時性能優良和可擴展性強等特點, 最小內核可編譯至 2KB 。μC/OS-II 已經移植到了幾乎所有知名的CPU 上。

        嚴格地說uC/OS-II只是一個實時操作系統內核,它僅僅包含了任務調度,任務管理,時間管理,內存管理和任務間的通信和同步等基本功能。沒有提供輸入輸出管理,文件系統,網絡等額外的服務。但由于uC/OS-II良好的可擴展性和源碼開放,這些非必須的功能完全可以由用戶自己根據需要分別實現。

        uC/OS-II目標是實現一個基于優先級調度的搶占式的實時內核,并在這個內核之上提供最基本的系統服務,如信號量,郵箱,消息隊列,內存管理,中斷管理等。

        1.1任務管理

        uC/OS-II 中最多可以支持64 個任務,分別對應優先級0~63,其中0 為最高優先級。63為最低級,系統保留了4個最高優先級的任務和4個最低優先級的任務,所有用戶可以使用的任務數有56個。

        uC/OS-II提供了任務管理的各種函數調用,包括創建任務,刪除任務,改變任務的優先級,任務掛起和恢復等。

        系統初始化時會自動產生兩個任務:一個是空閑任務,它的優先級最低,該任務僅給一個整形變量做累加運算;另一個是系統任務,它的優先級為次低,該任務負責統計當前cpu的利用率。

        1.2 時間管理

        uC/OS-II的時間管理是通過定時中斷來實現的,該定時中斷一般為10毫秒或100毫秒發生一次,時間頻率取決于用戶對硬件系統的定時器編程來實現。中斷發生的時間間隔是固定不變的,該中斷也成為一個時鐘節拍。

        uC/OS-II要求用戶在定時中斷的服務程序中,調用系統提供的與時鐘節拍相關的系統函數,例如中斷級的任務切換函數,系統時間函數。

        1.3 內存管理

        在ANSI C中是使用malloc和free兩個函數來動態分配和釋放內存。但在嵌入式實時系統中,多次這樣的操作會導致內存碎片,且由于內存管理算法的原因,malloc和free的執行時間也是不確定。

        uC/OS-II中把連續的大塊內存按分區管理。每個分區中包含整數個大小相同的內存塊,但不同分區之間的內存快大小可以不同。用戶需要動態分配內存時,系統選擇一個適當的分區,按塊來分配內存。釋放內存時將該塊放回它以前所屬的分區,這樣能有效解決碎片問題,同時執行時間也是固定的。

        1.4 任務間通信與同步

        對一個多任務的操作系統來說,任務間的通信和同步是必不可少的。uC/OS-II中提供了4中同步對象,分別是信號量,郵箱,消息隊列和事件。所有這些同步對象都有創建,等待,發送,查詢的接口用于實現進程間的通信和同步。

        1.5 任務調度

        uC/OS-II 采用的是可剝奪型實時多任務內核。可剝奪型的實時內核在任何時候都運行就緒了的最高優先級的任務。

        uC/os-II的任務調度是完全基于任務優先級的搶占式調度,也就是最高優先級的任務一旦處于就緒狀態,則立即搶占正在運行的低優先級任務的處理器資源。為了簡化系統設計,uC/OS-II規定所有任務的優先級不同,因為任務的優先級也同時唯一標志了該任務本身。

        uC/OS-II詳細用法可參考相關資料。

        2、FPGA下的uC/OS-II

        下面就介紹怎樣在以黑金開發板EP2C208上進行uC/OSII實驗。

        第一步:添加一個用于系統時鐘節拍的定時器timer_ucos,定時時間為100ms(根據任務定)。

        第二步:在Nios下設置相關選項。請看下面操作步驟。

        打開Quart II工程,以黑金開發板EP2C208的工程為例,進入SOPC Builder界面下如圖:

        基于NIOS II的uC/OS系統的開發

        在左側的“System Contents”下單擊Peripherais的左側“

        clip_image004

        ”;在彈出的菜單下單擊Microcotroller Peripherais的左側“

        clip_image004[1]

        ”;如下圖。

        clip_image006

        找到 “Interval Timer”并雙擊,彈出如下圖并按下圖進行相關設置,單擊完成。

        基于NIOS II的uC/OS系統的開發

        命名為timer_ucos;如下圖。

        基于NIOS II的uC/OS系統的開發

        時鐘節拍定時器到此已添加完成,單擊Generate按鈕生成SOPC系統。

        接下來對Quart II工程進行編譯并把 “.pof”通過AS接口下接到EPCS中。至此Quart II工程工作完畢.。


        上一頁 1 2 3 4 5 6 7 8 9 10 11 下一頁

        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 广丰县| 寿阳县| 临泉县| 安阳县| 白玉县| 平泉县| 万盛区| 颍上县| 九寨沟县| 河津市| 芦溪县| 凤庆县| 疏附县| 凌源市| 霍州市| 古交市| 蒙阴县| 夏邑县| 随州市| 平顶山市| 湘阴县| 桐乡市| 石楼县| 精河县| 汕头市| 东阳市| 木里| 皋兰县| 开原市| 兰州市| 文成县| 淳化县| 义乌市| 巫山县| 隆尧县| 临邑县| 朔州市| 泗洪县| 灵川县| 察雅县| 伊宁县|