电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

vxworks入门介绍

45页
  • 卖家[上传人]:suns****4568
  • 文档编号:96026330
  • 上传时间:2019-08-23
  • 文档格式:PPT
  • 文档大小:109KB
  • / 45 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、,VxWorks入门介绍 2010/10/1,目录,VxWorks简介 BSP及系统执行流程 中断 任务调度 任务切换 任务创建 定时器,目录,任务间通讯 信号量 二进制信号量 消息队列 socket 集成开发环境Tornado的使用,VxWorks简介,VxWorks组成 VxWorks操作系统由任务的管理与调度、任务的同步与通信、动态内存的管理、时钟的管理、I/O管理、文件系统等几部分组成,VxWorks简介,对于VxWorks ,用户可裁减掉程序员认为没有使用到的功能,直到只剩下最简内核(可以只有10k左右) 一般使用的VxWorks为标准的单CPU版本。VxFusion为标准的多CPU版本,应用程序在多个CPU上运行,但仍然象在一个CPU 上运行那样进行数据的交换、通信与同步。,VxWorks简介,VxWorks使用统一的API,对于VxWorks支持的不同的CPU、VxWorks的不同版本,API都是一样的。VxWorks的API是由操作系统内核提供的服务原语搭建起来的。服务原语,是不可打断的,这样可以保证系统调用的时间尽量小、尽量是常量和可确定,BSP,BSP是系统用来管理

      2、外设的部分,由两部分组成:初始化、驱动程序。所谓初始化是指从系统上电复位开始直到wind kernel和usrRoot根任务启动的这段时间,系统的执行过程。驱动程序就是一些包含I/O操作的子函数。 初始化包括:CPU Init、Board Init、System Init。CPU Init初始化CPU的内部寄存器。Board Init初始化智能I/O的寄存器,将device打通。System Init为系统的运行准备数据结构,进行数据初始化。,BSP,系统上电代码执行流程 执行流程,中断,中断是实时系统非常重要的组成部分,与linux及windows相比, VxWorks对于中断的相应速度和中断处理程序的处理速度要高很多,实时性最好 对于中断处理程序,可能引起阻塞的都不能使用,printf可能引起阻塞,如果在中断处理程序里面需要输出调试信息,可以使用logMsg来输出。中断里面也不要试图获得信号量,接收消息队列里面的消息等操作。,中断,中断包含三层含义 中断引脚号(或从中断控制器中得到) 中断号 中断向量(对x86是中断号*4) 中断处理程序和中断向量必须连接再允许 后才能被激活,中断

      3、,对于中断服务程序,越简短越好,为提高VxWorks的中断服务程序与任务的合作性能,最好的机制是信号量。下面例子中我们会看到标准的中断处理过程。,中断,典型的中断处理过程示例: 1。中断连接: intConnect ( IV_IRQ6, (FUNCPTR) Isr1, 0); 参量1:连接的中断向量 参量2:中断服务程序 参量3:中断服务程序的参量,中断,中断允许: 2。intEnable( (int)IV_IRQ6 ); 参量:中断向量 3。中断处理程序,中断,Isr1() 关中断; 清中断; semGive(SemId1);/*释放信号量*/ ,中断,4。中断处理任务 task1() for(;) semTake (SemId1, WAIT_FOREVER) 开中断; ,任务间调度,VxWorks无条件的使用基于优先级的任务间调度 对于同等优先级的任务,如果基于时间片轮循没有打开,任务采取先到先运行,运行完毕再交出cpu,如果打开,则轮流使用cpu。 任务里如果有死循环,比它优先级低的任务都不能运行,任务切换,任务切换速度:us量级,Cache关闭时上升到10us量级。,任务的创建

      4、,VxWorks创建任务,如下例所示创建名为task1的任务: taskSpawn(“tTask1”,55,0,10000,(FUNCPTR) task1,0,0,0,0,0,0,0,0,0,0); 参量1:任务名 参量2: 任务优先级,任务的创建,参量3:创建时可选参量 参量4:任务堆栈尺寸 参量5:创建的任务 参量615:任务的参量,定时器,VxWorks使用3种定时器 time0:用于系统时钟,可用sysClkRateSet()改变速率,默认值时60次/秒,一般我们改为100次/秒,系统时钟变为10ms等级。 VxWorks下的watchdog基于timer0,因为是在interrupt尺度,使用必须谨慎,否则会降低系统效率,定时器,time1:用于辅助时钟,可用sysAuxClkRateSet()改变速度,其精度可以很高,例如1ms,除驱动外,一般不使用。 time2:用于时标(timestamp)。从系统开始运行时就一直递增,可以用来获得系统运行时间,在windview工具中被使用。用户程序也可以通过sysTimestamp()得到运行时间。一般不使用。,Watchdog定时

      5、器,使用举例 申明:WDOG_ID WdId1; 初始化创建:WdId1 = wdCreate(); 初始化启动:wdStart(WdId1 , 1, (FUNCPTR)function1, 0) 参数1:定时器ID 参数2:延时tick数,Watchdog定时器,参数3:定时器到要调用的函数 参数4:要调用函数的参数 定时要调用的函数 function1 wdStart(WdId1 , 1, (FUNCPTR)function1, 0) ,Watchdog定时器,定时器里面运行的代码与中断有同等的优先级,对于中断所有的约束定时器同样要遵守,会引起阻塞的都不能使用。比如不能使用printf打印,不能接收消息里面的消息,不能试图获得一个信号量等。,任务间通讯,信号量 消息队列 管道 全局变量 socket,信号量,信号量提供了任务间最快速通信,可以实现任务间同步和互斥。 互斥用于资源管理,上锁对共享资源的访问。 同步可以协调任务间的执行。,信号量,信号量的三种类型 二进制 互斥 计数信号量,信号量,互斥信号量本质也是一种二进制信号量,主要用于解决内在互斥的问题,优先级继承等情况而优化的特

      6、殊的二进制信号量 计数信号量会随着信号量释放的次数改变而改变 二进制信号量最基本,最常用,二进制信号量,最常用最快的信号量,用于同步和互斥 创建信号量的时候,队列类型已经确定。 等待信号量的任务可以按照优先级(SEM_Q_PRIORITY) 或先进先出( SEM_Q_FIFO)的顺序排队。,二进制信号量,二进制同步信号量使用举例: 申明:SEM_ID SemId1; 初始化: SemId1=semBCreate(SEM_Q_FIFO,SEM_EMPTY);,二进制信号量,任务一释放信号量SemId1 Task1() semGive(SemId1); 任务二获得信号量后继续执行,否则等 待此信号量,二进制信号量,task2() For(;) semTake (SemId1, WAIT_FOREVER) ; ,二进制信号量,二进制互斥信号量使用举例: 申明:SEM_ID SemId1; 初始化: SemId1= semBCreate(SEM_Q_PRIORITY ,SEM_FULL);,二进制信号量,使用 function1() semTake(SemId1,WAIT_FOREVER);

      7、/*需要保护的代码*/ semGive(SemId1); ,消息队列,任务间通讯使用的最常用的方式 允许长度可变,数目可变的消息排队 用在单CPU任务间通讯 任何任务可以发送消息到消息队列 任何任务可以从消息队列接收消息 两个任务若需要全双工通信,需要两个队列,一发一收,消息队列,使用举例 申明:MSG_Q_ID MsgQ1; 创建: MsgQ1 = msgQCreate(500,300,MSG_Q_FIFO); 参数1:排队的最大消息数量 参数2:每个消息允许的最大长度 参数3:操作方式,fifo或优先级,消息队列,发送 msgQSend(MsgQ1, pmsgbuf, length, NO_WAIT, MSG_PRI_NORMAL); 参数1:队列ID 参数2:要发送的消息指针 参数3:要发送的消息长度 参数4:等待的tick数目,消息队列,参数5:操作方式,MSG_PRI_NORMAL 或 MSG_PRI_URGENT,消息队列,接收 Task1() for(;) msgQReceive(MsgQ1, m_buffer, 500, WAIT_FOREVER); ,消息队列,参量1

      8、:队列ID 参量2:接收消息的buffer 参量3:buffer的最大长度 参量4:等待的tick数目,NO_WAIT不进 行等待,WAIT_FOREVER永远 等待,socket,网络是VxWorks和其它系统联系的主要途径。 VxWorks实现了与BSD4.4 TCP/IP兼容的网络协议栈。 通常使用socket编程接口,客户/服务器编程来实现VxWorks与其他系统,如linux,windows 等其它系统之间的通信,socket,SOCKET编程举例 例子较长,具体可以参见 VxWorks Network Programmers Guide5.5 7.2 BSD SOCKET 7.2.2 Datagram Sockets (UDP) 7.2.3 Stream Sockets (TCP),Tornado工具使用,Tornado整个开发系统包含三部分组成 VxWorks:运行在目标板上的高性能的 实时操作系统 tornado开发环境:运行在宿主机上,进 行编译连接和调试的开发环 境 连接前两者的通信方式:如串口网口等,Tornado工具使用,Tornado开发环境是交叉开发环境运行在主机上的部分,是调试和开发VxWorks系统不可缺少的一部分,集成了编辑器,编译器,调试器与一体。编辑器功能较弱,一般不使用。,Tornado工具使用,Tornado工具使用演示 工程的创建 编译连接 调试 其它,

      《vxworks入门介绍》由会员suns****4568分享,可在线阅读,更多相关《vxworks入门介绍》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.