340 likes | 634 Views
VxWorks 及其应用开发. 陈香兰 xlanchen@ustc.edu.cn http://staff.ustc.edu.cn/~xlanchen 2006 年 7 月. 课堂作业:. VxWorks 的进程间通信机制包括哪些? 实现互斥的方法有哪些? VxWorks 提供了哪几种信号量? 什么是优先级倒转问题,如何解决? 信号处理程序在何时被调用? 编写中断处理程序的时候有哪些限制?. 课程内容. VxWorks 和 Tornado 简介 任务和任务间通信 信号、中断处理与定时机制 调试环境与实例分析 网络编程 VxWorks 操作系统配置.
E N D
VxWorks及其应用开发 陈香兰 xlanchen@ustc.edu.cn http://staff.ustc.edu.cn/~xlanchen 2006年7月
课堂作业: • VxWorks的进程间通信机制包括哪些? • 实现互斥的方法有哪些? • VxWorks提供了哪几种信号量? • 什么是优先级倒转问题,如何解决? • 信号处理程序在何时被调用? • 编写中断处理程序的时候有哪些限制?
课程内容 • VxWorks和Tornado简介 • 任务和任务间通信 • 信号、中断处理与定时机制 • 调试环境与实例分析 • 网络编程 • VxWorks操作系统配置
信号、中断处理与定时机制(下) xlanchen@2006.7.26
3、看门狗3.1 watchdog • VxWorks中的看门狗(Watchdog timer)机制允许任何C函数与一个特定的时间延迟相联系 • Watchdog timer作为系统时钟中断服务程序的一部分来维护 • 与Watchdog timer向关联的函数是作为中断服务代码执行的,并处于系统时钟中断级别
tExcTask工作队列 • 如果由于某些原因使得某些函数不能被立即执行,操作系统就将该函数放在tExcTask工作队列上 • tExcTask工作队列中的函数以tExcTask的优先级运行(通常是0,即最高) • 基于以上原因,与Watchdog timer相关联的函数代码也具有与ISR一样的约束
wdLib提供的函数调用 分配并初始化一个看门狗定时器 终止并释放一个看门狗定时器 启动看门狗定时器 取消一个正在计时的看门狗定时器
与watchdog timer相关联的任务和程序 • 若需要将一个任务T的执行往后延时,可以使用watchdog timer,并在wdStart()中指定被延时的程序P。计时结束时,程序P将会运行。程序P在任务T的上下文之外运行 • 程序P通常用于完成一些必要处理的工作,P执行完后,将控制交还给任务T • 但程序P也可调用longjmp(),将控制转移到任务中的其他合适点执行,如下图:
3.2 利用看门狗处理任务时限 • 在实时系统中,实时任务的一个重要特征是:任务的运行具有时限约束。一旦超出时限,系统可能导致灾难性的后果 • 为处理这种情况,通常启动一个deadline handlers
看门狗可用来启动deadline handlers • 下面的例子中: • 协调者发送数据给组织者。 • 组织者接收来自协调者的数据,若5秒内没有数据发送(dead line),协调者被复位 • 程序运行20秒后自动停止
4、POSIX时钟和计时器4.1 POSIX计时器 • VxWorks提供POSIX 1003.1b标准时钟和计时器接口 • 时钟clock是一个软件装置(钟表) 时钟的精度 几点 校正时间
计时器(timer)统计一段时间,并在时间到期的时候,发出SIGALRM信号,如果设置了相应信号处理函数,此时就会运行计时器(timer)统计一段时间,并在时间到期的时候,发出SIGALRM信号,如果设置了相应信号处理函数,此时就会运行 • 因此计时器总是与信号处理相关
4.2 利用POSIX计时器处理任务时限 • POSIX计时器也可以用来处理任务时限 • 下例中将创建一个与POSIX计时器相联系的信号处理程序,在POSIX计时器超时时,该信号处理程序将启动执行