0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32入门学习笔记之uCOS-II系统移植2

jf_78858299 来源:滑小稽笔记 作者:电子技术园地 2023-02-16 16:13 次阅读

23.2 uCos-II移植

我们将下载好的uCOS-II的源代码解压出来如下图所示。

图片

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

(1)在工程目录下建立UCOSII文件夹,并在该文件夹内新建三个文件夹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 文件修改

我们编译工程后可以发现报了11个错误,但都是同一个错误,如下图所示。

图片

我们在移植的时候并没有发现这个文件,那是因为我们并没有用到这个文件,这个文件是在ucos-ii.h文件中引用的,我们跳转到这个文件将其屏蔽掉。

:我们可以发现在修改的时候,文件虽然可以打开,但是修改不了,这是因为我们下载的源码都被设置成了只读模式,在工程中只读文件会有一个钥匙的标志,这就需要我们将文件的只读属性去掉即可。

图片

图片

去掉只读属性之后,我们会发现项目中的文件上钥匙标志消失了,如下图所示。

图片

此时,我们就可以对文件内容进行修改了。打开ucos_ii.h文件,屏蔽44行的文件引用,如下图所示。

图片

此时会发现报更多的错误,此时我们进行新建文件的修改。

(1)os_cpu_a.asm文件详解

①这部分代码主要用于定义外部变量,IMPORT表示这是一个外部变量,不是在本程序内定义的,EXPORT则表示这些函数位于该文件内,供其他文件调用,类似于C语言中的extern关键字。

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关键字一样,用于宏定义,定义了一些寄存器的地址

NVIC_INT_CTRL    EQU    0xE000ED04      ;中断控制寄存器
NVIC_SYSPRI2    EQU    0xE000ED20      ;系统优先级寄存器
NVIC_PENDSV_PRI  EQU    0xFFFF0000      ;PendSV中断和系统节拍中断
NVIC_PENDSVSET    EQU    0x10000000      ;触发软件中断的值
  PRESERVE8


  AREA    |.text|, CODE, READONLY
  THUMB

③OS_CPU_SR_Save和OS_CPU_SR_Restore是用于开关中断的汇编函数,通过给PRIMASK写1来关闭中断,写0来开启中断,这里也可以使用CPS指令来快速开关中断

OS_CPU_SR_Save
  MRS    R0, PRIMASK            ;读取PRIMASK到R0,R0为返回值 
  CPSID  I                ;PRIMASK=1,关中断(NMI和硬件FAULT可以响应)
  BX    LR                ;返回


OS_CPU_SR_Restore
  MSR    PRIMASK, R0            ;读取R0到PRIMASK中,R0参数
  BX    LR                ;返回

④OSStartHighRdy是由OSStart()调用,用来开启多任务,如果多任务开启失败就会进入OSStartHang函数中

OSStartHighRdy
  LDR     R4, =NVIC_SYSPRI2        ;设置PendSV优先级
  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]
  ;切换到最高优先级的任务
  LDR     R4, =NVIC_INT_CTRL        ;R4=NVIC_INT_CTRL
  LDR     R5, =NVIC_PENDSVSET      ;R5=NVIC_PENDSVSET
  STR     R5, [R4]
  CPSIE   I                ;开启所有中断
OSStartHang
  B       OSStartHang            ;死循环
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6037

    文章

    44557

    浏览量

    635160
  • 操作系统
    +关注

    关注

    37

    文章

    6820

    浏览量

    123327
  • uCOS-Ⅱ
    +关注

    关注

    0

    文章

    9

    浏览量

    8585
收藏 人收藏

    评论

    相关推荐

    快速实现STM32移植ucos-ii

    快速实现STM32移植ucos-ii,欢迎大家一起学习[groupid=618]单片机项目开发设计群[/groupid]
    发表于 08-08 16:28

    UCOS-II系统移植问题

    这几天刚刚开始学习UCOS-II系统移植,我用的是野火开发板。资料上说是对startup_stm32f10x_hd.s 文件进行修改,但是我
    发表于 09-12 12:27

    uCOS-II理解和学习路线

    最近为啦准备嵌入式比赛,重拾stm32学习。再次学习也算基本掌握查看调用STM32固件库v3.5啦,觉得这才算入门
    发表于 08-23 09:15

    ucOS-II入门经典教程

    ucOS-II入门经典教程,ucOS-II入门经典教程
    发表于 11-06 10:07 0次下载

    基于STM32F2xx库建立uCOS-II工程

    基于STM32F2xx库建立uCOS-II工程
    发表于 11-05 17:05 28次下载

    盘古STM32F103开发板移植uCOS-II详细说明

    盘古STM32F103开发板移植uCOS-II详细说明
    发表于 03-02 17:29 13次下载

    STM32平台移植uCOS-II详细说明-2012.11.13

    STM32平台移植uCOS-II详细说明-2012.11.13
    发表于 03-04 15:31 12次下载

    ucos-ii中文书籍

    ucos-ii中文书(邵贝贝).rar 入门经典书籍
    发表于 03-11 11:02 6次下载

    ucOS-II入门经典教程

    ucOS-II入门经典教程,感兴趣可以看看。
    发表于 07-25 18:52 47次下载

    uCOS-ii中文书

    学习uCOS-ii的最好中文教材,uCOS-ii中文书(邵贝贝)
    发表于 08-24 18:31 0次下载

    uCOS-II原理1

    原理uCOS-II
    发表于 12-20 22:58 5次下载

    uCOS-II原理2

    uCOS-II原理2
    发表于 12-20 22:53 0次下载

    uCOS-II原理3

    uCOS-II原理3
    发表于 12-20 22:52 0次下载

    uCOS-II在MSP430移植

    uCOS-II在MSP430移植
    发表于 10-12 17:24 9次下载
    <b class='flag-5'>uCOS-II</b>在MSP430<b class='flag-5'>移植</b>

    手把手盘古STM32开发板移植uCOS-II教程

    手把手盘古STM32开发板移植uCOS-II教程
    发表于 10-16 09:38 22次下载