日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ucosII移植要修改的文件

發布時間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ucosII移植要修改的文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先,二話不說,先上ucos官網,官網才是學習的王道啊。ps:所有的知識都是參考官網。

移植ucos II 到一個芯片上,只需要修改下面三個文件:OS_CPU.H,OS_CPU_C.C,OS_CPU_A.ASM。

具體來說,移植主要包括以下幾項內容

(1).OS_CPU.H :用#define設置一些常量的值,聲明10個數據類型,用#define聲明三個宏。

(2).OS_CPU_C.C : 用C語言編寫六個簡單的函數。

(3).OS_CPU_A.ASM : 編寫四個匯編語言函數。

下面以移植到lPC2292上為例,理解下移植過程。

(1).首先看OS_CPU.H這個文件

下圖是我項目中的OS_CPU.H文件,可以看到,它包括兩部分的代碼,第一部分是定義與編譯器無關的數據類型,第二部分是與ARM7體系結構
相關的定義。

為什么要定義數據類型呢?

因為不同的微處理器有不同的字長,所以μC/OS-Ⅱ的移植包括了一系列的類型定義以確保其可移植性。這也是第一部分程序的作用。

程序用有這樣的一句

#define OS_STK_GROWTH 1

這一句程序有什么作用?

它的作用是定義堆棧方向,絕大多數的微處理器和微控制器的堆棧是從上往下長的。但是某些處理器是用另外一種方式工作的。μC/OS-Ⅱ
被設計成兩種情況都可以處理,只要在結構常量OS_STK_GROWTH中指定堆棧的生長方式(如下所示)就可以了。置OS_STK_GROWTH為0表示堆棧從
下往上長。置OS_STK_GROWTH為1表示堆棧從上往下長。

(2).其次看OS_CPU_C.C這個文件

在這個文件里我們需要編寫以下六個函數

OSTaskStkInit()

//初始化任務堆棧結構

OSTaskCreateHook()

//允許用戶或使用用戶的移植實例的用戶擴展μC/OS-Ⅱ的功能

OSTaskDelHook()

//該函數在把任務從μC/OS-Ⅱ的內部任務鏈表中解開之前被調用

OSTaskSwHook()

//當發生任務切換的時候調用OSTaskSwHook()

OSTaskStatHook()

//用戶可以用OSTaskStatHook()來擴展統計功能

OSTimeTickHook()

OSTaskTimeHook()在每個時鐘節拍都會被OSTaskTick()調用

事實上,上面的六個函數只有OSTaskStkInit()是必須編寫的,而其它的五個函數只需定義就可。

在我的項目里OS_CPU_C.C,也編寫了OSTaskStkInit()這個函數。

(3).最后看OS_CPU_A.ASM這個文件

這個文件都是匯編,絕對可以讓你看得醉生欲死,欲罷不能,你懂我的。

在OS_CPU_A.ASM這個文件里要求用戶編寫四個簡單的匯編語言函數:

OSStartHighRdy()

OSCtxSw()

OSIntCtxSw()

// OSIntCtxSw()是μC/OS-Ⅱ(和μC/OS)中唯一的與編譯器相關的函數

OSTickISR()

編寫上面四個函數要求對cpu的工作原理有深入的理解。

轉載于:https://www.cnblogs.com/cjiejie/articles/5361802.html

總結

以上是生活随笔為你收集整理的ucosII移植要修改的文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。