ucosii的移植,需要修改三个文件:
os_cpu.h 定义与编译器无关的数据类型,放置处理器相关代码和几个函数原型。
os_cpu_a.asm 需要汇编完成对一些函数,主要就是任务切换函数;
os_cpu_c.c 定义一些用户HOOK函数。
所谓的任务,即是一个死循环函数。
任务优先级:ucosii不支持多个任务优先级相同,每个任务的优先级必须不一样。
任务堆栈 :存储器中的一片连续存储空间。
任务控制块OS_TCB: 用来记录任务堆栈指针,任务当前状态以及任务优先级等任务属性。每个任务控制块有3个重要参数,任务函数指针、任务堆栈指针和任务优先级。
任务就绪表: 一个位图,记录系统中所有处于就绪状态的任务。
任务调度:一是在任务就绪表中查找优先级最高的就绪任务,二是实现任务的切换。
任务的5种状态:睡眠状态、就绪状态、运行状态、等待状态和中断服务状态。
在UCOSII中,与任务相关的几个函数
1,建立任务函数 OSTaskCreate \OSTaskCreateExt(提供一些附件功能)
一般用前者 OSTaskCreate( void(*task)(void*pd),void*pdata,OS_STK*ptos,INTU prio );
task 指向任务代码的指针
pdata 任务开始执行时,传递给任务的参数的指针
ptos 分配给任务的堆栈的栈顶指针
prio 任务的优先级
堆栈必须声明为OS_STK类型
2,任务删除函数:把任务置于睡眠状态 INT8U OSTaskDel(INT8U prio);
特别提示:任务不能随便删除,必须确保被删除任务的资源被释放的前提下才能删除!
3,请求删除任务函数 INT8U OSTaskDelReq(INT8U prio);
4,改变任务优先级函数 INT8U OSTaskChangePrio(INT8U oldprio,INT8U newpri