UCOSII系统移植详解

本文详细阐述了移植UCOSII操作系统所需的CPU前提条件,包括处理器的C编译器、中断支持、数据存储堆栈等。同时介绍了移植过程中需要编写的四个关键汇编语言函数,如OSStartHighRdy()和OSCtxSw()。文章还提到了实际移植时需要关注的三个关键文件:OS_CPU.h、OS_CPU_C.c和OS_CPU_A.s,并解析了其中涉及的OSTaskStkInit()、OSTaskCreateHook()等重要函数的用途和功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  一,移植UCOSII操作系统的CPU前提条件

1,处理器的C编译器能产生可重入型的代码,如果不行的话,那么就不能在任务之间随意的切换,因为当你切换到别的任务的时候,该任务在这个函数的数据就会被破坏。

2,处理器CPU支持中断,并能产生定时中断

3,用C语言就可以开关中断,进行任务切换

4,处理器CPU能够支持一定数量的数据存储硬件堆栈,也就是栈

5,处理器有将堆栈指针以及其他的CPU的寄存器的内容读出,并存储到堆栈或者内存中去的指令。任务切换的时候,需要将当前的CPU指针保存到刚刚执行的任务当中。然后切换到优先级更高的任务当中。

二,UCOSII实际移植的文件:

UCOSII的移植实例就是要求用户编写4个简单的汇编语言函数,如果编译器支持插入行汇编代码就可以将所有的与处理器相关的代码放置到OS_CPU_C.c里面种,就不需要适用汇编文件。
(1)OSStartHighRdy(); //使得最高优先级的任务运行的函数

OSStart()函数调用OSStartHighRdy()来使得就绪太任务中最高优先级的任务开始运行

void OSStartHighRdy()
{
    调用用户定义的OSTaskSwHook();
    OSRunning = TRUE;
    //得到将要恢复运行的任务的堆栈指针。
    stack pointer = OSTcbHighRdy->OSTCBStkPtr;
    //从新的堆栈中恢复处理器的所有的寄存器,就是把刚刚切换的堆栈保存到别的地方当中
    //执行中断返回,然后跳转PC指针到别的地方中去。
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒听雪落

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值