新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > μC/OS-II在ARM平臺上移植的深入探討

        μC/OS-II在ARM平臺上移植的深入探討

        作者: 時間:2010-07-26 來源:網絡 收藏
        μ是一個重要的學習過程,有助于提高對RTOS的認識與理解,從而提高嵌入式工作者的理論與技術水平。μ是一個小的實時內核,源代碼公開,有詳盡的解釋。正是因為其內核小,才便于研究、理解和掌握。另外,參照TCP/IP協議、標準和一些公開的圖書,在μ上增加TCP/IP協議棧,藍牙通信軟件、紅外通信協議也十分方便,商業價值得到了認可。
        隨著科技的發展,嵌入式應用的復雜性越來越高,同時體系處理器的價格越來越低, + 實時操作系統的架構體系的使用會越來越廣泛。有鑒于此,本文對μC/OS-II在ARM下的進行了
        1 操作系統μC/OS-II及S3C2410開發平臺簡介
        1.1 μC/OS-II簡介

        μC/OS最早出自于1992年美國嵌入式系統專家Jean J.Labrosse在《嵌入式系統編程》雜志5月和6月上刊登的文章連載,并把μC/OS的源代碼發表在該雜志的BBS上。μC/OS-II是目前最新的版本。
         μC/OS-II是專門為計算機的嵌入式應用而設計的,絕大部分代碼用C語言編寫。CPU的相關部分采用匯編語言編寫,總量在200行左右的匯編語言被壓縮到最低限度,目的是便于到任何一種其他的CPU上去。μC/OS-II具有執行效率高、占用空間小、實時性優良、可擴展等特點,最小內核可編譯至2 KB。μC/OS-II可移植到幾乎所有知名的CPU上。
        1.2 μC/OS-II的組成
        嚴格地說μC/OS-II只是一個實時操作系統內核,它僅僅包含了任務調度、任務管理、時間管理、內存管理和任務間的通信和同步等基本功能。沒有提出輸入輸出管理、文件系統、網絡通信等額外的服務。但由于μC/OS-II良好的可擴展性和源代碼開放,這些非必須的功能完全可以由用戶根據自己的需要分別實現。
        μC/OS-II可以大致分成核心、任務處理、時間處理、任務同步與通信、CPU的移植等5個部分[1]。
        (1)核心部分(OSCore.c):操作系統的處理核心,包括操作系統的初始化、操作系統運行、中斷進出的前導、時鐘節拍、任務調度、事件處理等多部分。
        (2)任務處理部分(OSTask.c):與任務操作密切相關的部分。包括任務的建立、刪除、掛起、恢復等等。
        (3)時鐘部分(OSTime.c):μC/OS-II中最小的時鐘單位是timetick(時鐘節拍)。任務延時等操作在此完成。
        (4)任務同步和通信部分:為事件處理部分,包括信號量、郵箱、郵箱隊列、事件標志等部分,主要用于任務間的相互聯系和對臨界資源的訪問。
        (5)與CPU的接口部分:這里是指μC/OS-II針對所使用的CPU需要改寫的部分。由于μC/OS-II是一個通用性的操作系統,其開放的源代碼是以X86內核為例而編寫的,在應用到其他處理器平臺上時,這部分代碼必須做相應的改變。
        1.3 ARM硬件開發平臺簡介
        調試時所用的硬件開發平臺是一款基于三星S3C2410A芯片的開發平臺。S3C2410開發板是一款通用的ARM9開發板,其基本配置采用三星公司的S3C2410 ARM920T芯片,主頻203 MHz。集成有SDRAM控制器、NAND Flash控制器、SD讀卡器、USB Host和USB Device控制器、LCD控制器、I2C總線控制器、SPI總線接口等。開發板上Flash空間為32 MB,SDRAM容量為128 MB。
        2 S3C2410引導程序
        開發板原有引導程序由VIVI公司提供,其運行過程分成兩個階段。第一階段的代碼用匯編語言編程,主要完成以下任務: (1)初始化CPU速度、存儲器、存儲器配置寄存器,以及串口等硬件資源的配置;(2)建立內存空間的映射圖,將系統的軟硬件環境帶到合適的狀態,為最終調用操作系統內核做準備; (3)裝載操作系統映像到內存中;(4)設置相關寄存器和資源,跳轉到main()函數,進入第二階段。
        第二階段的代碼用C語言編寫,從main()函數開始,主要工作有:開發板外部接口初始化(I/O接口、UART接口、LCD接口等)、內存映射和內存管理單元初始化等,最后啟動linux內核。有大量文章對此開發板引導程序作了詳細的分析[3],本文在這里不做重復,本文的重點是將引導程序與μC/OS-II操作系統二者融合,既利用了開發板源代碼提供的關于UART口、LCD和觸摸屏接口程序;時鐘、內存管理等豐富的驅動程序和接口程序,又成功地完成了對μC/OS-II實時操作系統的移植和整合。
        3 移植要點
          μC/OS-II的內核分成2個部分,與處理器無關的代碼和與處理器有關的代碼。移植過程中需要根據S3C2410處理器和ADSV1.2開發平臺(這里特地強調編譯平臺的因素,主要考慮到各個編譯平臺對數據格式的理解略有差別)的特點來重新編寫3個文件,用C語言編寫的OS_CPU.H、OS_CPU_C.C和用匯編語言編寫的OS_CPU_A.ASM,此外,要將S3C2410開發板引導程序和μC/OS-II內核程序融合在一起,還必須將各自main()函數融為一體。
        3.1 OS_CPU.H的移植
        μC/OS-II內核中OS_CPU.H代碼是根據X86內核而寫的,其中的數據格式定義與ARM9內核以及ADSv1.2開發平臺不完全相符。OS_CPU.H的移植分為以下4個部分:

        tcp/ip相關文章:tcp/ip是什么



        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 桦甸市| 佛学| 西平县| 东阳市| 临夏县| 崇信县| 曲沃县| 花垣县| 沁水县| 宁波市| 泰和县| 孝昌县| 麻栗坡县| 乌什县| 锡林郭勒盟| 阜南县| 泰和县| 呼伦贝尔市| 龙川县| 上林县| 平原县| 嵊泗县| 新绛县| 尼勒克县| 巴青县| 上林县| 诸城市| 桐城市| 庄浪县| 扶沟县| 化隆| 蒲城县| 民县| 武清区| 青岛市| 读书| 盖州市| 无棣县| 钟山县| 宜兰县| 东宁县|