第一章
操作系统的主要功能:
1.处理器的管理: 对中断的管理 和 对处理器工作进行调度
2.存储的管理
3.设备的管理
4.文件的管理
5.网络和通信管理
6.提供用户接口
嵌入式计算机系统的特点:专用性强,可裁剪性好,实时性与可靠性好,功耗低
嵌入式操作系统的特点:微型化,可裁剪性,实时性,高可靠性,易移植性
实时操作系统的要求:逻辑成功 和 时间正确
实时操作系统的条件:1.必须是多任务系统
2.任务切换时间应与系统中的任务数无关
3.中断延时的时间可预知并尽可能短
任务代码:
void mytask(void *pdata)
{
for(;;)
{
用户编写的代码;
}
}
嵌入式操作系统主要提供内存管理,多任务管理,外围资源管理三项服务
第二章
1.任务在ucosII中有五种状态:
①睡眠状态
②就绪状态
③运行状态
④等待状态
⑤中断服务状态
2.用户任务代码的一般结构:
通常是一个无限循环结构,并且在循环中可以响应中断,这种结构也叫 超循环结构 。
例:
void Mytask(void *pdata)
{
for( ; ; )
{
可以被中断的用户代码;
OS_ENTER_CRITICAL(); //进入临界段,关中断
不可以被用户中断的用户代码;
OS_EXIT_CRITICAL(); //进入临界段,开中断
可以被中断的用户代码;
}
}
OSInit(); //初始化ucosII
OSTaskCreate(MyTask1,......);//创建任务函数
OSStart();//启动任务函数
3.系统任务:空闲任务和统计任务
空闲任务的代码如下:
void OSTaskIdle(void *pdata)
{
# if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr;
#endif
pdata = pdata; //防止某些编译器报错
for(; ; )
{
OS_ENTER_CRITICAL(); //关闭中断
OSdleCtr++; //计数
OS_EXIT_CRITICAL(); //打开中断
}
}
统计任务OSTaskStart()每秒计算一次cpu在单位时间内被使用的时间,并以百分比显示在OSCPUsage这个变量中。若用户使用这个统计任务,必须把在头文件OS_CFG.H中的系统配置常数OS_TASK_STAT_EN设置为1,在统计之前必须调用OSStatInit()对统计任务初始化。
4.ucosII 每个任务都具有唯一的优先级别,分位64个优先级别,其中0最高。常数OS_LOWEST_PRIO代表最低优先级别,一旦被定义,系统中的优先级别为0,1,2.......OS_LOWEST_PRIO,共OS_LOWEST_PRIO个。如果应用程序中还使用了统计任务,则系统会把优先级别OS_LOWEST_PRIO - 1自动赋给统计任务,因此用户可以使用的优先级别是0,1,2,......,OS_LOWEST_PRIO - 2,共OS_LOWEST_PRIO - 1个。
2.2任务堆栈
为了方便定义任务堆栈,在文件OS_CPU.H中专门定义了一个数据类型OS_STK:
typedef unsigned int OS_STK;
这样定义一个OS_STK类型的一个数组即可,例如:
#define TASK_STK_SIZE 512; //定义长度
OS_STK TaskStk[TASK_STK_SIZE]; //定义数组作为任务堆栈
调用函数OSTaskCreate()来创建一个任务时,数组的指针传递给函数中的堆栈栈顶餐胡ptos,就可以把数组与任务关联寄来
INT80 OSTaskCreate(
void (*task)(void *pd), //指向任务的指针
void *pdata, //传递给任务的参数
OS_STK *ptos, //任务堆栈栈顶的指针
INT8U prio //指定任务优先级别的参数
)