嵌入式系统导论(4、软件设计-vxworks)
哈工大嵌入式操作系统课件—4_vxworks嵌入式操作系统

Watchdog Timers Calls
wd***()函数
WDOG_ID wdCreate (void) 创建一个看门狗定时器
返回值:如果成功则返回该看门狗定时器的ID, 否则返回ERROR。
wd***()函数
STATUS wdStart ( WDOG_ID wdId, int delay, FUNCPTR pRoutine, int parameter)
STATUS msgQSend ( MSG_Q_ID msgQId, char * buffer, UINT nBytes, int timeout, int priority)
发送一个消息到消息队列 msgQId :接收消息的队列ID buffer:待发送消息存放的缓存 nBytes:消息长度(字节) timeout:任务期望等待的tick数
将写全局和变量的代码作为临界区,使用互斥 机制进行保护。
Task Variables
任务间通信
共享数据结构 互斥机制 信号量 消息队列 管道 基于网络的任务间通信 信号
共享数据结构
Global variables Pointers Linear buffers Ring buffers Linked lists
抢占锁
Less restrictive form of mutual exclusion. 除ISR外,任务调度被禁止。 在调用taskLock()的函数离开临界区前,任何
其他任务都不能执行,除非该任务进入等待态。
信号量
VxWorks提供的最快速的任务间通信机制。 存在3类信号量:
- Binary - Mutual exclusion - Counting
A subroutine is reentrant if a single copy of the routine can be called from several task contexts simultaneously without conflict.
最新整理嵌入式实时操作系统VxWorks.ppt

VxWorks体系结构框图
板级支持包:Board Support Package
板级支持包对各种板子的硬件功能提供了统一的
软件接口,包括
硬件初始化
TCP/IP协议栈和
IVI//OOxW系 系UP文V这能oIV统统ONr/xOk件些够xSWI,sWX系Idrr将t提X系设灵a网管RS键显磁并otao标包o1pwr统C标A整s供1rk统备活e络道盘示盘口FkFS准括FsFM准ss个提支中了sIs:都的s驱驱驱驱驱驱包:驱::的盘、的盘供持,一使在动动动动动动每括与动原一缓驱T实V异作适的普个r用设: : , : , ,个以M,生u种冲动x用步为用 文 通e快W中 硬 局 内一 备S用 用 用 用 用 用B下用文F与I:高 包中 看 消 内 字 线 链 和-/库IoS一于 件 数F速断 件 域 存DO个 驱/于 于 于 于 于 于驱于件rRPO用性 括S断 门 息 存 符 缓 表 AkO个实 系 据灵包的 时 和 分T、标 动网 任xxIPs动采 任 进 中 看 内NS系S于能 :D处 狗 登 分 扫 冲 管提188CC文时 统 文活括产 钟 总 配S兼C1准 程络 务66程E用 务 程 断 门 存统风常的S理 计 录 配 描 和 理I供操V键d/件系 包 件的一生 和 线 等容I接序AC通 间序R基 间 间 处 狗 管格G设驻实、 时 、 、 、 环了作盘T标o,统 括 、、个和 计 内 等的口上A信 通:于 同 通 理 理Am备的内时器 缓一系,准文允应 : 外与R处 时 存设文,移F, 信优 步 信 机目存操、 冲个统Os仅本许用 部A备理 器 的件从植支先 机 机 制M标的作管实兼N存显根的 设,管 地系而持启级 制 制S机文系理用容在示据快 备I仅理 址统使多动的件统C、例的于,偏速 都存映得兼种或、核程文x仅移文 统在射文容8网其可心扩件6存读件一于件的卡B他抢:展系S在写系作x系启占PW8集统于磁统为6统动的iB,n网x盘文dS机多8包P络6的件制任B括驱一处S务P动部理调分度
嵌入式操作系统(VxWorks)

嵌入式系统 实时操作系统 VxWorks Tornado 其它工具
2013-9-17 1
嵌入式系统
性价比最大组合(CPU) 系统组合(接口) Internet组合(网络) 开发方便(IDE)
!!!无处不在的嵌入式系统!!!
2013-9-17 2
操作系统
2013-9-17 10
VxWorks(Wind River)(网络)
2013-9-17
11
VxWorks(Wind River)(I/O系统)
2013-9-17
12
VxWorks(Wind River)(BSP)
2013-9-17
13
VxWorks(Wind River)(BOOT)
2013-9-17ቤተ መጻሕፍቲ ባይዱ
2013-9-17
18
TORNADO IDE(基本操作)
■BOOT管理 BOOT编译 BOOT配置 ■项目管理 BOOTABLE项目 DOWNLOADABLE项目 剪裁 ■其它
2013-9-17 19
结束语
■配置启动问题 ■项目管理 ■任务管理 ■编程中的注意事项
!!!遍程不是问题!!!
2013-9-17 20
VxWorks(Wind River)(任务)
2013-9-17
7
VxWorks(Wind River)(优先级)
2013-9-17
8
VxWorks(Wind River)(中断)
2013-9-17
9
VxWorks(Wind River)(管理)
■信号量(SEMAPHORE) 解决同步/互斥问题 ■消息序列(MESSAGE QUEUE) 解决任务间通讯问题 ■中断(INTERRUPT) 解决外部响应问题 ■其它(EXCEPTION) !!向操作系统申请管理资源!!
嵌入式论文——嵌入式操作系统VxWorks

嵌入式操作系统VxWorks摘要:本文介绍了嵌入式操作系统VxWorks的内部结构和特点,以及跟其他操作系统的进行比较,了解各自的有缺点以及使用的领域,最后对WxWorks进行展望。
关键字:嵌入式操作系统VxWorks1.嵌入式操作系统背景随着计算机技术的迅速发展和芯片制造工艺的不断进步,嵌入式系统的应用日益广泛:从民用的电视、手机等电路设备到军用的飞机、坦克等武器系统,到处都有嵌入式系统的身影。
在嵌入式系统的应用开发中,采用嵌入式实时操作系统(简称RTOS)能够支持多任务,使得程序开发更加容易,便于维护,同时能够提高系统的稳定性和可靠性。
这已逐渐成为嵌入式系统开发的一个发展方向。
2.什么是VxWorksVxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统,是嵌入式开发环境的关键组成部分。
良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。
它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。
在美国的F-16、FA-18战斗机、B-2隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器上也使用到了VxWorks。
3.VxWorks的组成VxWorks操作系统包括了进程管理、存储管理、设备管理、文件系统管理、网络协议及系统应用等几个部分。
VxWorks只占用了很小的存储空间,并可高度裁减,保证了系统能以较高的效率运行。
VxWorks由以下几个主要部分组成:3.1高性能的实时操作系统核心windVxWorks的核心,被称作wind,包括多任务调度(采用优先级抢占方式),任务间的同步和进程间通信机制以及中断处理,看门狗和内存管理机制。
一个多任务环境允许实时应用程序以一套独立任务的方式构筑,每个任务拥有独立的执行线程和它自己的一套系统资源。
vxworks培训讲稿(嵌入式系统)

第一部分 VxWorks & Tornado Overview第一章 绪论VxWorks是一种嵌入式的实时操作系统,所谓嵌入式系统就是用户自己开发设计板子,板子上通常有一颗CPU,VxWorks支持32位的CPU,包括Intel公司的x86、Motorola公司的68k和PowerPC、MIPS、ARM、Intel公司的i960、Hitachi公司的SH。
我们设计的这块板子通常没有软件的自开发能力,所以我们需要一台通用机来辅助开发,这台通用机可以是PC或工作站,我们称辅助我们软件开发的通用机为宿主机(Host),用户自己开发的板子为目标机(Target)。
宿主机上要有一个集成开发环境(IDE)来辅助我们的软件开发,这套集成开发环境可以运行在Windows95/NT或 UNIX下,包括交叉编译器(Cross Compiler)和交叉调试器(Cross Debugger),所谓交叉编译器就是在宿主机上编译生成可以在目标机上运行的代码IMAGE,交叉调试器就是通过宿主机和目标机之间的某种耦合方式实现前后台调试。
我们称宿主机上的这套集成开发环境为Tornado,编译生成的目标机上的可执行代码IMAGE为VxWorks。
在系统安装的时候,集成调试环境和VxWorks的原材料(一些obj文件)都安装到宿主机上,编译生成的在目标机上运行的IMAGE内包含操作系统。
下面我们分别来介绍这两部分内容。
第二章 VxWorks第一节 IMAGE的结构VxWorks的IMAGE有三个层次、四个部分。
其RTOS内核是wind kernel,这个内核有两个特点:1.w ind kernel是一个微内核,这个特点导致VxWorks有许多的Components2.w ind kernel对外设不做假设。
所谓对外设不做假设是指操作系统不假设用户开发的板子上是否有总线以及有什麽样的总线,也不假设内存的大小及内存如何定位,不假设I/O 及有多少I/O。
北邮研究生嵌入式系统实验课程——第4-4节 VxWorks网络编程

VxWorks网络组件
basic network initialization components: 基本的网络初始化组件
– VxWorks基本网络支持 – 网络设备的启动
network devices:网络设备
– 网络设备的类型
networking protocols:网络协议
– TCP/IP组件 – 应用及路由协议
2
1、网络基础
OSI七层协议 TCP/IP协议 路由 Internet Protocol(IP)
– 数据报(Datagram)通信协议 – 是一种尽力而为业务(Best-effort ) 数据丢失(Loss) 重新排序(Reordering) 数据重复(Duplication) 延时(Delay) – 主机到主机的数据传送
Block until connection established
Socket() Connect()
Connection establishment
send()
Communication message (request)
recv()
Process request
send()
Communication message (reply)
传输协议(Transport Protocols)
用户数据报协议( User Datagram Protocol (UDP))
– 对数据进行校验 – 仍然是尽力而为的服务
传输控制协议(Transmission Control Protocol (TCP))
– 对数据进行校验 – 可靠的字节流传送 – 流量和拥塞控制
3
IP地址
32-bit的识别符 (IPv4, IPv6=128 bits) 点分方式的四个十进制数来表示: 192.118.56.25 -> 167.208.101.28
西工大嵌入式实验指导书-VxWorks

《嵌入式计算机系统》VxWorks实验指导书编写:魏晓敏西北工业大学2013年11月实验一基于VxWorks的多任务设计第一部搭建VxWorks开发环境VxWorks 是专门为实时嵌入式系统设计开发的操作系统软件,为程序员提供了高效的实时任务调度、中断管理、实时的系统资源以及实时的任务间通信。
VxWorks是种功能强大而且复杂的操作系统,仅仅依靠人上编程调试,很难发挥它的功能并设计出可靠、高效的嵌入式系统,必须有与之相适应的开发工具。
Tornado就是为开发基于VxWorks 的应用系统而提供的集成开发环境,Tornado中包含的工具管理软件,可以将用户自己的代码与VxWorks 的核心系统有效地组合起束,从而轻松、可靠地完成嵌入式应用厅发。
Tornado是Windriver 公司开发的嵌入式软件开发环境。
Tornado开发环境的最新版本是2.2 ,它在延续了Tornado2.0 开发环境的基础上,增加了更多易于使用、性能优异的工具,因此在商业上取得了较大成功,获得了用户的好评。
Tornado开发环境是嵌入式实时领域里最新的开发调试环境,是编写嵌入式实时应用程序的完整的软件开发平台。
它给嵌入式系统开发人员提供了一个不受目标机资源限制的超级开发和调试环境a。
它包含3 个高度集成的部分:●运行在宿主机和目标机上的强有力的交叉开发工具和实用程序●运行在目标机上的高性能、可裁剪的实时操作系统VxWorks●连接宿主机和目标机的多种通讯方式,如以太网、串u线、ICE 或ROM 仿真器VxWorks的开发环境为Tornado,我们实验室用的是Tornado2.2。
包括Wind_River_tornado2.2.1_vxworks5.5.1 和Wind_River_vxworks5.5.1_BSP_drivers 两部分,需要分别安装,安装的顺序是先安装VxWorks5.5.1,再安装BSP包。
1.1Tornado安装步骤1.1.1 获取Tornado安装文件Tornado安装文件,包括 TORNADO2.2 和BSP的文件,可以从网上下载(/ShowFile.asp?FileID=62525)。
嵌入式系统导论

1.什么是嵌入式系统?嵌入式系统(Embedded system),是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”。
与个人计算机这样的通用计算机系统不同,嵌入式系统通常执行的是带有特定要求的预先定义的任务,并且嵌入式系统只针对一项特殊的任务。
国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
嵌入式系统的核心是由一个或几个预先编程好以用来执行少数几项任务的微处理器或者单片机组成。
与通用计算机能够运行用户选择的软件不同,嵌入式系统上的软件通常是暂时不变的;所以经常称为“固件”。
2.举例说明嵌入式系统应用情况?嵌入式系统是用来控制或者监视机器、装置、工厂等大规模设备的系统。
通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。
事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。
嵌入式系统应用情况如下:1)工业制造基于嵌入式芯片的工业自动化设备将获得长足的发展,目前已经有大量的8、16、32 位嵌入式微控制器在应用中,网络化是提高生产效率和产品质量、减少人力资源主要途径,如工业过程控制、数字机床、电力系统、电网安全、电网设备监测、石油化工系统。
就传统的工业控制产品而言,低端型采用的往往是8位单片机。
但是随着技术的发展,32位、64位的处理器逐渐成为工业控制设备的核心,在未来几年内必将获得长足的发展。
2)交通管理在车辆导航、流量控制、信息监测与汽车服务方面,嵌入式系统技术已经获得了广泛的应用,内嵌GPS模块,GSM模块的移动定位终端已经在各种运输行业获得了成功的使用。
目前GPS设备已经从尖端产品进入了普通百姓的家庭,只需要几千元,就可以随时随地找到你的位置。
3)信息家电这将称为嵌入式系统最大的应用领域,冰箱、空调等的网络化、智能化将引领人们的生活步入一个崭新的空间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VxWorks Kernel
通信、同步和互斥机制(信号量 API) 通信、同步和互斥机制(
semBCreate()创建(产生并激活)一个二进制信号量 semMCreate()创建(产生并激活)一个互斥信号量 semCCreate()创建(产生并激活)制一个计数信号量 semDelete() 中止并删除信号量 semTake() 获得信号量 semGive() 释放信号量 semFlush() 解锁所有正等待某一信号量的任务
VxWorks Kernel
时钟管理 时钟管理提供以下功能:
维护系统日历时钟; 在任务等待消息包、信号量、事件或内存 段时的超时处理; 以一定的时间间隔或在特定的时间唤醒或 发送告警到一个任务。 处理任务调度中的时间片轮循。
VxWorks Kernel
时钟管理( 时钟管理(API) tickAnnounce() 通知系统内核时钟“滴答” tickSet() 设定内核时钟计数器值 tickGet() 得到内核时钟计数器值 timer_create() 创建时钟 timer_gettime() 获得时钟器给定值的当前 剩余值 timer_settime() 设定时钟值 timer_connect() 联系用户函数和时钟信号 timer_cancel() 取消一个时钟 sysClkRateSet() 系统时钟速率设置
VxWorks Kernel
通信、 通信、同步和互斥机制 VxWorks支持各种任务间通信机制,提供了多样 的任务间通信方式,主要有如下几种:
共享内存,主要是数据的共享; 信号量,用于基本的互斥和任务同步; 消息队列和管道,单CPU的消息传送; Socket和远程过程调用,用于网络间任务消息 传送; 二进制信号,用于异常处理。 在多处理器之间的任务也可采用共享内存对象来 实现任务间通信,只是在系统配置上有所不同 通过组件支持COM/DCOM
VxWorks Kernel
任务管理(API) 任务管理
taskSpawn() 创建(产生并激活)新任务 taskInit() 初始化一个新任务 taskActivate() 激活一个已初始化的任务 taskName() 由任务ID号得到任务名 由任务名得到任务ID号 taskNameToId() taskPriorityGet() 获得任务的优先级 taskIsSuspended() 检查任务是否被悬置 taskIsReady() 检查任务是否准备运行 taskTcb() 得到一个任务控制块的指针 taskDelete()中止指定任务并释放内存(仅任务堆栈和控制块) taskSafe() 保护被调用任务 taskSuspend() 悬置一个任务 taskResume() 恢复一个任务 taskRestart() 重启一个任务 taskDelay() 延迟一个任务
VxWorks Kernel
任务管理(优先级反转)
优先级
T1:获取资源R,阻塞 T1:获得资源R,执行
T2:抢占T3 T3:获取资源R T3:执行 T3:释放R
时间
客观上造成优先级低的进程T2抢占优先级高的进程T1 Vxworks解决方案: 优先级继承,在T1阻塞时,T3继承T1的优先级
VxWorks Kernel
r e ad ( )
c l o se ( )
c l o se ( )
VxWorks Kernel
中断服务程序 intConnect() intCount() intLevelSet() intLock() intUnlock() intVecSet() intVecGet() 将C函数和中断向量联结 得到当前中断套叠深度 设置程序中断级别 使中断禁止 开中断 设置异常向量 得到异常向量
VxWorks Kernel
通信、同步和互斥机制( 通信、同步和互斥机制(互斥)
关中断 抢占禁止(taskLock) 信号量锁定资源等方法 一般来说,关中断是最有效的解决互斥的方法。 但这对于实时应用来说,它阻止系统对外部事 件的响应,无法满足实时性的要。同样,中 断延迟也是不能接受。
VxWorks Kernel
通信、同步和互斥机制( 通信、同步和互斥机制(信号量)
VxWorks信号量提供最快速的任务间通信机制,它主 要用于解决任务间的互斥和同步。针对不同类型的问 题,有以下三种信号量: 二进制信号量 使用最快捷、最广泛,主要 用于同步或互斥; 互斥信号量 主要用于优先级继承、安全删除和 回溯; 计数器 资源分配 Note:VxWorks还提供POSIX信号量和多处理器上信号 量的应用。
rlo g in
NFS
FTP
TCP IP + IC M P E th e r n e t PPP B a c k p la n e
UDP
C u s to m In te rfa c e S L IP /C S L IP
VxWorks Kernel
通信、同步和互斥机制( 通信、同步和互斥机制(Sockets)
等待CPU 等待资源 而阻塞
悬 置 态 就 绪 态
被延时
延
迟
态
Note:任务在任意 状态均可被删除
休
眠
态
不被调度
taskInit()
就绪态-> 悬置态 semTake()/msgQReceive() 就绪态-> 延迟态 taskDelay() 就绪态-> 休眠态 taskSuspend() 悬置态-> 就绪态 semGive()/msgQSend() 悬置态-> 休眠态 taskSuspend() 延迟态-> 就绪态 expired delay 延迟态-> 休眠态 taskSuspend()
VxWorks嵌入式操作系统
中南大学信息科学与工程学院 胡小龙
主要内容
VxWorks简介 Tornado开发环境 BSP设计 设备驱动程序
VxWorks简介
美国WindRiver公司于1983年设计开发 良好的持续发展能力 高性能的内核 友好的用户开发环境 良好的可靠性和卓越的实时性
VxWorks简介
广泛地应用在通信、军事、航空、航天 等高精尖技术及实时性要求极高的领域 中,如卫星通讯、军事演习、弹道制导、 飞机导航等 F-16、FA-18 战斗机、B-2 隐形轰炸机和 爱国者导弹上,甚至连1997年4月在火星 表面登陆的火星探测器上也使用到了 VxWorks
VxWorks简介
何谓实时? 对于给定一个时间约束量ε> 0,如果系 统S在T1时刻接受到输入,在T2时刻给出 合理的输出,且使T2-T1<ε。则称系统S 满足要求时间ε的实时性,通常称系统S 为实时系统。 “正确、但迟后的结果也是错误的”
休眠态-> 就绪态 taskResume()/taskActivate() 休眠态-> 悬置态 taskResume() 休眠态-> 延迟态 taskResume()
VxWorks Kernel
任务管理(调度策略)
Wind内核采用基于优先级(0~255)的抢占式调度法作为它的缺省 策略,同时它也提供了轮转调度法
BSP
BSP的作用 的作用 为各种目标板的硬件功能提供了统一的软件 它们包括:
硬件初始化 中断处理和产生 硬件时钟和定时器管理 内存映射和分配
BSP还包括boot Rom和其它启动机制 sysLib和sysALib库是VxWorks可移植的核心
BSP
BSP初试化一般过程
BSP初试化一般过程
BSP初试化一般过程
VxWorks的特点
可靠性 实时性 可裁减性
VxWorks 由一个体积很小的内核及一些可以根据需要进行定制的 系统模块组成(400多个)。VxWorks 内核最小为 8kB,即便加上 其它必要模块,所占用的空间也很小,且不失其实时、多任务的 系统特征。
多任务支持(丰富的IPC机制) 优秀的开发环境
创建(产生并激活)消息队列 中止并自由信号量 向消息队列发送消息 从消息队列接收消息
VxWorks Kernel
通信、同步和互斥机制( 通信、同步和互斥机制(管道)
管道是用VxWorks的I/O系统提供一种灵活的消息传 送机制,它是受驱动器pipeDrv(VxWorks所提供) 管理的虚拟I/O设备 Note:任务调用标准的I/O函数打开、读出、写入管道
VxWorks Kernel
通信、同步和互斥机制( 通信、同步和互斥机制(共享内存)
任务间通信的最简单的方法是采用共享存储区, 也即相关的各个任务分享属于它们的地址空间 的同一内存区域。因为所有任务都存在于单一 的线性地址空间,任务间可以共享数据。
全局的变量、线性队列、环形队列、链表、指针 都可被运行在不同上下文的代码所引用. 但保证互斥使用是用户的任务.
VxWorks Kernel
通信、同步和互斥机制(网络通信) 通信、同步和互斥机制( VxWorks提供了如下一些网络工具完成信息传送:
Sockets 完成运行在VxWorks系统或其它系统 之间任务的消息传送; 远 程 过程 调 用 (RPC)允许 任 务调 用 另 一 主机 RPC (运行的系统为VxWorks或是其它)上的过程。 远程文件存取 VxWorks任务可采用NFS、RSH、 FTP、TFTP等方式远程存取主机文件。
VxWorks Kernel
通信、同步和互斥机制( 通信、同步和互斥机制(网络通信组件)
远远远远远远 远远远远 远远远远远远 n e tD rv te ln e t S o u rc e D ebugger RPC Zbuf i'fa c e S o c k e ts SNMP v 1 /v 2 RSH TFTP X W in d o w s P ro to c o l
服服服 s o c ke t ()
b i n d ()
l i s t en ( )