xworks时钟与中断_哈尔滨工业大学

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
• VxWorks提供多个库支持时钟接口
–sysLib—提供系统时钟和辅助时钟接口 –tickLib—时钟节拍支持库 –wdLib—看门狗定时器支持库 –timexLib—执行计时接口,可以对任何函数或一组函数 的执行进行计时—常用来测量程序的执行时间 – clockLib—POSIX兼容的时钟库 – timerLib—POSIX兼容的定时器库
嵌入式操作系统
应用实例1
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
应用实例2
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
应用实例3
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
第5章 VxWorks时钟与中断
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
主要内容
1、时钟管理
– – – – –
系统时钟 辅助时钟 时间戳 看门狗定时器 POSIX定时器
2、中断 3、异常
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
• taskDelay( )、wdStart( )、KernelTimeSlice( )、信 号量及消息队列中的timeout等都依赖于系统时钟 的tick大小 • taskDelay(ticks)—它只能实现10ms以上的延迟 • wdStart( )—也只能实现10ms以上的延迟,但比 taskDelay( )更精确
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
• 任何任务都可以通过创建一个看门狗定时器,经 过指定的延时后,实现在系统时钟ISR的上下文中 运行指定的程序
– 看门狗可以作为普通定时器使用,延迟精度为ms级, 比taskDelay()要高 – taskDelay()接口函数受任务切换时间的影响,故其延 迟精度不高 – 对中断服务程序的限制同样适用于被看门狗定时器调 用的函数
嵌入式操作系统
1.3 时间戳(Timestamp)
• 时间戳依附于系统定时器,在 “\target\src\drv\timer\xxxTimer.c”中实现 • 时间戳采用查询方式取得当前定时器的硬件计 数值,去除了中断处理负担,一般能获得比系 统时钟高几十倍的分辨率,这取决于一个tick 包含多少个硬件计数 • VxWorks系统组件中,只有WindView使用了 timestamp来获取高分辨率的时标
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
时间戳提供的接口函数
cpu特殊功能寄存器
定时器的基准频率
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
1.4 看门狗定时器 (Watchdog Timers)
– 设置辅助时钟中断tick数 – 注册查询设备的时钟中断服务程序 – 打开/关闭辅助时钟中断等
• 这种方式需要:
– 目标机上有辅助时钟支持 – 查询设备的时钟中断服务程序
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
应用实例
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
启动看门狗定时器
取消一个正在计时的看门狗定时器
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
1.1 系统时钟
• 系统时钟为VxWorks内核提供时钟基准 • 系统时钟管理提供以下功能:
– 增加Ticks计数值(系统时钟触发时钟中断,调用 tickAnnounce) – 以一定的时间间隔或在特定的时间调度或发送告警到 一个任务 – 处理任务调度中的时间片轮循 – 更新延时和超时计数器(如在任务等待信号量、消息、 或事件时的超时处理)
– 在wdStart()中指定被延时的程序P。计时结束时,程 序P将会运行。程序P在任务T的上下文之外运行 – 程序P通常用于完成一些必要处理的工作,P执行完 后,将控制交还给任务T
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
• 辅助时钟同样需要提供辅助时钟中断挂接、设置 辅助时钟中断tick数、打开/关闭辅助时钟中断等 函数。
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
• sysClkRateSet()—设置系统时钟速率
每秒钟时钟中断的次数,即tick的数目
• sysClkRateGet()—获取系统时钟速率
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
看门狗定时器作为普通定时器使用
• 若需要将一个任务T的执行往后延时,可以使用 看门狗定时器
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
• VxWorks使用3个时钟(timer),分别用于系统 时钟,辅助时钟和时间戳(timestamp)
– Timer0:用于系统时钟(system clock),可用 sysClkRateSet()改变速率,默认值时60次/秒。 VxWorks下的watchdog基于timer0 – Timer1用于辅助时钟(auxiliary clock),在config.h中 定义了最大速率,最小速率和实际速率初值。可用 sysAuxClkRateSet()改变速度。用户可以用 sysAuxClkConnect()定义辅助时钟的定时任务 – Timer2:用于时间戳(timestamp),从系统开始运行 时就一直递增,可以用来获得系统运行时间,在 windview工具中被使用。用户程序也可以通过 sysTimestamp()得到运行时间
• 看门狗定时器是系统时钟中断处理的延伸 • 看门狗机制允许延时执行一个指定函数,该函 数一般在系统时钟中断上下文中进行,而和创 建或启动该定时器的任务无关 • Watchdog timer作为系统时钟中断服务程序的 一部分来维护 – 与Watchdog timer相关联的函数是作为中断 服务代码执行的,并处于系统时钟中断级别
嵌入式操作系统
• 重点掌握
– 系统时钟 – 看门狗定时器 – 中断
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
1、时钟管理
• 时钟管理在内核中占有非常重要的地位
– 内核中大量的函数都是基于时间驱动的。如一些周期 性函数等,都需要内核提供时间 – 内核必须管理系统的运行时间以及当前日期和时间 – 内核也要为用户空间提供一组系统调用以获取实际日 期和实际时间 – 内核必须能为用户提供延迟、定时等功能
• 内核必须在硬件的帮助下才能计算和管理时间。 硬件为内核提供了一个系统定时器以计算时间流 逝
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
• 系统定时器频率(HZ):系统定时器以某种频率 自行触发时钟中断,该频率在系统启动时对硬件 进行设置,称作时钟频率,又称节拍率。 • 节拍:系统时钟连续两次时钟中断的间隔时间, 称作节拍(tick),等于节拍率分之一 • 时钟中断对于管理操作系统尤为重要,大量内核 函数都是利用时间中断周期执行或累积了一定数 量的时钟节拍数时才执行。
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
时钟函数原型
• sysClkConnect()—为系统时钟挂接时钟处理程 序
系统时钟中断处理程序,在usrRoot中调用, 将usrClock挂接到系统时钟中断
• sysClkEnable—使能系统时钟中断
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
• 看门狗的数据结构
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
wdLib提供的函数调用
分配并初始化一个看门狗定时器 终止并释放一个看门狗定时器
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
Βιβλιοθήκη Baidu
系统时钟调用接口
•时钟调用接口由sysLib和tickLib库提供支持, 常用接口如下:
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
• 系统时钟提供了中断连接、频率设置和中断允许 等初始化函数,定义在 “\target\src\drv\timer\xxxTimer.c”中,它们在 bootConfig.c和sysLib.c中(usrRoot())被调用进 行系统时钟初始化
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
• 如果需要选择另外的硬件定时器作为系统时钟, 可以修改该文件,一般用缺省的就行 • 时钟中断频率由SYS_CLK_RATE指定,在 config.h中定义,一般在10~1000之间,缺省值为 60或100
– 1个tick=1000/60毫秒(精确到10ms)
• 任务调度和上下文切换是基于系统时钟中断处理 进行的,上下文切换时间长短和精度由 SYS_CLK_RATE决定
嵌入式操作系统
应用实例
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
嵌入式操作系统
• 常用辅助时钟实现高速轮循设备:辅助时钟产生 中断,由该时钟中断服务来查询设备状态。 • 采用这种方式所要进行的操作有
嵌入式操作系统
1.2 辅助时钟
• 辅助时钟(sysAuxClk)是另外一种获得更高分 辨率时钟的机制(1ms甚至us级) • 它启动一个与系统时钟不同的硬件定时设备,挂 接用户自己的中断处理函数,去掉内核驱动的负 担,时钟分辨率的高低取决于硬件定时器的精度 和用户中断函数的长短 • 辅助时钟在“\target\src\drv\timer\xxxTimer.c”中 实现,结构和系统时钟类似. • 在config.h中设置辅助时钟tick数的最大值 (AUX_CLK_RATE_MIN)和最小值 (AUX_CLK_RATE_MAX)
相关文档
最新文档