新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > UC/OS II嵌入式技術

        UC/OS II嵌入式技術

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

        uC/OS-II的任務切換機理及中斷調度優化

        摘要:μC/OS-II是一種適用于嵌入式系統的搶占式實時多任務操作系統,開放源代碼,便于學習和使用。介紹μC/OS-II在任務級和中斷級的任務切換原理,以及這一操作系統基于嵌入式系統的對于中斷的處理;相對于內存資源較少的單片機,著重討論一種優化的實用堆棧格式和切換形式,以提高資源的利用率;結合MSP430單片機,做具體的分析。 關鍵詞:實時多任務操作系統 μC/OS MSP430 中斷 堆棧

        引 言

        在嵌入式操作系統領域,由Jean J. Labrosse開發的μC/OS,由于開放源代碼和強大而穩定的功能,曾經一度在嵌入式系統領域引起強烈反響。而其本人也早已成為了嵌入式系統會議(美國)的顧問委員會的成員。

        不管是對于初學者,還是有經驗的工程師,μC/OS開放源代碼的方式使其不但知其然,還知其所以然。通過對于系統內部結構的深入了解,能更加方便地進行開發和調試;并且在這種條件下,完全可以按照設計要求進行合理的裁減、擴充、配置和移植。通常,購買RTOS往往需要一大筆資金,使得一般的學習者望而卻步;而μC/OS對于學校研究完全免費,只有在應用于盈利項目時才需要支付少量的版權費,特別適合一般使用者的學習、研究和開發。自1992第1版問世以來,已有成千上萬的開發者把它成功地應用于各種系統,安全性和穩定性已經得到認證,現已經通過美國FAA認證。

        ● 1 μC/OS-II的幾大組成部分

        μC/OS-II可以大致分成核心、任務處理、時間處理、任務同步與通信,CPU的移植等5個部分。

        核心部分(OSCore.c) 是操作系統的處理核心,包括操作系統初始化、操作系統運行、中斷進出的前導、時鐘節拍、任務調度、事件處理等多部分。能夠維持系統基本工作的部分都在這里。

        任務處理部分(OSTask.c) 任務處理部分中的內容都是與任務的操作密切相關的。包括任務的建立、刪除、掛起、恢復等等。因為μC/OS-II是以任務為基本單位調度的,所以這部分內容也相當重要。

        時鐘部分(OSTime.c) μC/OS-II中的最小時鐘單位是timetick(時鐘節拍)。任務延時等操作是在這里完成的。

        任務同步和通信部分 為事件處理部分,包括信號量、郵箱、郵箱隊列、事件標志等部分;主要用于任務間的互相聯系和對臨界資源的訪問。

        與CPU的接口部分 是指μC/OS-II針對所使用的CPU的移植部分。由于μC/OS-II是一個通用性的操作系統,所以對于關鍵問題上的實現,還是需要根據具體CPU的具體內容和要求作相應的移植。這部分內容由于牽涉到SP等系統指針,所以通常用匯編語言編寫。主要包括中斷級任務切換的底層實現、任務級任務切換的底層實現、時鐘節拍的產生和處理、中斷的相關處理部分等內容。

        uC/OS II在S3C2410上的移植:

        隨著信息化技術的發展和數字化產品的普及,以計算機技術、芯片技術和軟件技術為核心的嵌入式系統再度成為當前研究和應用的熱點。

        對功能、可靠性、成本、體積和功耗嚴格要求的嵌入式系統一般由嵌入式微處理器、外圍硬件設備、嵌入式操作系統以及用戶的應用程序等四個部分組成,其中嵌入式微處理器和嵌入式操作系統分別是其硬件和軟件的核心。

        ARM處理器由于其具有小體積、低功耗、低成本、高性能等特點,廣泛應用在16/32位嵌入式RISC解決方案中,幾乎占有嵌入式微處理器市場分額的75% ,本文選定三星公司生產的一款基于ARM920T核的高性能低功耗SOC芯片S3C2410作為移植方案的硬件平臺。市場上主流的嵌入式實時操作系統有Vxworks、pSos、WinCE、Linux等,基于實時性、成本以及開發難度方面的考慮,我們選擇uC/OS II——開放源代碼的嵌入式實時操作系統。

        ● uC/OS II介紹

        uC/OS II(Micro Control Operation System Two)是一個可以基于ROM運行的、可裁減的、搶占式(見圖1)實時多任務內核,具有高度可移植性,特別適合于微處理器和控制器,是和很多商業操作系統性能相當的實時操作系統(RTOS)。為了提供最好的移植性能,uC/OS II最大程度上使用ANSI C語言進行開發,并且已經移植到近40多種處理器體系上,涵蓋了從8位到64位各種CPU(包括DSP)。

        uC/OS II可以簡單的視為一個多任務調度器,在這個任務調度器之上完善并添加了和多任務操作系統相關的系統服務,如信號量、郵箱等。其主要特點有公開源代碼,代碼結構清晰、明了,注釋詳盡,組織有條理,可移植性好,可裁剪,可固化。內核屬于搶占式,最多可以管理60個任務。從1992年開始,由于高度可靠性、魯棒性和安全性,uC/OS II已經廣泛使用在從照相機到航空電子產品的各種應用中。

        2 uC/OS II在S3C2410上的可移植性

        所謂移植,就是使這個實時內核能在某個微處理器上運行。為了方便移植,大部分的uC/OS II代碼是用c語言寫的,但仍需要用c和匯編語言寫一些與處理器相關的代碼,這是因為uC/OS II在讀寫處理器寄存器時只能通過匯編語言來實現。由于uC/OS II在設計時就已經充分考慮了可移植性,所以uC/OS II的移植相對來說是比較容易的。uC/OS II的框架結構如圖2。

        uC/OSII的正常運行需要處理器平臺滿足以下要求:

        a)處理器的C編譯器能產生可重入代碼。

        b)用C語言就可以打開和關閉中斷。

        c)處理器支持中斷,并且能產生定時中斷(通常在10至100Hz之間)。

        d)處理器支持能夠容納一定量數據(可能是幾千字節)的硬件堆棧。

        e)處理器有將堆棧指針和其它CPU寄存器讀出和存儲到堆棧或內存中的指令。

        S3C2410處理器采用ARM920T內核,內部共有37個寄存器,其中R13通常用作堆棧指針,只要系統RAM空間允許,堆棧空間理論上沒有限制。ARM處理器提供ARM指令和Thumb指令兩種指令集,每種指令集都包含有豐富的指令對堆棧進行操作,可以隨意的對處理器中的寄存器進行堆棧操作。根據堆棧生長方向的不同,可以生成4種不同的堆棧,分別是滿遞增、空遞增、滿遞減(此移植中使用的是滿遞減方式)、空遞減。芯片內集成5個定時時鐘,任何一個都可以產生定時中斷,滿足第三條要求。ADS集成開發環境的內置編譯器可以產生可重入代碼,并且支持內嵌匯編,C環境中可任意的進行開關中斷操作。綜上所述uC/OS II完全可以移植到S3C2410上運行。



        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 广元市| 永泰县| 北安市| 固安县| 济南市| 千阳县| 宿州市| 哈巴河县| 察雅县| 新昌县| 琼中| 盘山县| 余姚市| 茂名市| 阳朔县| 甘洛县| 金川县| 乌鲁木齐县| 会宁县| 长兴县| 中牟县| 德州市| 湛江市| 利辛县| 余姚市| 哈密市| 九龙城区| 四子王旗| 舟曲县| 美姑县| 古田县| 东乡| 新丰县| 密山市| 凤冈县| 北宁市| 广水市| 焉耆| 青岛市| 康定县| 化隆|