新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > μC/OS-III在Cortex-M3處理器上的移植

        μC/OS-III在Cortex-M3處理器上的移植

        作者: 時間:2012-05-03 來源:網絡 收藏

        d.JPG
        2.2.3 編寫os_cpu_c.c
        os_cpu_c.c文件包含了OSTaskStkInit()函數和若干鉤子函數。OSTaskStkInit()函數的作用是在創建任務時初始化任務棧,并返回新的棧頂位置。μC/基于的任務棧結構如圖1所示。其中PSR、PC、LR、R1、R0五個寄存器應賦予正確的初值,而其他11個寄存器的初值無關重要。

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

        e.JPG


        os_cpu_c.c文件中的鉤子函數是μC/為了擴展用戶功能而定義的。進行μC/時至少需要定義OSTaskSwHook()、OSIn itHook()、OSTimeTickHook()、OSIdleTaskHook()、OSStatTaskHook()、OSTaskCreateHook()、OSTaskDelHook()、OSTaskReturnHook()
        八個鉤子函數。為了簡單起見,本次不塒鉤子函數作功能擴展。
        2.3 CPU相關
        2.3.1 編寫cpu. h
        cpu.h頭文件主要包括對標準數據類型、字長、棧、臨界區的相關定義。標準數據類型與具體的編譯器相關,需要查閱相應的編譯器手冊。字長是32位,則CPU_DATA和CPU_ADDR皆定義為CPU_INT32U類型。使用滿降序棧,棧增長方向應為從高地址到低地址。臨界區方法選用CPU_CRITICAL_METHOD_STATUS_LOCAL。
        2.3.2 編寫cpu_a.asm
        cpu_a.asm文件的最主要部分是臨界區函數的實現。根據所選用的臨界區方法,中斷使能函數CPU_SR_Save()和中斷禁用函數CPU_SR_Res tore()代碼實現如下:
        f.JPG
        Cortex_M3的指令集提供了CLZ指令,則可選地使用匯編指令實現CPU_CntLeadZeros()函數,以加快μC/OS-III調度器查找最高優先級的就緒任務的速度,CPU_CntLeadZeros()函數匯編代碼實現如下:
        CPU_CntLeadZeros
        CLZ R0,R0
        BX LR



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 浠水县| 武邑县| 三门县| 肇庆市| 平原县| 安塞县| 赤峰市| 东方市| 四子王旗| 社会| 乌拉特前旗| 舒城县| 华坪县| 略阳县| 洛隆县| 灵武市| 高阳县| 安塞县| 英超| 青铜峡市| 博湖县| 沙田区| 英德市| 邹城市| 油尖旺区| 宝鸡市| 桐乡市| 时尚| 海口市| 历史| 青岛市| 都兰县| 铜鼓县| 克拉玛依市| 百色市| 加查县| 镇远县| 石林| 石景山区| 冕宁县| 新田县|