TI-RTOS多任务编程

最近在做一些关于一些驱动向TI板子的移植集成的事情,涉及操作系统为RTOS实时操作系统,在这里简单的记录一下。本文主要叙述如何进行多任务的编程,以及我在编程中遇到的一些不解。

  1. Task组成部分:任务函数,任务参数(属性),任务堆栈.
实际上Task是sys/bios提供的一种并发编程手段,也是实时操作系统必备要素之一,
和我们常见到的线程是一个道理,换了个说法。
  1. Task类型:硬中断HWI,软中断SWI,任务Task,空闲任务IDLE.
  2. 优先级排列:硬中断HWI>软中断SWI>任务Task>空闲任务IDLE.
举个例子:
同时存在四种任务,优先处理硬中断;
如果只存在一种类型任务,优先处理该类型中优先级高的任务;
如果只存在一种类型任务,且优先级相同,任务调度取决于系统调度程序;
(特殊情况除外)
  1. 四种类型任务释义
硬中断:实时环境中,它是响应外部触发的异步事件(中断)-----优先级不由sys/bios管理,由cpu的特性决定。
虽然优先级最高,当然也可以被中断。

软中断:软件中断服务例程 ------优先级可以达到 32 级,默认只有 16 级。
SWI 可以被更高优先级的 SWI 和 HWI 抢占,但是 SWI 是不会阻塞的。

任务:用户任务,运行过程中,可以被阻塞直到必要的资源可用;
TASK 要求每个任务要有自己独立的栈空间。
SYS/BIOS 提供了一些机制用于 TASK 间的同步和通信,它们有信号量(Semphore),事件(Events),队列(Queue)和邮箱(Mailboxes)。
优先级也可以达到 32 级,默认是 16 级。
Task 优先级数值越大,其优先级就越高,0 是优先级最低的。Task_setPri 函数动态的更改。新的优先级必须在 1 到 TnumPriorities – 1 之间。当新优先级数低于当前优先级时,可能会发生任务的切换。

空闲任务:优先级最低的任务。
当 SYS/BIOS 没有比空闲任务更高的任务运行时,SYS/BIOS 就会执行空闲任务,并且是连续执行,直到有更高的任务进入就绪状态。
其运行在Task任务 0 优先级上。
  1. 创建一个task过程:
#include <app.h>
#include <utils/console_io/include/app_log.h>
#include <xdc/runtime/Error.h>
#include <ti/sysbios/BIOS.h>
#include <ti/sysbios/knl/Task.h>
#include <app_ipc_rsctable.h>

static Void appMain(UArg arg0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值