0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32入門學習筆記之uCOS-II系統(tǒng)移植2

jf_78858299 ? 來源:滑小稽筆記 ? 作者:電子技術(shù)園地 ? 2023-02-16 16:13 ? 次閱讀

23.2 uCos-II移植

我們將下載好的uCOS-II的源代碼解壓出來如下圖所示。

圖片

23.2.1 在工程中添加相應的文件

(1)在工程目錄下建立UCOSII文件夾,并在該文件夾內(nèi)新建三個文件夾CONFIG,CORE和PORT

(2)將除了os_cfg_r.h和os_dbg_r.c這兩個文件以外的所有文件全部復制到CORE文件夾下

(3)在CONFIG文件夾中新建includes.h文件和os_cfg.h文件

(4)在PORT文件夾中新建os_cpu.h,os_cpu_a.asm,os_cpu_c.c這3個文件

(5)在工程中添加這三個目錄下的文件,如下圖所示。

圖片

注:不要把ucos-ii.c文件添加到UCOS-CORE分組中,否則會提示有重復定義錯誤。

23.2.2 文件修改

我們編譯工程后可以發(fā)現(xiàn)報了11個錯誤,但都是同一個錯誤,如下圖所示。

圖片

我們在移植的時候并沒有發(fā)現(xiàn)這個文件,那是因為我們并沒有用到這個文件,這個文件是在ucos-ii.h文件中引用的,我們跳轉(zhuǎn)到這個文件將其屏蔽掉。

:我們可以發(fā)現(xiàn)在修改的時候,文件雖然可以打開,但是修改不了,這是因為我們下載的源碼都被設置成了只讀模式,在工程中只讀文件會有一個鑰匙的標志,這就需要我們將文件的只讀屬性去掉即可。

圖片

圖片

去掉只讀屬性之后,我們會發(fā)現(xiàn)項目中的文件上鑰匙標志消失了,如下圖所示。

圖片

此時,我們就可以對文件內(nèi)容進行修改了。打開ucos_ii.h文件,屏蔽44行的文件引用,如下圖所示。

圖片

此時會發(fā)現(xiàn)報更多的錯誤,此時我們進行新建文件的修改。

(1)os_cpu_a.asm文件詳解

①這部分代碼主要用于定義外部變量,IMPORT表示這是一個外部變量,不是在本程序內(nèi)定義的,EXPORT則表示這些函數(shù)位于該文件內(nèi),供其他文件調(diào)用,類似于C語言中的extern關(guān)鍵字。

IMPORT  OSRunning
  IMPORT  OSPrioCur
  IMPORT  OSPrioHighRdy
  IMPORT  OSTCBCur
  IMPORT  OSTCBHighRdy
  IMPORT  OSIntNesting
  IMPORT  OSIntExit
  IMPORT  OSTaskSwHook


  EXPORT  OSStartHighRdy
  EXPORT  OSCtxSw
  EXPORT  OSIntCtxSw
  EXPORT  OS_CPU_SR_Save
  EXPORT  OS_CPU_SR_Restore
  EXPORT  PendSV_Handler

②EQU和C語言中的define關(guān)鍵字一樣,用于宏定義,定義了一些寄存器的地址

NVIC_INT_CTRL    EQU    0xE000ED04      ;中斷控制寄存器
NVIC_SYSPRI2    EQU    0xE000ED20      ;系統(tǒng)優(yōu)先級寄存器
NVIC_PENDSV_PRI  EQU    0xFFFF0000      ;PendSV中斷和系統(tǒng)節(jié)拍中斷
NVIC_PENDSVSET    EQU    0x10000000      ;觸發(fā)軟件中斷的值
  PRESERVE8


  AREA    |.text|, CODE, READONLY
  THUMB

③OS_CPU_SR_Save和OS_CPU_SR_Restore是用于開關(guān)中斷的匯編函數(shù),通過給PRIMASK寫1來關(guān)閉中斷,寫0來開啟中斷,這里也可以使用CPS指令來快速開關(guān)中斷

OS_CPU_SR_Save
  MRS    R0, PRIMASK            ;讀取PRIMASK到R0,R0為返回值 
  CPSID  I                ;PRIMASK=1,關(guān)中斷(NMI和硬件FAULT可以響應)
  BX    LR                ;返回


OS_CPU_SR_Restore
  MSR    PRIMASK, R0            ;讀取R0到PRIMASK中,R0參數(shù)
  BX    LR                ;返回

④OSStartHighRdy是由OSStart()調(diào)用,用來開啟多任務,如果多任務開啟失敗就會進入OSStartHang函數(shù)中

OSStartHighRdy
  LDR     R4, =NVIC_SYSPRI2        ;設置PendSV優(yōu)先級
  LDR     R5, =NVIC_PENDSV_PRI
  STR     R5, [R4]
  MOV     R4, #0              ;設置PSP=0
  MSR     PSP, R4
  LDR     R4, =OSRunning          ;設置OSRunning=1
  MOV     R5, #1
  STRB    R5, [R4]
  ;切換到最高優(yōu)先級的任務
  LDR     R4, =NVIC_INT_CTRL        ;R4=NVIC_INT_CTRL
  LDR     R5, =NVIC_PENDSVSET      ;R5=NVIC_PENDSVSET
  STR     R5, [R4]
  CPSIE   I                ;開啟所有中斷
OSStartHang
  B       OSStartHang            ;死循環(huán)
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6023

    文章

    44376

    瀏覽量

    628449
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6545

    瀏覽量

    122747
  • uCOS-Ⅱ
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    8581
收藏 人收藏

    評論

    相關(guān)推薦

    快速實現(xiàn)STM32移植ucos-ii

    快速實現(xiàn)STM32移植ucos-ii,歡迎大家一起學習[groupid=618]單片機項目開發(fā)設計群[/groupid]
    發(fā)表于 08-08 16:28

    UCOS-II系統(tǒng)移植問題

    這幾天剛剛開始學習UCOS-II系統(tǒng)移植,我用的是野火開發(fā)板。資料上說是對startup_stm32f10x_hd.s 文件進行修改,但是我
    發(fā)表于 09-12 12:27

    uCOS-II理解和學習路線

    最近為啦準備嵌入式比賽,重拾stm32學習。再次學習也算基本掌握查看調(diào)用STM32固件庫v3.5啦,覺得這才算入門
    發(fā)表于 08-23 09:15

    ucOS-II入門經(jīng)典教程

    ucOS-II入門經(jīng)典教程,ucOS-II入門經(jīng)典教程
    發(fā)表于 11-06 10:07 ?0次下載

    基于STM32F2xx庫建立uCOS-II工程

    基于STM32F2xx庫建立uCOS-II工程
    發(fā)表于 11-05 17:05 ?28次下載

    盤古STM32F103開發(fā)板移植uCOS-II詳細說明

    盤古STM32F103開發(fā)板移植uCOS-II詳細說明
    發(fā)表于 03-02 17:29 ?13次下載

    STM32平臺移植uCOS-II詳細說明-2012.11.13

    STM32平臺移植uCOS-II詳細說明-2012.11.13
    發(fā)表于 03-04 15:31 ?12次下載

    ucos-ii中文書籍

    ucos-ii中文書(邵貝貝).rar 入門經(jīng)典書籍
    發(fā)表于 03-11 11:02 ?6次下載

    ucOS-II入門經(jīng)典教程

    ucOS-II入門經(jīng)典教程,感興趣可以看看。
    發(fā)表于 07-25 18:52 ?45次下載

    uCOS-ii中文書

    學習uCOS-ii的最好中文教材,uCOS-ii中文書(邵貝貝)
    發(fā)表于 08-24 18:31 ?0次下載

    uCOS-II原理1

    原理uCOS-II
    發(fā)表于 12-20 22:58 ?5次下載

    uCOS-II原理2

    uCOS-II原理2
    發(fā)表于 12-20 22:53 ?0次下載

    uCOS-II原理3

    uCOS-II原理3
    發(fā)表于 12-20 22:52 ?0次下載

    uCOS-II在MSP430移植

    uCOS-II在MSP430移植
    發(fā)表于 10-12 17:24 ?9次下載
    <b class='flag-5'>uCOS-II</b>在MSP430<b class='flag-5'>移植</b>

    手把手盤古STM32開發(fā)板移植uCOS-II教程

    手把手盤古STM32開發(fā)板移植uCOS-II教程
    發(fā)表于 10-16 09:38 ?22次下載