Chinaunix首页 | 论坛 | 博客
  • 博客访问: 281096
  • 博文数量: 53
  • 博客积分: 1293
  • 博客等级: 中尉
  • 技术积分: 506
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-20 22:14
文章分类
文章存档

2014年(1)

2012年(5)

2011年(47)

分类: C/C++

2011-12-17 16:42:06

                    内核结构学习
一.临界段(Critical Sections)。
    代码的临界段也称为临界区。程序执行到临界区时,不允许有中断进入,因此在进入临界区前要关中断,执行完临界区马上开中断。
    μC/OS-Ⅱ中的这两个宏调用分别是:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()。因为这两个宏的定义取决于所用的微处理器,故在文件OS_CPU.H中可以找到相应宏定义。每种微处理器都有自己的OS_CPU.H文件。51处理器的例子如下:
    #define OS_ENTER_CRITICAL() EA=0
    #define OS_EXIT_CRITICAL()  EA=1
 
二.任务及任务状态
1.任务是一个无限循环,不返回任何值,因此函数类型为void。如果要退出任务,任务需自我删除,如下:   
  1. void YourTask(void *pdata)
  2. {
  3.    ....
  4.    OSTaskDel(OS_PRIO_SELF);
  5. }
2.任务状态:
1.睡眠态(DORMANT)指任务驻留在程序空间之中,还没有交给μC/OS-Ⅱ管理。把任务交给μC/OS-Ⅱ是通过2.调用下述两个函数之一:OSTaskCreate()或OSTaskCreateExt()。
3.等待态(WAITING)指等待某一事件的触发而进入就绪态。
4.就绪态(READY)指在队列中等待的任务,一切就绪,只缺东风——CPU。
5.运行态(RUNNING)指拥有CPU控制权,正在运行的任务。正在运行的任务可以通过调用两个函数之一将自身延迟一段时间,这两个函数是OSTimeDly()或OSTimeDlyHMSM()。正在运行的任务可以通过以下几个函数进入等待态,OSSemPend(),OSMboxPend(),或OSQPend()。
6.中断服务态(ISR)指程序运行处于中断过程,CPU正在处理中断事件。
7.空闲状态。当所有的任务都在等待事件发生或等待延迟时间结束,μC/OS-Ⅱ执行空闲任务(idle task),执行OSTaskIdle()函数。
阅读(1271) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~