Vxworks基于S3C44B0X处理器的中断处理设计
第7卷 第18期 2007年9月167121819(2007)1824750204 科 学 技 术 与 工 程Science Technol ogy and Engineering Vol .7 No .18 Sep.2007Ζ 2007 Sci .Tech .Engng .Vxworks 基于S3C44B0X 处理器的中断处理设计徐 伟 鞠晓东(中国石油大学资源与信息学院,北京102249)摘 要 嵌入式微处理器和嵌入式实时操作系统是嵌入式系统的两大核心技术。
详细分析了wind R iver 公司的嵌入式实时操作系统Vx works 中断处理机制,并针对Vx works 中断处理机制对于S AM S UNG 公司AR M7微处理器芯片S3C44B0X 的特殊性,给出了Vx works 基于S3C44B0X 处理器的中断实现。
关键词 Vx works S3C44B0X 中断处理 中断服务程序中图法分类号 TP316.89; 文献标识码 A2007年5月18日收到国家自然科学基金项目(10534040和40574049)资助第一作者简介:徐 伟(1984—),男,湖南南县人,硕士研究生,研究方向:智能检测技术。
硬件中断对于实时系统是至关重要的,硬件中断处理机制是多任务环境运行的基础,是系统实时性的保证。
Vx works 作为一款优秀的实时嵌入式操作系统,它采用中断的方式通知外部事件的发生。
因此,熟悉其中断的处理过程对于Vx works 操作系统的开发至关重要。
本文详细讨论了Vx works 的中断处理机制,给出了ARM7微处理器芯片S3C44B0X 中断的具体实现。
1 S3C44B0X 中断概述AR M7处理器支持7种类型的异常:复位(Re 2set )、未定义指令(Undefined I nstructi on )、软件中断(S W I )、预取中止(Prefetch abort )、数据中止(Data abort )、普通中断请求(I nterrup t Request )和快速中断请求(Fast I nterrup t Request )。
异常出现后,处理器会按固定的优先级强制从异常类型对应的固定存储器地址开始执行程序。
AR M7微处理器芯片S3C44B0X 异常向量地址如表1所示。
AR M7微处理器芯片S3C44B0X 的中断控制器可以接收来自30个中断源的请求,其中4个外部中断(E I N T4/5/6/7)共享1个中断源。
如果将26个中断源都定义为I RQ 中断,当同一时刻多个中断请求产生时,可以通过读取Pending 寄存器来确定哪些中断发生了,并对产生的中断依次进行处理,通过软件的方式决定中断服务的优先级[1]。
注意:在某个中断的I SR 结束时,必须将I_I SPC 寄存器中相应位置1来清除中断位。
表1 S3C44B0X 异常向量表优先级中断向量入口地址异常中断类型1(最高级)0x00000000复位20x00000010数据访问中止30x0000001C 快速中断请求(F I Q )40x00000018外部中断请求(I RQ )50x0000000C 指令预取中止60x00000004未定义指令6(最低级)0x00000008软件中断(S W I )2 Vxworks 中断处理机制硬件中断处理是实时操作系统中最重要的部分,为了尽快响应中断,Vx works中断处理程序在所有任务上下文之外的一个特殊上下文内执行,没有任务控制块(TCB),因此中断的发生只会引发一些关键寄存器的存储,而不涉及任务上下文的切换,从而减小了中断延时[2]。
Vx works中所有的中断服务程序使用相同的中断堆栈。
该堆栈的定位和初始化由系统在启动时根据指定的配置参数完成。
为能够处理最坏情况下的中断嵌套,必须分配足够大的中断堆栈空间。
Vx works中断处理完成以下工作:保存CP U中断的上下文、调用中断服务程序(I SR)、中断服务程序返回后,恢复中断的上下文。
2.1 中断向量表的生成与实现中断处理使用中断向量表来提供中断级的服务,中断服务程序与中断向量相连接,中断向量表含有中断向量对应的中断服务程序的地址。
Vx works将中断向量表定位在RAM中,基地址为VEC_BASE_ADRS,在config A ll.h中定义,一般为RAM存储器的起始地址。
在系统启动初始化时,由int V ec BaseSet()函数设置向量表的基地址。
向量表地址设定后,需要初始化指定中断的缺省处理函数。
Vx works在映像的代码段建立了一张中断缺省函数表,函数exc Vec I nit()根据这张表来设置向量表的各中断向量值。
需初始化的向量表范围由LOW_VEC和H I GH_VEC确定,在exc A rchL ib.h中定义[3]。
2.2 中断服务程序的注册Vx works在int L ib.h中提供int Connect()函数将中断服务程序(I SR)和中断向量表相关联。
中断发生时,int Connect()将创建一小段代码,保存必要寄存器、设置堆栈入口,然后以指定的参数在中断级调用中断服务程序,完成相应的中断服务。
从调用函数返回时,int Connect()函数恢复寄存器和堆栈,然后退出中断[4]。
int Connect()函数原型如下: ST AT US int Connect(VO I D F UNCPTR3vect or, VO I D F UNCPTR r outine,int para m)其中vect or为相关中断向量在向量表中的偏移地址,r outine为响应中断C函数指针,para m是传递给中断服务程序的参数。
一般用户可见的都是硬件中断号,需要将中断号转换为中断向量偏移。
Vx works提供相关的几个宏:I V EC_T O_I N UM和I N UM_T O_I V EC。
宏I V EC_ T O_I N UM将中断号(number)转换成中断向量地址,宏I N UM_T O_I V EC则将中断向量地址转换为中断号。
宏定义在iv A rch.h中实现。
3 S3C44B0X处理器中断实现3.1 中断向量表的安装对于AR M体系结构,Vx works支持7种异常中断,默认的异常中断向量地址和中断服务程序如图1所示。
操作系统启动后,将RAM存储器空间重映射到0地址空间,因此异常入口不是在Flash的0地址开始的空间中,而是在运行时写入到经过Re map 后的RAM中。
图1 Vx Works AR M中断缺省向量表对于S3C44B0X来说,它有固定的存储Bank地址,Flash的基地址位于0x0地址,RAM基地址也固定在0x0c000000处,不能将程序运行空间的起始地址映射到0地址,即不支持地址重映射操作。
为了解决这个问题,就需要将异常入口硬编码到系统启动处,即Flash的开始处。
r om I nit.s是在地址0处开始执行的,可以在r om I nit.s开始处添加异常入口函数。
代码如下,其中0x14保留,0x1c在Vx works 中没有使用。
157418期徐 伟,等:Vx works基于S3C44B0X处理器的中断处理设计 B coldB _r omUndefB _r omS wiB _r omPrefetchB _r omData AbortB cold /3_r omReserved3/B _r om I RQB cold /3_r omF I Q3/同时笔者仿Vx works创建一个类似于exc Ve2 c I nit()功能的函数s3cExc VecSet(),在RAM的起始地址建立异常向量表,新异常向量表和原Vx works 设计的完全一样。
异常产生时,从Flash的异常入口跳转到自定义的异常向量表中,再调用Vx works 提供的异常处理函数,这样就把异常处理和Vx2 works提供的异常处理函数连接到了一起,解决了S3C44B0X不能进行地址重映射而产生的问题。
下面给出s3cExc VecSet()具体实现:void s3cExc VecSet(void){ int i;….i=(int)&intEnt;3((volatile int3)(0x0c000114))=i;}3.2 中断驱动回调函数的实现中断产生时,Vx works下S3C44B0X是通过软件的方式决定中断服务优先级的。
因此,软件必须实现:中断优先级检查、使能某级中断、禁止某级中断以及中断确认等功能。
Vx works在系统上层提供了四个钩子函数来实现上述功能:sysI nt L vl V ecChkR tn ()、sysI nt L vlEnableR tn()、sysI nt L vl D isableR tn()和sysI nt L vl V ec AckR tn()。
用户必须在底层BSP驱动中实现与系统函数接口,这部分工作是在BSP目录下的sngks32c I ntr Ctl.c文件中完成。
4 中断处理实例某项目开发设计的S3C44B0X母板中网卡芯片使用中断E I N T0。
系统初始化过程中首先调用sy2 s Hw I nit()对硬件进行初始化,设置E I N T0上升沿触发: rEXTI N T=0x4;/3网卡使用EXTI N T0,上升沿触发3/然后执行mux DevStart()加载网络驱动,并在ne2000endStart()中调用int Connect()向系统注册网卡中断服务程序:int Connect((VO I D F UNCPT R3)I N UM_T O_ I V EC(0x19),ne2000I nt,(int)pD rvCtrl);网卡中断处理流程如图2所示。
图2 Vx Works网卡中断处理流程图 网卡中断产生时,系统自动跳转到地址0x18处执行:B_r om I RQ,在I RQ函数中直接取得Vx works异常处理函数部分中的I RQ处理函数intEnt()地址,系统跳转到intEnt()处执行,intEnt()调用sysI2 2574科 学 技 术 与 工 程7卷nt L vl V ecChkR tn ()得到网卡中断号0x19,禁止该中断,随后跳转到int Connect ()给0x19中断号关联的中断服务程序ne2000I nt ()去执行。
中断处理结束后,通过调用sysI nt L vl V ec AckR tn ()来清除网卡中断,并将其重新使能。
参 考 文 献1 Sa m sung .S3C44B0X Data Sheet .htt p://www .sa m sung .com,20022 [美]R iverW.Vx works 程序员指南.王金刚,高 伟,苏 琪,等,译.北京:清华大学出版社,20033 陈智育,温彦军,陈 琪.Vx works 程序开发实践.北京:人民邮电出版社,20044 孔祥营,柏桂枝.嵌入式实时操作系统Vx works 及其开发环境Tornado .北京:中国电力出版社,2002Vxworks I n terrupt Process D esi gn Ba sed on S3C44B0XXU W ei ,JU Xiao 2dong(School of Res ources &I nfor mati on,University of Petr oleum,Beijing 10224,P .R.China )[Abstract] Embedded m icr op r ocess or and real 2ti m e operating syste m are t w o core technol ogies of an e mbedded syste m.The interrup t handling mechanis m of Vx works in details is exp lained;A i m ing at characteristics of Vx works interrup t handling mechanis m for S3C44B0X,it shows Vx works interrup ting realizati on based on S3C44B0X.[Key words] Vx works S3C44B0X interrup t handling interrup t service r outine357418期徐 伟,等:Vx works 基于S3C44B0X 处理器的中断处理设计 。
第五章 基于S3C44B0X的嵌入式系统应用开发实例
S3C44B0X复位后的存储器地址分配如下图:
从S3C44B0X复位后的存储器地址分配图可以看 出:
特殊功能寄存器位于0x01C00000到0x02000000的4M
空间内; Bank0-Bank5的起始地址和空间大小都是固定的; Bank6的起始地址是固定的,空间可以配置为 2/4/8/16/32M。 Bank7的空间大小和Bank6一样是可变的,也可以配置 为2/4/8/16/32M。 Bank7的起始地址是可变的。 如果同时使用Bank6/Bank7,则要求连接相同容量的 存储器,而且地址空间在物理上是连续的。
Bank1:上接非线性Flash,当做系统硬盘使
用,可以构造文件系统,存放海量数据。(推 荐使用)
Bank6:SDRAM,起始地址为
0xC000000。
5.2.3 S3C44B0X存储控制器相关引 脚
和存储器相关的引脚的配置: Bank0---NGCS0 用来选通启动存储器。启动存储 器在开机复位后,就应正常工作,因此由引脚设置。
其他存储体的总线宽度只能在系统复位后由程序进行设定, 由地址为0x01c8000的特殊寄存器BWSCON的相应位决定。
关于存储器引脚的配置
例:
S3C44B0X ADDR20~1 OM0 OM1 DATA15~0 nGCS0 nOE nWE
SST39VF160 A19~0 DQ15~0 nCE nOE nWE
只要将CPU上的相应Bank连线(nGCS[7:0])接到外 设芯片的片选引脚上, 便可以根据相应的地址进行存储器 或外设操作。
Bank0:通常,使用Bank0上的NOR
Flash放置系统BootLoader ,系统上电后, PC指针自动指向Bank0的第一个单元,开始 进行系统自举(运行系统初始化程序 BootLoader)。系统自举完成后,便从硬盘 中将系统文件和用户应用程序复制到 SDRAM内存中执行。
VxWorks开发教程(2024)
03
无线通信应用案例分 析
通过分析一个具体的无线通信应用案 例,展示如何在VxWorks系统中实现 无线通信功能,并提供一些优化和改 进的建议。
2024/1/28
35
08
图形界面开发与多媒体应用支 持
Chapter
2024/1/28
36
图形界面开发框架介绍
WindML
2024/1/28
29
设备驱动开发流程
01
需求分析
明确设备的功能需求、性能需求 和接口需求,为后续的设备驱动
开发提供基础。
03
编码实现
依据设计文档,使用C语言等编程 语言实现设备驱动的代码编写。
2024/1/28
02
设计阶段
根据需求分析结果,设计设备驱 动的整体架构、数据结构和函数
接口等。
04
测试与验证
2024/1/28
10
建立工程及源代码管理
创建新工程
在Workbench中,选择“File”->“New”>“VxWorks Project”,然后按照向导创建一个 新的VxWorks工程。
配置工程属性
在工程属性中,你可以设置编译选项、包含路径 、链接库等。确保这些配置与你的目标机和源代 码相匹配。
配的内存。
使用memPartAlloc和memPartFree函数:VxWorks提供了内存分区管理功能,可以 使用memPartAlloc函数从指定的内存分区中分配内存,使用memPartFree函数释放
内存到相应的分区。
2024/1/28
使用taskAlloc和taskFree函数:针对任务相关的内存分配,可以使用taskAlloc和 taskFree函数。这些函数会从任务的控制块中分配和释放内存。
S3C44B0X的嵌入式系统应用开发
UART、I2C、SPI接口
S3C44B0X提供了多种通信接口,如UART、I2C、SPI接口,方便与其他设备进行通信。
LCD控制器和触摸屏接口
S3C44B0X内置LCD控制器和触摸屏接口,支持多种显示设备。
电源和时钟
1.8V和3.3V电源
S3C44B0X支持1.8V和3.3V两种电源电压。
内置时钟发生器
中断和异常处理
中断控制器
S3C44B0X内置中断控制器,支持多种中断 源,如定时器、串口等。
中断处理程序
编写合理的中断处理程序,快速响应中断事 件,提高系统实时性。
异常处理
对异常事件进行分类处理,确保系统稳定性 和可靠性。
功耗管理
1 2
低功耗模式
S3C44B0X支持多种低功耗模式,如休眠、待机 等,以降低系统功耗。
嵌入式操作系统
实时操作系统(RTOS)
如FreeRTOS或ThreadX,提供实时任务调度、内存管理、中断处 理等功能。
Linux
适用于资源丰富的嵌入式系统,提供完整的操作系统功能。
μC/OS-II/III
轻量级的实时操作系统,适用于资源有限的嵌入式系统。
引导加载程序
U-Boot
开源的引导加载程序,支持多种处理器架构和硬件平台。
s3c44b0x的嵌入式系统应用开发
目录
• S3C44B0X硬件概述 • 嵌入式系统开发环境 • 系统设计和优化 • 应用实例 • 常见问题和解决方案
01
S3C44B0X硬件概述
处理器特性
ARM7TDMI内核
01
S3C44B0X采用ARM7TDMI内核,具有高性能、低功耗的特点。
32位R内存地址的读写操作,如果地址不正确或者访问权限不正确,可能会导致系统崩溃或 者数据错误。解决内存访问问题需要仔细检查代码中的内存地址和访问权限,确保所有的读写操作都是正确的。
vxworks系统及函数详解
VxWork介绍及编程VxWork介绍及编程一.嵌入式操作系统VxWorks简介VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。
良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。
它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。
在美国的F-16、FA-18 战斗机、B-2 隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器上也使用到了VxWorks。
实时操作系统和分时操作系统的区别从操作系统能否满足实时性要求来区分,可把操作系统分成分时操作系统和实时操作系统。
分时操作系统按照相等的时间片调度进程轮流运行,分时操作系统由调度程序自动计算进程的优先级,而不是由用户控制进程的优先级。
这样的系统无法实时响应外部异步事件。
实时操作系统能够在限定的时间内执行完所规定的功能,并能在限定的时间内对外部的异步事件作出响应。
分时系统主要应用于科学计算和一般实时性要求不高的场合。
实时性系统主要应用于过程控制、数据采集、通信、多媒体信息处理等对时间敏感的场合。
VxWorks的特点•可靠性操作系统的用户希望在一个工作稳定,可以信赖的环境中工作,所以操作系统的可靠性是用户首先要考虑的问题。
而稳定、可靠一直是VxWorks的一个突出优点。
自从对中国的销售解禁以来,VxWorks以其良好的可靠性在中国赢得了越来越多的用户。
•实时性实时性是指能够在限定时间内执行完规定的功能并对外部的异步事件作出响应的能力。
实时性的强弱是以完成规定功能和作出响应时间的长短来衡量的。
VxWorks 的实时性做得非常好,其系统本身的开销很小,进程调度、进程间通信、中断处理等系统公用程序精练而有效,它们造成的延迟很短。
s3c44b0x主板启动用到的代码分析
s3c44b0x主板启动用到的代码分析s3c44b0x主板启动用到的代码分析一首先从cpu/s3c44b0/start.S这个文件开始执行,这个文件主要作以下几点:1 设置处理器的工作模式。
2 初始化中断向量。
3 关闭看门狗功能。
4 允许timer5的中断(时钟中断)。
5 允许IRQ中断,进制FIQ中断。
6 设置时钟控制寄存器控制CPU的主频。
根据我自己的开发板进行了设置。
(下面介绍了时钟主频的计算公式)。
7 调用board/<your.board>/lowlevel.S对存储器进行初始化。
这个文件主要是根据开发板设置每个存储器的BANK。
我修改了这个文件使其支持我的开发板。
8 将ROM中的U-BOOT代码拷贝到RAM中。
并在RAM中设置好中断向量表。
9 设置堆栈。
10 跳到lib_arm/board.c中执行start_armboot.二执行lib_arm/board.c中的start_armboot,主要完成一下工作:1 调用cpu/<your.board>/cpu.c中的cpu_init()来刷新所有cache,将0x00000000~0x0c000000区设为非cache区。
并使用全部8K空间作为cache。
总线优先级为默认优先级。
2 调用board/<your.board>/<your.board>.c中的board_init()根据具体的开发板对PORT进行设置。
我修改这个文件使其支持我的开发板。
3 调用cpu/s3c44b0/interrupts.c 中的interrupt_init()初始化Timer1定时器使其在指定时间产生中断。
4 根据include/configs/<your.board>.h配置文件中(CFG_ENV_IS_IN_<*>)环境变量保存位置选项来调用common/env_*.c对应文件中的env_init()。
vxworksprintf与logMsg及中断相关内容(转载加总结)
vxworksprintf与logMsg及中断相关内容(转载加总结)1. printf需要调用输入/输出设备资源,若在intr中使用printf,可能会由于标准输入/输出设备在被使用中(一般会semtake一下),这导致intr被阻塞,这在vxworks在是不被允许的,可能就导致系统响应速度极其慢或者忽快忽慢(因为通常情况下intr的第一步操作是自私的关闭所有中断,此时资源等到in/out设备可以使用才会继续往下执行)。
logMsg里面的实现是将消息发送给sysLog这个任务,查看一下vxworks发现,这个任务的优先级为0(不知道是不是我们的比较特别)。
这带来一个规则:若在intr中,sysLog不会进行抢占操作将logMsg中的信息输出出来(毕竟interrupt的优先级是最高的),但是intr一执行完,它立刻抢占,将信息输出。
若在普通的任务(优先级 > 0)中调用logMsg,它会毫不留情的抢占,将信息输出。
2. 相关解释printf( ) - write a formatted string to the standard output stream (ANSI).logMsg( ) does not actually perform the output directly to the logging streams, but instead queues the message to the logging task, logMsg( ) can be called from interrupt service routines.printf()是将信息输出到标准输出设备(STDIN/STDOUT)中,如果此时设备正在工作,那么就会发生阻塞.logMsg()是使用消息队列的方式,它将信息地址发送到队列,由专门的任务将信息打印出来.关于LogMsg的工作机理。
LogMsg利用消息队列将用户所发的消息传送给LogTask,然后由LogTask将其显示在屏幕或者其他输出设备上。
第六章 基于S3C44B0X的嵌入式系统应用开发实例
本章主要内容
• 6.10 S3C44B0X A/D转换器功能及应用开发 • 6.11 S3C44B0X RTC(实时时钟)功能及应 用开发 • 6.12 S3C44B0X看门狗定时器功能及应用开发 • 6.13 S3C44B0X IIC总线接口功能及应用开发 • 6.14 S3C44B0X IIS总线接口功能及应用开发 • 6.15 S3C44B0X SIO接口功能及应用开发 • 6.16 基于S3C44B0X的S3CEV40开发介绍 • 6.17 S3CEV40启动程序设计 • 6.18 USB接口功能开发实例 POET
POET
六、带PWM的定时器(脉宽可调制)
• 5个16位带PWM的定时器 • 1个16位基于DMA或基于中断的内 部定时器; • 可编程的工作周期、频率和极性; • 死区(Dead-zone)产生器; • 支持外部时钟源。
POET
七、实时时钟RTC • 全时钟特点:毫秒、秒、分、时、天、 星期、月、年; • 运行于32.768KHz; • CPU唤醒的警告中断; • 时间滴答(Time tick)中断。 八、通用输入/输出端口 • 8个外部中断端口; • 71个(多功能)复用输入/输出口。
6.1.2 Samsung S3C44B0X特点
一、S3C44B0X体系结构
• S3C44B0X是基于ARM7TDMI的体系结 构。
POET
• 支持大、小端模式(通过外部引脚来选择); • 地址空间:包含8个地址空间,每个地址空间的大小为 32M字节,总共有256M字节的地址空间; • 所有地址空间都可以通过编程设置为8位、16位或32位宽 数据对准访问; • 8个地址空间中,6个地址空间可以用于ROM、SRAM等 存储器,2个用于ROM、SRAM、FP/EDO/SDRAM等存 储器; • 7个起始地址固定及大小可编程的地址空间; • 1个起始地址及大小可变的地址空间; • 所有存储器空间的访问周期都可以通过编程配置; • 提供外部扩展总线的等待周期; • 在低功耗的情况下支持DRAM/SDARM自动刷新; POET • 支持地址对称或非地址对称的DRAM。
VxWorks几种常用的延时方法
VxWorks几种常用的延时方法关键字:taskDelay 函数VxWorks 基准频率实时嵌入式系统sysTimes-tampLock 串口通信skep 延时时间tick嵌入式系统中,一个任务往往需要在特定的延时之后执行一个指定的动作,比如等待外设以确保数据可靠,控制扬声器发声时间以及串口通信超时重发等。
这就需要利用定时器机制来计量特定长度的时间段。
VnWorks作为实时嵌入式系统,提供多样的定时接口函数。
下面列举一些常用的定时方式,并说明其注意事项。
1 taskDelavtaskDelay(n)使调用该函数的任务延时n个tick(内核时钟周期)。
该任务在指定的时间内主动放弃CPU,除了taskDelay(0)专用于任务调度(将CPU交给同一优先级的其他任务)外,任务延时也常用于等待某一外部事件,作为一种定时/延时机制。
在没有中断触发时,taskDelay能很方便地实现,且不影响系统整体性能。
例如写数据至EEPROM,EEPROM需要一个内部擦除时间(最大擦除时间为lOms)。
以下所提及的一个tick都假设为16.67 ms(1/60 s)。
可以简单地调用taskDelay(2)来保证数据擦写完成。
按理说taskDelay(1)就足以保证,为什么需要taskDelay(2)呢?这正是taskDelay使用的一个缺陷,使用时需要注意。
taskDelay(n)表示任务延时至第n 个系统时钟到来的时刻,如图1所示。
如果在A时刻调用taskDelay(1)仅延时5 ms,则在B 时刻taskDelay(1)就刚好是一个tick周期。
可见需要10 ms的延时就必须调用taskDelay(2)才能实现。
taskDelay有接近一1个tick的误差存在,taskDelay(n)实际上是延时(n-1)tick~n tick 的时间。
延时精度为l/n,延时1s就是taskDelay(60)的误差极限为1.6%,而taskDelay(1)的误差极限将是100%。
西工大嵌入式实验指导书-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)。
vxworks7编程指南
vxworks7编程指南VxWorks 7编程指南VxWorks 7是一款实时操作系统(RTOS),被广泛应用于嵌入式系统开发中。
本文将为读者介绍VxWorks 7的一些基本概念、特性和编程指南,帮助读者更好地理解和应用VxWorks 7。
一、VxWorks 7概述VxWorks 7是一款由美国飞利浦公司(Wind River)开发的实时操作系统,它具有高性能、可靠性和可定制性的特点。
VxWorks 7支持多种硬件平台,包括x86、ARM、PowerPC等,并提供了丰富的开发工具和库函数,方便开发人员进行嵌入式系统的开发。
二、VxWorks 7的特性1. 实时性:VxWorks 7具有非常高的实时性能,能够满足对实时性要求较高的应用场景,如航空航天、军事等领域。
2. 多任务支持:VxWorks 7支持多任务并发执行,可以同时处理多个任务,提高系统的吞吐量和效率。
3. 可定制性:VxWorks 7提供了灵活的系统配置和组件定制功能,开发人员可以根据实际需求进行裁剪和优化,减少系统资源占用。
4. 异常处理:VxWorks 7提供了丰富的异常处理机制,能够有效地处理系统中出现的异常情况,保证系统的稳定性和可靠性。
5. 网络支持:VxWorks 7提供了完善的网络支持,包括TCP/IP协议栈、网络驱动程序等,方便开发人员进行网络应用的开发。
三、VxWorks 7编程指南1. 开发环境搭建:首先,需要安装VxWorks 7的开发工具和相应的编译器。
然后,创建一个新的项目,配置项目的相关参数,如目标硬件平台、编译选项等。
2. 任务创建和管理:使用VxWorks 7提供的API函数,可以创建和管理多个任务。
任务的创建需要指定任务的入口函数和优先级等参数,任务的管理包括任务的启动、挂起、恢复等操作。
3. 任务间通信:VxWorks 7提供了多种任务间通信机制,如消息队列、信号量、邮箱等。
开发人员可以根据实际需求选择合适的通信机制,实现任务间的数据交换和同步。
