×

嵌入式操作系统VxWorks的中断与任务详细资料说明

消耗积分:1 | 格式:pdf | 大小:0.09 MB | 2019-04-23

维生素B2

分享资料个

  中断处理是整个运行系统中优先级最高的代码,可以抢占任何任务级代码运行。中断机制是多任务环境运行的基础,是系统实时性的保证。几乎所有的实时多任务操作系统都需要一个周期性系统时钟中断的支持,用以完成时间片调度和延时处理。VxWorks 提供tickAnnounce(),由系统时钟中断调用,周期性地触发内核。

  为了快速响应中断,VxWorks的中断服务程序(ISR)运行在特定的空间。不同于一般的任务,中断服务程序没有任务上下文,不包含任务控制块,所有的中断服务程序使用同一中断堆栈,它在系统启动时就已根据具体的配置参数进行了分配和初始化。在ISR中能使用的函数类型与在一般任务中能使用的有些不同,主要体现在:

  (1)ISR中不能调用可能导致blocking的函数,例如:

  (a)不能以semTake获取信号量,因如果该信号量不可利用,内核会试图让调用者切换到blocking态;

  (b)malloc和free可能导致blocking,因此也不能使用;

  (c)应避免进行VxWorks I/O系统操作(除管道外);

  (d)应避免在ISR中进行浮点操作。

  (2)在ISR中应以logMsg打印消息,避免使用printf;

  (3)理想的ISR仅仅调用semGive等函数,其它的事情交给semTake这个信号量的任务去做。一个ISR通常作为通信或同步的发起者,它采用发送信号量或向消息队列发送一个消息的方式触发相关任务至就绪态。ISR几乎不能作为息的接收者,它不可以等待接收消息或信号量。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !