读书报告。
计本2班,20122212714,刘瑞。
1、ostasksuspend()
挂起一个任务。
描述:调用此函数去挂起一个任务,如果传送到ostasksuspend()的任务的优先级是要挂起的任务或者是os_prio_self,那么这个任务将被挂起。
参数: prio:需要挂起任务的优先级。如果指定os_prio_self,那么这个任务将自己挂起,再发生再次调度。
返回:os_no_err:如果请求的任务被挂起。
os_task_suspend_idle:如果想挂起空闲任务。
os_prio_invalid :想挂起任务优先级不合理。
os_task_suspend_prio:需要挂起的任务不存在。
备注:调用时要十分小心,如果想挂起一个等待事件(邮箱,消息,队列)的任务,事件到来的时候将阻止这个任务运行。
注:需要与ostaskresume()恢复挂起的任务成对使用。
2、ostaskresume()
描述:唤醒一个用ostasksuspend()函数挂起的任务。ostaskresume()也是唯一能"解挂"挂起任务的函数。
参数:prio指定要唤醒任务的优先级。
返回:os_no_err:函数调用成功;
os_task_resume_prio:要唤醒的任务不存在;
os_task_not_suspended:要唤醒的任务不在挂起状态;
os_prio_invalid:参数指定的优先级大于或等于os_lowest_prio。
3、ostaskdel()
描述:删除一个指定优先级的任务。任务可以传递自己的优先级给ostaskdel(),从而删除自身。
如果任务不知道自己的优先级,还可以传递参数os_prio_self。被删除的任务将回到休眠状态。任务被删除后可以用函数ostaskcreate()或ostaskcreateext()重新建立。
参数:prio为指定要删除任务的优先级,也可以用参数os_prio_self代替,此时,下一个优先级最高的就绪任务将开始运行。
返回:os_no_err:函数调用成功。
注意:1、ostaskdel()将判断用户是否试图删除uc/os中的空闲任务(idletask);
2、在删除占用系统资源的任务时要小心,此时,为安全起见可以用另一个函数ostaskdelreq()。
4、ostaskdelreq()
描述:请求一个任务删除自身。通常ostaskdelreq()用于删除一个占有系统资源的任务(例如任务建立了信号量)对于此类任务,在删除任务之前应当先释放任务占用的系统资源。
具体的做法是:在需要被删除的任务中调用ostaskdelreq()检测是否有其他任务的删除请求,如果有,则释放自身占用的资源,然后调用ostaskdel()删除自身。例如,假设任务5要删除任务10,而任务10占有系统资源,此时任务5不能直接调用ostaskdel(10)删除任务10,而应该调用ostaskdelreq(10)向任务10发送删除请求。
在任务10中调用ostaskdelreq(os_prio_self),并检测返回值。如果返回os_task_del_req,则表明有来自其他任务的删除请求,此时任务10应该先释放资源,然后调用ostaskdel(os_prio_self)删除自己。任务5可以循环调用ostaskdelreq(10)并检测返回值,如果返回os_task_not_exist,表明任务10已经成功删除。
voidtask(void*data)
while(1)
参数:prio为要求删除任务的优先级。如果参数为os_prio_self,则表示调用函数的任务正在查询是否有来自其他任务的删除请求。
返回:os_no_err:删除请求已经被任务记录;
os_task_not_exist:指定的任务不存在,发送删除请求的任务可以等待此返回值,看删除是否成功;
os_task_del_idle:错误操作,试图删除空闲任务(idletask);
os_prio_invalid:参数指定的优先级大于os_lowest_prio或没有设定os_prio_self的值;
os_task_del_req:当前任务收到来自其他任务的删除请求;
注意:ostaskdelreq()将判断用户是否试图删除uc/os中的空闲任务(idletask)。
5、ostaskchangeprio()
描述:改变一个任务的优先级。
参数:oldp是任务原先的优先级。
newp是任务的新优先级。
返回:os_no_err任务优先级成功改变。
os_prio_invalid 参数中的任务原先优先级或新优先级大于或等于os_lowest_prio。(>os_lowest_prio)
os_prio_exist优先级为pip的任务已经存在;
os_prio_err参数中的任务原先优先级不存在。
注意:参数中的新优先级必须是没有使用过的,否则会返回错误码。在ostaskchangeprio()中还会先判断要改变优先级的任务是否存在。
6、ostaskquery()
描述:获取任务信息,函数返回任务tcb的一个完整的拷贝。应用程序必须建立一个os_tcb类型的数据结构容纳返回的数据。
需要提醒用户的是,在对任务os_tcb对象中的数据操作时要小心,尤其是数据项ostcbnext和ostcbprev。它们分别指向tcb链表中的后一项和前一项。
参数:prio为指定要获取tcb内容的任务优先级,也可以指定参数os_prio_self,获取调用任务的信息。pdata指向一个os_tcb类型的数据结构,容纳返回的任务tcb的一个拷贝。
返回:os_no_err:函数调用成功;
os_prio_err:参数指定的任务非法;
os_prio_invalid:参数指定的优先级大于os_lowest_prio。
注意:任务控制块(tcb)中所包含的数据成员取决于下述开关量在初始化时的设定。
os_task_create_en
os_q_en
os_mbox_en
os_sem_en
os_task_del_en
嵌入式作业
电力设备测控系统中的总线通讯协议实现。程俊 200910302013 一 程序实现的功能 嵌入式系统作为测控系统主机,依次每隔30秒获取设备数据,发送给各个传感器。1 程序实现是通个定义的一个数组,然后数组中分别放入 起始标记aa 设备类型 设备编号 数据发送请求55 校验位这里采用求和校验,而将第...
嵌入式作业
专业 电子信息工程班级 电信10 1 任课教师 姓名 学号成绩。题目 查阅相关资料,你认为选用哪一种硬件 芯片 和软件比较适合本专业的要求?为什么?答 个人觉得选用三星的6410芯片更适合本专业的要求,6410对比与2440不会更容易被淘汰,而且现在6410有很多开发板可以供我们自学,比如飞凌的ok...
嵌入式作业
include 基本系统数据类型。include 提供socket函数及数据结构。include 标准输入输出。include 标准库。include 提供错误号errno的定义,用于错误处理。include 字符串函数定义。include read函数 write函数和getpid函数等头文件。i...