课件及范例代码04.osal操作系统开发_第1页
课件及范例代码04.osal操作系统开发_第2页
课件及范例代码04.osal操作系统开发_第3页
课件及范例代码04.osal操作系统开发_第4页
课件及范例代码04.osal操作系统开发_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、OSAL操作系统开发物联网师资培训1OSAL操作系统开发OSAL操作系统简介OSAL初始化与运行多任务概念及任务建立系统时钟消息管理2OSAL操作系统开发OSAL操作系统简介OSAL初始化与运行多任务概念及任务建立系统时钟消息管理3OSAL操作系统简介(1/4)OSAL(Operating System Abstraction L ayer) 操作系统抽象层:以实现多任务为的系统资源管理机制。采用 轮转查询 的方式来协调调度各项任务。实现类似操作系统的某些功能,但并不能称乊为真正意义上的操作系统。4OSAL操作系统简介(2/4)系统设置多个优先级OSAL把优先级放在了最重要的地位。当前在处理的

2、任务中有两个以上事件待处理,处理完一件后,也要去查询优先级更高的任务。赋予优先级高的任务最大权利,尽可能保证高优先级任务的每一个事件都能得到最及时的处理。支持64个任务,即任务分为64个优先级;5OSAL操作系统简介(3/4)任务执行流程开始任务一有任务二有任务三有6Y事件发生吗?处理本任务当前优先级最高的事件NY事件发生吗?处理本任务当前优先级最高的事件NY事件发生吗?处理本任务当前优先级最高的事件NOSAL操作系统简介(3/4)任务执行流程7OSAL操作系统简介(4/4)OSAL提供的服务任务登记,初始化,启劢任务间的信息传送任务同步定时器管理器分配中断处理8OSAL操作系统开发OSAL操

3、作系统简介OSAL初始化与运行多任务概念及建立任务系统时钟消息管理9OSAL系统初始化函数原型:unsigned char osal_init_system(void)功能描述:初始化系统。必须在任何系统函数启劢乊前先启劢;输入:无输出:返回操作结果(ZSUCS)其中taskEvents用于保存任务对应的事件,供系统轮询使用。有N个任务则分配u16*N的空间,1个u16数据保存1个任务的所有事件,每1位对应1个事件,1个任务最多可以有16个事件;10运行OSAL系统函数原型:void osal_start_system(void)功能描述:系统主循环函数,查询所有的任务事件,调用每个事件相应的

4、任务处理函数。如果某个特定的任务有事件发生,该函数将调用任务事件的处理函数,处理结束后返回主循环函数。如果所有任务都没有事件发生,那么该函数将使处理器进入睡眠模式(可选的节能)。11运行OSAL系统12OSAL操作系统开发OSAL操作系统简介OSAL初始化与运行多任务概念及建立任务系统时钟消息管理13任务的概念任务?一个任务就是一个简单的程序。多任务应用程序的设计是将问题分割成多个任务,每个任务都是整个应用程序的一部分,并赋予一定的优先级,有它自己的一套CPU寄存器和栈空间。14建立任务任务初始化:为用户任务分配任务号.在系统初始化时为所有系统任务分配唯一taskID任务事件处理函数:任务事件

5、处理函数,当系统有事件需要处理时调用任务列表中相应的事件处理函数进行处理。15建立任务练习任务初始化定义任务初始化函数:添加到系统任务初始化函数中:任务处理函数定义任务处理函数:添加到任务处理函数列表中:16OSAL操作系统开发OSAL操作系统简介OSAL初始化与运行多任务系统时钟消息管理17系统时钟osal_start_timer()osal_stop_timer()osal_start_timerEx()osal_stop_timerEx()18osal_start_timer()函数原型:byte osal_start_timer(U16 event_id, U16 timerout_v

6、alue)功能描述:定时触发任务事件输入参数:event_id:用户定义的事件timerout_value:计时时间(ms)返回值:返回操作结果(ZSUCS, NO_TIMER_AVAIL,INVALID_EVENT_ID or NVALID_TIMEOUT_VALUE)19osal_stop_timer()函数原型:byte osal_stop_timer(U功能描述:停止已被启动的定时器。输入参数:event_id:被停止计时器的标识符。16 event_id)返回值:返回操作结果(ZSUCS, INVALID_EVENT_ID)20osal_start_timerEx()函数原型:byt

7、e osal_start_timerEx(byte taskID, U16event_id, U16 timerout_value)功能描述:允许用户设置另一任务的定时器输入参数:taskID:任务ID号 event_id:用户定义的事件 timerout_value:计时时间(ms)返回:操作结果(ZSUCS or NO_TIMER_AVAIL)21osal_stop_timerEx()函数原型:byte osal_stop_timerEx(byte task_id, U16 event_id)功能函数:停止已被启动的定时器,指明任务ID输入参数:task_id:停止定时器所在的任务ID。e

8、vent_id:被停止定时器的标识符。返回值:操作结果(ZSUCSorINVALID_EVENT_ID)22初始化定时器在任务初始化函数中初始化定时器在任务处理函数中添加相应的事件处理代码D8(LED1)指示灯闪烁一次23OSAL操作系统开发OSAL操作系统简介OSAL初始化与运行多任务系统时钟消息管理24消息管理osal_msg_allocate()osal_msg_deallocate()osal_msg_send()osal_msg_receive()HalUARTWrite()25osal_msg_allocate()函数原型:byte *osal_msg_allocate(u16 l

9、en)功能函数:分配消息缓冲空间输入参数:len :消息的长度。返回值:指向缓存空间首地址的指针26osal_msg_deallocate()函数原型:byte*osal_msg_deallocate(byte* msg_ptr)功能函数:输入参数:已分配消息缓冲区* msg_ptr:指向需要处理消息缓存的指针返回值:操作结果(ZSUCS orINVALID_MSG_POER)27osal_msg_send()函数原型:byte *osal_msg_send(byte destination_task, byte* msg_ptr)功能函数:任务间通信,发送给消息给其他任务;输入参数:dest

10、ination_task:目的任务ID号msg_ptr:指向包含发送消息的指针返回值:返回操作结果(ZSUCS,INVALID_SENDING_TASK, INVALID_MSG_POER)28osal_msg_receive()函数原型:byte *osal_msg_receive(byte task_id )功能函数:接收某任务发来消息输入参数:task_id :消息来源任务ID返回值:指向接收到的消息数据包首地址的指针29串口发送数据函数原型:u16 HalUARTWrite (u8 port, u8*buf, u16 len )函数功能:串口发送数据函数函数参数:port:串行端口(选择uart0或uart1)buf:指向发送数据的指针len:发送数据的长度返回值:发送数据的长度30其他常用API任务同步:osal_set_event();触发某任务事件标志;中断管理:osal_init_enable()/osal_init_disable();函数用于使能中断/关闭中断电源管理:osal_pwrmgr_device()osal_pwrmgr_task_se();函数在上电或电源需要发生变化时被调用/是否保存电源状态31练习任务

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论