VxWorks基础培训.

Slides:



Advertisements
Similar presentations
定 格 入 格 破 格 —— 新诗仿写复习训练 仿照下列句子,再把 “ 人生 ” 比喻成 “ 大海 ”“ 天空 ” , 造两个句子。 如果说人生是一首优美的乐曲,那么痛苦则 是其中一个不可或缺的音符。 参考答案: 1 、如果说人生是一望无际的大海,那么挫折则 是其中一个骤然翻起的浪花。 2 、如果说人生是一片湛蓝的天空,那么失意则.
Advertisements

汕头大学医学院 学年学分制学籍管理办法 科教处 - 学籍教材科 郑少燕 2006 - 9 总 则 ♠ 在本校学习的学生,应当政治思想高;应当爱国 勤劳、自强不息,应当遵纪守法,应当刻苦学习, 勇于探索,积极实践,努力掌握现代科学文化知 识和专业技能,应当积极锻炼身体,具有健康体 魄。
LOGO 计算机应用 课程简介. Contents 教学目的与要求 1 教学方法 2 教学内容 3 章节介绍 4 考核方式和考试介绍 5.
急性腹痛 急性疼痛. 急性疼痛 — 孙树杰、沈洪、 刘保池 (1)(1)(1)(1) 概 述 (2)(2)(2)(2) 重症急性腹痛的临床特点 (3)(3)(3)(3) 急性腹痛的分类及诊治 主要教学内容.
嵌入式系统简介 Introduction to Embedded System
網路程式設計 (Network Programming)
绿 色 植 物 在 家 庭 居 室 空 气 污 染 控 制 中 的 作 用 小组成员:.
第四章 内容提要: 电子商务的安全技术 本章从电子商务的安全要求入手,介绍电子商务的几种安全技术,从而说明电子商务安全问题有哪些,其根源何在、带来哪些风险、如何应用安全技术等。
地理标志性产品 宁夏枸杞.
计算机硬件设备图片 go 珠海市第四中学 信息技术组.
龍捲風對北美大平原所造成的影響 〈tornado〉.
计算机系统.
一百零一年溪口國小 學校日 班級: 三年三班 教師: 張慈麟.
中国特色社会主义政党制度 主讲:西南大学 李强 2011年12月28日.
健康上网 初一3班 王诗婷.
关注热点 2014年天猫双十一成交总额 571亿 点亮217个国家地区
欢迎南京市政治学科的教研同仁 光临指导.
第二章 项目一:企业厂区与车间平面设计 1.
我的学校——达县职高 制作人——高一计算机应用二班王天.
4.3 可持续发展的基本内涵 永嘉二中 钱凯俊.
高等职业学校建筑设计类与艺术设计类专业骨干教师实践能力国家级培训
计算机网络的组成 资源子网:   主机 终端 终端控制器   外设 软件资源 信息资源    .
第二章 进程、线程与作业 多道程序设计 Multi-programming 进程的引入 Process 线程与轻进程
第8章 机床操作 主讲:臧红彬 博士.
没有请柬该如何办 记者如何选取有利位置 着装 准备工作 提问时的注意事项
东北师大理想信息技术研究院 院长 中国教育软件协会 副主任 英国计算机与自动化学会 顾问
3.1能源资源的开发 ——以我国山西省为例.
读书报告要求 每人写一篇读书报告。 要求,对学习这门课程之后形成的对计算机科学的一个总的、一般的认识,但不要泛泛而论。
1.1 輸入—處理—輸出周期的基本概念 電腦是一部功能強大的電子機器。 電腦能: 貯存大量數據 執行複雜的運算 把運算結果輸出至不同的媒體上.
【Wind资讯】2015年11月新三板月度报告 Wind资讯 金融情报所
《计算机操作员》精品 课件 淮南市潘集职教中心
第1章 计算机概述 1.1 计算机系统组成 1.2 多媒体系统 1.3 数制与信息的表示 1.4 计算机的发展与应用
© 2000 Wind River Systems, Inc.
Tornado &VxWorks 培训 深圳市微迪软件技术有限公司 培训中心 计算机操作系统原理需要掌握的知识点 一、操作系统概论
電腦基礎設定與故障排除 主辦單位:教務處 主講人:呂健聰.
分散式資料庫管理系統 與主從式系統 資料庫系統設計實務與管理,5e
VxWorks软硬件设计及实例分析
输入输出与中断 主要内容 CPU与外设之间数据传送方式 中断技术 8086中断系统和中断处理.
嵌入式系統架構 長高科技 顏旭偉.
兒童電腦入門 第一課 八月八日.
TCP/IP Protocol Suite TCP/IP協定 第二組 投影片製作by簡嘉宏 綦凱宏 林睿敏 滕孟哲.
嵌入式系统设计与开发 第1章 概述 第2章 ARM及其编程模型 第3章 ARM指令集 第4章 嵌入式程序设计
第三章 系统的启动和初始化 (include lab1)
防火墙技术介绍   严峻的网络安全形势,促进了防火墙技术的不断发展。防火墙是一种综合性的科学技术,涉及网络通信、数据加密、安全决策、信息安全、硬件研制、软件开发等综合性课题。
嵌入式系统及应用.
嵌入式系统设计与实例开发 ——ARM与C/OS-Ⅱ 第六讲 基于ARM的嵌入式硬件结构设计.
计算机组装、维修及 实训教程 第15章 微机硬件的组装 2018年12月25日星期二.
知识点:1、PLC系统起动前检查项目、 定期检查项目、日常维护 内容与步骤 2、掌握PLC诊断流程及故障 排除
认识计算机系统.
Westmont College 网络应用软件 第一讲 (客户-服务器 概念, 协议端口的使用, 套接字API)
作業系統 第三章 作業系統結構.
8051單晶片 蘇恆生 老師.
作業系統 第九章 虛擬記憶體.
2.8       智能电器 本节讲授内容: 一.智能电器的定义 二.智能电器的组成 三.智能电器的种类 四.智能化电器的特点 五.智能化开关举例.
第一章.
嵌入式Linux开发流程 成都研究所操作系统团队.
基础篇 微型计算机系统 硬件系统 软件系统 操作系统基础 作业 计算机编码和数制 系统综述.
第1章 可编程控制器的硬件 构成及工作原理 1.1 可编程控制器的硬件构成 1.2 可编程控制器的工作原理.
四川工商学院 单片机原理及应用 刘 强
第五章 输入/输出系统 本章讨论: 接口的基本概念 总线的基本概念 中断方式及其接口组成 中断方式及其接口组成 DMA方式及其接口组成
中国农业科学院博士后学术论坛 博士后基金申请的经验及体会 中国农业科学院生物技术研究所 秦 华 博士
序言 報告內容: 你對父母的感覺 你與父母的關係 你是否與父母同居 你與父母見面的時間 每天與父母的談話時間 與父母談話的內容 結論 感想.
PLC在数控机床上的经典应用 主讲人:何梦佳 中山职业技术学院 机电工程系.
如何制订幼儿园园本培训工作计划 大连亿达世纪城幼儿园 姜承华 2011年3月10日.
MIME.
VxWorks软硬件设计及实例分析
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
大學學群學類卡 林宏茂 中壢高中 李欣樺 振聲高中.
真信心的果效 雅各書2:
第六章 直接成本法.
Presentation transcript:

VxWorks基础培训

概 念 VxWorks是WindRiver公司开发的具有工业领导地位的高性能实时操作系统内核,具有先进的网络功能。 VxWorks的开放式结构和对工业标准的支持,使得开发人员易于设计高效的嵌入式系统,并可以很小的工作量移植到其它不同的处理器上。

VxWorks内核—Wind VxWorks是带有一个相当小的真正微内核的层次结构。内核仅提供多任务环境、进程间通信和同步功能。这些功能模块足够支持VxWorks在较高层次所提供的丰富的性能的要求。 多任务内核、任务机制、任务间通信和中断处理机制是VxWorks运行环境的核心。

多任务 一般的应用被转换成相互独立又相互协作的程序,每一个程序在运行时称作一个任务。 VxWorks的实时内核wind提供了一个基本的多任务环境。内核按照一种调度算法交替运行各个任务,每一个任务都有自己的上下文。在一次上下文切换中,一个任务的上下文被存在任务控制块(TCB)中。

任务状态 任务状态反映任务当前在系统所处的情形。在VxWorks中,任务有几种状态 :就绪(READY)、阻塞(PEND)、睡眠(DELAY)、挂起(SUSPEND)及它们的组合DELAY+S、PEND+S、PEND+T、PEND+S+T、State+I。

任务状态转换 Wind微内核的状态迁移表如下图所示:

Wind内核的任务调度 多任务处理需要一个调度法则对CPU准备运行的任务进行分配。对于wind内核来说,基于优先级的抢占调度方式是系统的默认工作方式。当然,也可以根据应用程序的需要选择时间片轮转的调度方式。 任务的调度控制程序有: -taskPrioritySet( ) 改变一个任务的优先级 -taskLock( ) 禁止任务的重调度 -taskUnlock( ) 允许任务的重调度

优先级式的抢先调度 每一个任务都有一个优先级,内核则确保首先把CPU分配给优先级最高的一个待运行的任务,这个调度的策略就是一个优先级别较高的待运行任务可以抢先运行,内核会立即存储当前正在运行的任务的上下文并切换到高优先级的任务的上下文。 Wind内核一共有256个优先级别,从0到255,0优先级最高,255最低,任务在建立的同时也分配了一个优先级。 当任务执行时可以调用taskPrioritySet()动态改变自己的优先级。

基于优先级的抢占调度示意图 在运行过程中也可以使用taskPrioritySet()函数改变优先级

时间片轮转式调度 基于优先级的抢占式调度可以与轮转调度相结合。 轮转式调度是指在同一优先级别上的就绪任务可以公平地共享CPU,每一个任务可以运行一个确定的时间片,然后循环运行其它的任务,每个任务都是相同的时间片。

基于优先级的抢占式调度与轮转调度算法相结合调度示意图

抢占上锁 Wind的调度器可以通过tasklock( )和taskUnlock( )对一个任务锁定或允许抢先调度。当一个任务通过调用taskLock( )来锁定抢先调度,在任务的运行期间就避免了高优先级的任务的抢占。

VxWorks任务编程接口 在VxWorks中的taskLib可以得到有关任务的基本例程。这些程序提供了任务的创建、控制和和获取任务信息。

任务的创建和激活 函数调用 描 述 taskSpawn( ) 产生并激活一个新的任务 taskInit( ) 初始化一个新的任务 函数调用 描 述 taskSpawn( ) 产生并激活一个新的任务 taskInit( ) 初始化一个新的任务 taskActivate( ) 激活一个已经初始化的任务

taskSpawn()的参数包括新任务的名称(ASCII码串),优先级,选项,堆栈大小,主程序地址,和10个可以传递给主程序的起始参数。 调用示例: id=taskSpawn(name,priority,option, stacksize,entFunc,arg1,…arg10); taskSpawn()例程屏蔽了低层次的分配、初始化、激活步骤。初始化、激活功能由taskInit()和taskActivate()函数提供,然而,建议只有当需要在分配或激活上进一步控制的时候才使用他们。

任务信息 taskInfoGet( ) 获得一个任务的信息 taskPriorityGet( ) 检查任务的优先级 taskRegsGet( ) 检查任务的寄存器 taskregsSet( ) 设置一个任务的寄存器 taskIsSuspended( ) 检查任务是否处于悬挂状态 taskIsReady( ) 检查任务是否就绪 taskTcb( ) 获得任务控制块的指针 由于任务的状态是动态的,获取信息前必须挂起当前任务。

任务控制 taskSuspend() 悬挂一个任务 taskResume() 恢复执行一个任务 taskRestart() 重启一个任务 taskDelay() 任务延时,单位为tick nanosleep() 任务延时,单位为纳秒

VxWorks系统任务 根任务: tUsrRoot 日志任务: tLogTask 异常处理任务: tExcTask 网络任务: tNetTask 目标代理任务: tWdbTask 可选组件的任务

任务间通信 任务间通信机制是多任务相互同步和通信以协调各自活动的主要手段。 VxWorks提供了几种方法: - 共享内存,用于简单的数据共享; - 信号量,用于基本的互斥和同步; - 消息队列和管道,CPU内任务间的消息传递; - Sockets & RPC,实现网络透明的任务间通信; - Signals,用于异常处理。

共享内存访问互斥 共享一个地址空间,能够简化数据交换。为避免争夺,需要对内存的访问上锁以保证访问互斥进行。实现资源互斥访问的方法: - 禁止中断 - 禁止抢先 - 使用信号量

信号量 VxWorks信号量是提供任务间通信、同步和互斥的最优选择,提供任务间的最快速通信。 对于互斥,信号量可以上锁对共享资源的访问。并且比禁止中断或禁止抢占提供更精确的互斥粒度。

信号量的种类 二进制:最快最通用的信号量,用于同步和互斥。 互斥:一种特殊的二进制信号量,对互斥固有的问题进行了优化:优先级继承,删除安全性,递归。 计数器,类似 二进制信号量, 但是跟踪给定信号量的次数,优化用于一个资源的多个实例。

信号量控制 semBCreate() 分配并初始化一个二进制信号量 semMCreate() 分配并初始化一个互斥信号量 semCCreate() 分配并初始化一个计数器信号量 semDelete() 终止并释放一个信号量 semTake() 取一个信号量 semGive() 释放一个信号量 semFlush() 解锁所有等待该信号量的任务

二进制信号量 一个二进制信号量可认为是一种标记:对应资源是“可获得”(满)还是“不可获得”(空)。 如果信号量是满,在任务取之后变成空,任务可继续执行,如果信号量是空,则任务排到阻塞队列中进入悬挂状态。 可以满足两种类型的任务协调需要:互斥和同步。

互斥信号量 互斥信号量是一种特殊的双态信号量,它用于解决某些互斥中的内在问题,包括: 优先级倒置 删除保护 对资源的递归调用。

互斥信号量有一个SEM_INVERSION_SAFE的参数,可以实现优先级继承的算法。优先级继承协议允许访问同一临界资源的一组任务中,当前运行的任务可继承任务组中的最高优先级。从而解决了优先级倒置的问题。

删除安全 互斥中的另一个问题涉及到任务的删除。删除一个在临界资源中的正在执行的任务往往会带来严重的错误。 互斥信号量提供了一个SEM_DELETE_SAFE的参数使得每个semTake()都含有taskSafe(),且每个semGive()都含有taskUnsafe()。通过这个方法,一个持有信号量的任务就可以得到删除保护。

计数器信号量 计数信号量与双态信号量的唯一区别在于它跟踪信号量GIVE的次数。 计数信号量用于保护具有多个复制的资源。

消息队列 在VxWorks中,单个CPU中任务之间的通信主要是由消息队列完成。 Wind提供按FIFO排队的消息队列,但有一个例外,Wind消息队列有两个优先级: 正常 MSG_PRI_NORMAL 紧急 MSG_PRI_URGENT

消息队列控制函数 msgQCreate() 分配并初始化一个消息队列 msgQDelete() 终止并释放一个消息队列 msgQSend() 向一个消息队列发送消息 msgQReceive() 从一个消息队列接收消息

管道 Pipes提供一个穿过I/O系统的消息队列设备接口。 Pipes提供Message Queue的消息排队和阻塞机制,并能提供一个独特的能力:与Select函数一起使用。通过Select(),Pipes允许Task等待接收来自一个I/O设备集合的数据。 产生一个Pipes: status = pipeDevCreate ("/pipe/name", max_msgs, max_length);

网络的任务间通信 VxWorks通常使用以太网作为传输媒介。在以太网之上,VxWorks提供了几种网络工具: -套接字(Socket) -远程调用(RPT)

套接字(Socket) VxWorks中,网络上任务间的通信就是套接字sockets。一个套接字就是任务间通信的终点,数据从一个套接字传到另一个套接字上,当一个套接字创建后,就已经规定了网络通信中数据传输的协议。 VxWorks支持Internet中的TCP和UDP两种协议。

信号(Signals) VxWorks提供一个软信号机制来异步地改变任务的执行流程。Signals可以被理解为一个软中断,不过与ISR不同的是:Signals是在任务下一次调度运行的时候执行,而ISR可以随时打断Task的执行。

中断服务程序 VxWorks的中断服务程序(ISRs)运行在任务上下文之外的一个特殊的上下文中。因此,中断处理不包括任务的上下文切换。 VxWorks提供函数intConnect()将指定的C函数与任意中断相联系。

中断与任务间的通信 信号量:ISRs可以GIVE信号量而任务可以TAKE或等待 信号(SIGNALS):ISRs可以“指示”任务导致任务的信号句柄的异步调度

VXWORKS程序特点 与WINDOWS,UNIX编程不同,在VXWORKS下的应用程序代码一般是和VX内核代码一起编译连接生成一个映象。 Vxworks操作系统通过BSP(板级支持包)来支持不同硬件平台。

三种不同的VxWorks映象比较 VxWorks映象通常由三个部分组成:BSP、操作系统内核和上层应用。从文件的组织形式上可以将映象分为三段:BSS段、Data段和Text段。其中,BSS段存放的是未初始化的全局变量或静态变量,Data段存放的是已经初始化的全局变量或静态变量,Text段存放的是可执行的代码

根据应用场合的不同,VxWorks映象可分为三类: Loadable images Rom-based images Rom-resident images 其中,Loadable images通过烧写在ROM中的Bootrom装载到RAM中来启动;Rom-based images使用自身带的启动代码把自己装载到RAM中来启动;而Rom-resident images在ROM中启动,只是把需要动态修改的Data段和BSS段装载到RAM中去。

Loadable images(可加载的VxWorks映象) 这是一种运行于RAM的VxWorks映象。它不包含搬移程序,需要借助于一些外部的程序如bootRom才能加载到RAM的低端RAM_LOW_ADRS地址处。这是缺省的开发映象。

图1、可加载的VxWorks映象

基于ROM的VxWorks映象 这是一种运行于RAM中,但起初存放于ROM中的VxWorks映象。即该映象需要和搬移程序一起固化在BOOT中。目标板上电后,首先运行BOOT中的引导搬移程序,将整个VxWorks映象拷贝到RAM地址RAM_LOW_ADRS处,并跳转到此处执行。如图2所示。

该映象根据是否被压缩又可分为: 基于ROM的未压缩的VxWorks映象,可直接从ROM拷贝到RAM中 基于ROM的压缩的VxWorks映象,这种映象主要是为了节约BOOT空间,在从ROM拷贝到RAM的过程中需要解压缩,因此与上述未压缩的映象相比,它的引导过程相对较慢,但两者在RAM中的运行速度是一样的。

图2 基于ROM的VxWorks映象

驻留ROM的VxWorks映象 这种映象起初也和搬移程序一起固化在BOOT中。目标板上电后,首先运行BOOT中的引导搬移程序,但仅将VxWorks映象的数据段和BSS段拷贝到RAM地址RAM_LOW_ADRS处,映象的代码段仍旧留在ROM中,从ROM中开始执行。如图3所示。

图3 驻留ROM的VxWorks映象

Vxworks集成开发环境TORNADO

创建一个VXWORKS简单示例 在tornado中创建一个新的project,它会出现如下对话框 ,bootable Vxwork image 一般用于完整的vxworks映象。 Downloadable application modules 用于一个模块,目标文件一般是 *.a或 *.out 文件 这里选择创建一个 bootable Vxwork image类型的project.

void usrAppInit (void) { #ifdef USER_APPL_INIT USER_APPL_INIT; /* for backwards compatibility */ #endif taskSpawn("tzxc10",60,0,30240,(FUNCPTR)zxc10,0,0, 0,0,0,0,0,0,0,0); } void zxc10(void) ………………….

讨 论

谢谢