陈香兰 xlanchen@ustc.edu.cn http://staff.ustc.edu.cn/~xlanchen 2006年7月 VxWorks及其应用开发 陈香兰 xlanchen@ustc.edu.cn http://staff.ustc.edu.cn/~xlanchen 2006年7月.

Slides:



Advertisements
Similar presentations
Linux 操作系统分析 中国科学技术大学计算机系 陈香兰( 0512 - ) Autumn 2010.
Advertisements

7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
高级服务器设计和实现 1 —— 基础与进阶 余锋
阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
Linux 系统. 操作系统发展需求 1 没有操作系统 2 简单批处理操作系统 3 多道程序设计的批处理 4 多道程序设计的分时操作系统 5 多处理机并行系统 6 网络操作系统 7 分布式操作系统.
嵌入式操作系统 陈香兰 Spring 2006 中国科学技术大学计算机系.
嵌入式操作系统 陈香兰 Spring 2007 中国科学技术大学计算机系.
实用操作系统概念 张惠娟 副教授 1.
營建自動化 -營建管理資訊化 授課老師:劉俊杰 副教授 中華民國89年9月27日.
基于解释性语言的手机跨平台架构 Sloan Yi. Qt MTK.
Oracle数据库 Oracle 子程序.
Nucleus嵌入式操作系统.
在PHP和MYSQL中实现完美的中文显示
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
中国科学技术大学计算机系 陈香兰(0512- ) Spring 2011
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
Hadoop I/O By ShiChaojie.
VxWorks软硬件设计及实例分析
嵌入式系统课程简介 宋健建 南京大学软件学院 2004/02/10.
面向对象建模技术 软件工程系 林 琳.
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
SVN服务器的搭建(Windows) 柳峰
辅导课程六.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Windows网络操作系统管理 ——Windows Server 2008 R2.
文件读写实践 广州创龙电子科技有限公司 01 广州创龙电子科技有限公司
S 数控机床故障诊断与维修.
本节内容 模拟线程切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
逆向工程-汇编语言
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
CPU结构和功能.
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
三:基于Eclipse的集成开发环境搭建与使用
中 断 王 静 阜阳师范学院 计算机与信息工程学院.
第一章 函数与极限.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
第四章 MCS-51定时器/计数器 一、定时器结构 1.定时器结构框图
第四章 团队音乐会序幕: 团队协作平台的快速创建
本节内容 消息的分发 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
实验四、TinyOS执行机制实验 一、实验目的 1、了解tinyos执行机制,实现程序异步处理的方法。
姚金宇 MIT SCHEME 使用说明 姚金宇
分裂对象模型 C++ otcl.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
Select模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
信号量(Semaphore).
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
临界区问题的硬件指令解决方案 (Synchronization Hardware)
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
本节内容 指针类型的使用 视频提供:昆山爱达人信息技术有限公司.
WSAAsyncSelect 模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang
阻塞式模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
中国科学技术大学计算机系 陈香兰(0512- ) Autumn 2009
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
<编程达人入门课程> 本节内容 有符号数与无符号数 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
本节内容 SEMAPHORE 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
本节内容 this指针 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
2019 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab7.
多个Activity的使用 本讲大纲: 1、使用Bundle在Activity之间交换数据 2、调用另一个Activity并返回结果
Presentation transcript:

陈香兰 xlanchen@ustc.edu.cn http://staff.ustc.edu.cn/~xlanchen 2006年7月 VxWorks及其应用开发 陈香兰 xlanchen@ustc.edu.cn http://staff.ustc.edu.cn/~xlanchen 2006年7月

课程内容 VxWorks和Tornado简介 任务和任务间通信 信号、中断处理与定时机制 调试环境与实例分析 网络编程

信号、中断处理与定时机制 xlanchen@2006.7.18

1、信号 VxWorks支持软件信号功能,任何任务和ISR都可向指定任务发信号 获得信号的任务立即挂起,并在下次调度运行时转去执行指定的信号处理程序。 信号处理程序的运行使用接收者的上下文和堆栈 当任务被阻塞时,信号处理程序仍然可以被唤醒

与任务间通信相比,信号机制适合于错误和异常处理 可以将信号处理程序作为ISR看待: 信号与中断都是异步的 任何可能导致阻塞的函数均不能在信号处理程序中调用(信号处理程序能够调用的函数与ISR中能够安全使用的函数一样)

Wind内核支持两种类型的信号接口 UNIX BSD风格的信号 POSIX兼容的信号 建议:编程时不要混合使用不同的接口形式

1.1、基本的信号接口

sigInit() 在调用任何信号接口之前,必须先使用sigInit初始化信号函数库。 正常情况下,在中断允许之前,在程序usrConfig.c的usrInit函数中调用

基本信号接口提供31个不同的信号,使用sigVec()或sigAction()可为信号指定一个信号处理程序 UNIX BSD 当信号到来时,指定的信号处理程序将被运行 指明信号处理程序对应的信号 指明信号处理程序 保存对应信号原来的信息

sigaction与sigvec差别不大 sigVec中的struct sigvec和sigaction中的struct sigaction 都在signal.h中定义

kill()将一个信号发给指定的任务

sigsetmask()、sigblock()、sigprocmask()用来屏蔽信号 UNIX BSD 31个信号使用一个int类型的数可以表示, 其中每位代表一个信号 Sigsetmask设置任务的信号屏蔽信息为mask, mask中某个位为1就表示对应位的信号将被屏蔽

UNIX BSD 与sigsetmask的区别,sigblock在原有的基础上增加 一些需要被屏蔽的信号,而sigsetmask是设置操作

Sigprocmask使用how参数指明对信号屏蔽信息要执行的操作,包括: SIG_BLOCK, SIG_UNBLOCK, SIG_SETMASK

1.2 POSIX信号队列 sigqueue()提供与kill()类似的功能:向任务发送信号

接收信号的另外一种手段 (POSIX 1003.1b) sigwaitinfo()允许接收一个信号,而不用注册信号处理程序 //返回值

sigtimedwait()与sigwaitinfo()相似,但允许设置超时参数

信号使用举例

2、中断服务程序 硬件中断的处理是实时系统设计的最重要、最关键的问题 一个中断往往对应着一个外部事件,系统通过中断与外部事件交互 中断响应时间应该尽可能快,因此VxWorks的ISR运行在特定的上下文中(在所有任务上下文之外) 因此中断处理不会涉及任何任务上下文的交换 VxWorks的库intLib和intArchLib提供中断函数

2.1 设置中断处理程序 VxWorks提供intConnect()函数,将指定的C函数与任意指定的中断相关联 intConnect()中指定的C函数routine与指定的中断向量vector相联系, 当中断发生时就会调用routine并使用parameter作为routine的参数

中断处理程序routine在中断级以supervisor方式调用 建立一个合适的C环境 保存必要的寄存器 建立堆栈 中断处理程序不能调用任何可能引起阻塞和执行I/O操作的操作系统函数

事实上,中断向量不是直接指向intConnect()指定的C函数 intConnect()将创建一小段代码 保存必要的寄存器 设置堆栈入口 包含将要传递的参数 这段代码或者在一个特殊的堆栈或者在当前任务的堆栈中被调用

当中断处理函数运行结束,返回时 这段代码先恢复寄存器和堆栈 然后退出中断

中断处理过程

2.2 中断堆栈 中断在特殊的上下文中运行 有的体系结构允许所有的ISRs使用相同的中断堆栈,有的不允许 无论哪种情况,堆栈必须足够大 能够处理正常和最坏情况下中断的嵌套 使用checkStack()可以查看一个任务堆栈的使用情况,或整个系统堆栈的使用情况

2.3 ISR的特殊限制 由于ISR不是在规则的任务上下文中运行,例如 因此ISR不能调用可能引起阻塞的函数 没有TCB 所有的中断共享一个堆栈 因此ISR不能调用可能引起阻塞的函数 下表列出了ISR可以调用的函数

2.4 中断与任务的通信 VxWorks支持运行在中断级的ISR直接与一般任务进行通信 由于ISR能够调用的函数有限制,只能通过如下方法通信 共享存储区、环缓冲 部分信号量(ISR只能释放) 消息队列,可以发送,若队列满则丢弃 管道,可以写,若管道满则丢弃 信号,可以发信号

中断处理程序举例