69
niversity of Science and Technology of Chi VxWorks 及及及及及及 及及及 [email protected] http:// staff.ustc.edu.cn/~xlanchen 2006 及 7 及

VxWorks 及其应用开发

  • Upload
    tadita

  • View
    160

  • Download
    0

Embed Size (px)

DESCRIPTION

VxWorks 及其应用开发. 陈香兰 [email protected] http://staff.ustc.edu.cn/~xlanchen 2006 年 7 月. 课程内容. VxWorks 和 Tornado 简介 任务和任务间通信 信号、中断处理与定时机制 调试环境与实例分析 网络编程 VxWorks 操作系统配置. VxWorks 及其集成开发环境 Tornado 简介. [email protected]. 主要内容. VxWorks 操作系统及其特点 VxWorks 操作系统的组成 VxWorks 开发环境的基本结构 - PowerPoint PPT Presentation

Citation preview

University of Science and Technology of China

VxWorks 及其应用开发 陈香兰

[email protected]://staff.ustc.edu.cn/~xlanchen

2006 年 7 月

2University of Science and Technology of China

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

University of Science and Technology of China

VxWorks 及其集成开发环境Tornado 简介

[email protected]

4University of Science and Technology of China

主要内容• VxWorks 操作系统及其特点• VxWorks 操作系统的组成• VxWorks 开发环境的基本结构• Tornado 集成开发环境的主要组成• Tornado 集成开发环境的工具集

5University of Science and Technology of China

VxWorks 操作系统• VxWorks 是专门为实时嵌入式系统设计开发的操作系统软件,提供

• 高效的实时任务调度• 中断管理• 实时的系统资源• 实时的任务间通信

6University of Science and Technology of China

VxWorks 的特点• 其微内核 Wind 是一个具有较高性能的、标准的嵌入式实时操作系统内核• 具有较好的可剪裁性• 支持应用程序的动态链接和动态下载• 具有较好的兼容性

7University of Science and Technology of China

VxWorks 操作系统的组成• VxWorks 操作系统包括了进程管理、存储管理、设备管理、文件系统管理、网络协议及系统应用等几个部分• VxWorks 只占用很小的存储空间,并可高度剪裁,保证了系统能以较高的效率运行

8University of Science and Technology of China

VxWorks 体系结构框图

高性能的实时操作系统核心: Wind包括:采用基于优先级的、可抢占的多任务调度任务间同步机制进程间通信机制中断处理看门狗内存管理机制

板级支持包: Board Support Package板级支持包对各种板子的硬件功能提供了统一的软件接口,包括硬件初始化中断的产生和处理硬件时钟和计时器管理局域和总线内存的地址映射内存分配等等每个 BSP 包括一个 ROM 启动或其他启动机制

TCP/IP 协议栈和网络驱动I/O 系统VxWorks 提供了一个快速灵活的、与 ANSI C 兼容的I/O 系统,包括

UNIX 标准的缓冲 I/OPOSIX 标准的异步 I/O

I/O 系统VxWorks 包括以下驱动程序:网络驱动:用于网络通信,支持多种网卡管道驱动:用于任务间通信

RAM 盘驱动:用于常驻内存的文件SCSI 驱动,用于 SCSI 设备键盘驱动,用于 x86 键盘,仅存在于 x86BSP显示驱动:用于 x86VGA 文本显示,仅存在于 x86BSP磁盘驱动,用于 IDE/ATA 设备,仅存在于 x86BSP并口驱动,用于 PC 风格的目标机

文件系统:VxWorks 提供适用于实时系统应用的快速文件系统这些设备都使用一个标准接口,从而使得文件系统能够灵活的在设备驱动程序上移植

文件系统:VxWorks 支持的文件系统包括:

dosFs :与 MS-DOS 兼容的文件系统rt11Fs :一种与 RT11 操作系统兼容的文件系统rawFs :原生文件系统将整个盘作为一个文件,允许根据偏移读写磁盘的一部分tapeFs 、 TrueFFS 、 CdRomFs

文件系统:VxWorks中,普通数据文件、外部设备都统一作为文件处理

实用库VxWorks 提供了一个实用例程扩展集,包括中断处理、看门狗计时器、消息登录、内存分配、字符扫描、线缓冲和环缓冲管理、链表管理和 ANSI C 标准

9University of Science and Technology of China

VxWorks 的网络设施VxWorks 的网络设施包括:

与 BSD 套接字兼容的编程接口远程过程调用 RPC ( Remote Procedure Call

可选的简单网络管理协议 SNMP( Simple Network Management Protocol )

远程文件访问,包括基于 client/Server 的NFS 机制以及使用 RSH 、 FTP 或 TFTP 的非 NFS 机制

远程的登录和 telnet

TCP/IP 协议栈

无论是松耦合的串行线路、标准的以太网连接还是紧耦合的利用共享内存的背板总线,所有的 VxWorks网络机制都遵循标准的 Internet 协议

以及 bootp 和 ARP代理

10University of Science and Technology of China

其他 VxWorks 组件• 以及:虚拟内存( VxVMI )与共享内存( VxMP )

• VxVMI 为带有 MMU 的目标板提供了虚拟内存机制• VxMP 提供了共享信号量、消息队列和在不同处理器之间的共享内存区域目标代理( Target Agent )

基于目标机的工具

11University of Science and Technology of China

目标代理( Target Agent )• VxWorks 的开发使用基于主机 / 目标机结构的交叉开发环境

• 目标机:运行 VxWorks 和应用程序的板子,通常为嵌入式板子• 主机:运行 Tornado 集成开发环境,为目标机生成 VxWorks 和应用程序• 主机与目标机之间通过以太网或串口相连,其通信由 Target server/Agent方式进行

开发环境( Target Server )主机 目标系统( Target Agent ) 目标机以太网 / 串口

12University of Science and Technology of China

• 目标代理, Target Agent遵循WBD ( Wind Debug )协议,允许目标机与主机上的 Tornado 开发工具相连。• 在目标代理的默认设置中,目标代理是以

VxWorks 的一个任务 tWdbTask 的形式运行的

13University of Science and Technology of China

• TargetServer向目标代理发送调试请求• 调试请求可以决定目标代理对系统中其他任务的控制和处理

默认方式下, target server 与target agent 通过网络通信,但用户也可以改变通信方式

14University of Science and Technology of China

Tornado 集成开发环境简介• Tornado 集成开发环境

• 是实现嵌入式实时应用程序的完整的软件开发平台• 是交叉开发环境运行在主机上的部分• 是开发和调试 VxWorks 系统不可缺少的系统组成部分

• Tornado 是一个窗口环境,集成了编辑器、编译器、调试器于一体

15University of Science and Technology of China

Tornado 开发系统的组成主机工具与 VxWorks 系统之间的通信由 Target server/Agent共同完成Tornado 开发系统包含三个高度集成的部分:

VxWorks:运行在目标机上的高性能、可剪裁的实时操作系统

Tornado 开发环境:运行在宿主机上,包括一组交叉开发工具和实用程序,可对目标机上的应用进行跟踪和调试 连接宿主机和目标机的多种通信方式以太网、串口线等等

16University of Science and Technology of China

Tornado IDE 的主要组成工具

集成的源代码编辑器工程配置工具—— Project Facility/Configuration可以对 VxWorks 操作系统及其组件进行自动地配置

Makefile自动生成维护软件工程维护自动的依赖性分析代码容量计算自动剪裁大大缩短了开发周期

C/C++ 编译环境VxWorks 提供交叉编译器、 iostreams类库和一系列的工具来支持 C语言和 C++语言

Diab C/C++ Compiler :唯一获得 Motorola白金大奖的嵌入式编译器GNU C/C++ Compiler :应用最广泛的编译器

提供对 C++全面的支持

目标机系统状态浏览器—— browser这是 Tornado shell 的一个图形化组件提供目标系统的全面状态总结,也允许开发者监视独立的目标系统对象:任务、信号灯、消息队列、内存分区、定时器、模块、堆栈等开发者可以选择周期性或条件性的更新状态值

调试器,包括命令行和图形接口工具 CrossWind/WDB就是图形化的增强型交叉调试器远程源代码集成调试器支持任务级和系统级调试支持混合源代码和汇编代码显示支持多目标机同时调试WindView ,集成的软件逻辑分析仪(诊断分析工具)可以向开发者提供目标机硬件上实际运行的应用程序的详细情况可以与 VxSim 一起使用集成的 VxWorks 目标仿真器—— VxSim提供与真实目标机一致的调试和仿真运行环境允许开发者可以在没有 BSP 、操作系统配置以及目标机硬件的情况下进行开发

VxSim 对软件开发者的意义:在嵌入式系统开发中软件的开发通常受到硬件开发进度的制约由于软件开发必须滞后于硬件开发,影响了产品研发进度VxSim 在一定程度上解决了这个问题:使得用户可以在工程开发初期,在硬件环境尚不具备的情况下,可以利用 Tornado 进行与硬件无关模块的设计

命令执行工具——WindSh C语言命令 shell这是 Tornado所独有的功能强大的命令行解释器可以直接解释 C语言表达式、调用目标机上的C函数、访问系统符号表中登记的变量还可以直接执行TCL语言可以实现所有的调试功能,包括下载 /删除软件模块创建并发起一个任务、删除任务创建 /删除端点运行 / 单步 /继续执行程序查看 /修改内存、寄存器、变量查看任务列表、内存使用情况、

CPU利用率查看特定的对象(任务、信号量、消息队列、内存分区、类)复位目标机等

17University of Science and Technology of China

其他核心工具• 多语言浏览器——WindNavigator

• 提供源代码浏览• 图形化显示函数调用关系• 快速代码定位

18University of Science and Technology of China

• 图形化核心配置工具——WindConfig• 使用图形向导方式智能化的自动配置 VxWor

ks 内核及其组件参数• 增量加载器

• 可以动态的加载新增模块并在目标机与内核实现动态链接运行,不必重新下载内核及未改动的模块

19University of Science and Technology of China

Tornado IDE 的工作方式• Tornado IDE不受目标机资源的约束• 上述工具运行在主机上,依赖存放在主机上的目标机系统的符号表• 它们与目标机通过 target server/agent交互

20University of Science and Technology of China

使用 Tornado IDE 可以大大缩短嵌入式开发周期• Tornado 的核心功能之一:支持动态链接与加载

• 开发者可以分批将目标模块加载到目标系统上• 不必在主机上将应用程序与内核链接起来,然后整个的下载到目标系统上去• 可以大大缩短编辑 -测试 - 调试周期

University of Science and Technology of China

Tornado 的简单教程[email protected]

22University of Science and Technology of China

主要内容• 创建 project• Build project• 运行、观察、调试 project

23University of Science and Technology of China

Tornado 的安装

24University of Science and Technology of China

启动 Tornado创建工程对话框

创建一个新的 project

第一次使用 Tornado ,会弹出这个窗口

以后根据这里的选择,弹出或不弹出这个对话框如果需要使用这个对话框,可以通过 File 中的 New project菜单获得

25University of Science and Technology of China

Application

BSP

Bootable VxWorks Image• Image 将运行在目标机上,包括

• RTOS 内核、 BSP 、应用程序和组件 4 个部分

Wind 内核 WDB Agent Shell File System

components

26University of Science and Technology of China

作为演示,我们创建一个 downloable 的应用程序模块,并让其运行在目标机仿真器上

27University of Science and Technology of China

建立一个可下载应用:确定 project名与路径

28University of Science and Technology of China

选择工具链( toolchain )

工具链是一套用来建造针对特定目标机应用的交叉开发工具Tornado 提供的工具链是基于 GNU 的预处理、编译、汇编和链接器

针对目标仿真器,默认的工具链名字形式是 SIMhostOsgnu

对 NT 主机是 SIMNTgnu

29University of Science and Technology of China

确认所做的选择

30University of Science and Technology of China

Workspace0 和 example1 的信息窗口

31University of Science and Technology of China

此时在上面选定的目录中

32University of Science and Technology of China

添加源文件• 第一步:添加源文件到开发目录中• 第二步:将这个源文件加入到 example1中

33University of Science and Technology of China

第一步:添加源文件到开发目录中

从 Tornado 的安装目录下:(安装目录) \target\src\demo\start拷贝源文件到开发目录中D:\VxWorks_examples

34University of Science and Technology of China

第二步:为 example1添加源文件

右键

35University of Science and Technology of China

此时, example1 的信息窗口

加入的源文件源文件所依赖的外部文件即将由源文件所产生的目标文件

cobble.c 产生的目标文件Tornado自动为 example1 生成的目标文件,包含所有目标文件

36University of Science and Technology of China

Build project• 首先预览一下默认的 build 设置

双击Makefile默认规则宏

编译器、汇编器、链接器选项

37University of Science and Technology of China

• 根据上述默认规则, Build example1

右键

38University of Science and Technology of China

39University of Science and Technology of China

假如在源文件中有错误• 例如,在 cobble.c 中不小心使用了“ //”

• 在 build 的时候将被检查出错

40University of Science and Technology of China

双击

41University of Science and Technology of China出错信息

出错位置

42University of Science and Technology of China

• 删除出错的那一行内容• 当编译成功后,就可以将应用下载到目标仿真器上

43University of Science and Technology of China

启动目标机仿真器

44University of Science and Technology of China

45University of Science and Technology of China

目标机仿真器输出窗口

选择

46University of Science and Technology of China

运行 browser 、 shell 、 debugger 、 simulator 等等

47University of Science and Technology of China

在运行应用之前,应当先配置 debugger

48University of Science and Technology of China

选择 当一个异常发生时,调试器可以自动地与任务关联

49University of Science and Technology of China

• 运行 debugger

• 下面的状态栏中变成• 工具栏中的调试图形接口被激活

50University of Science and Technology of China

• 运行 shell• Tornado Shell也就是 WindSh 是一个 C语言命令解释器

• 它允许在 shell命令行中调用下载到目标机上的任何程序• 它自身还提供一套用于任务管理、访问系统信息、调试等命令

51University of Science and Technology of China

命令行输入 对于我们的例子,键入progStart来启动 cobble.c 中的应用

52University of Science and Technology of China

cobble.c 简单介绍• 这是一个简单的多任务应用

• 模拟一个数据采集系统• 数据来自外部源

• 例如,当数据到达时,一个设备将生成中断• 第一个任务模拟一个中断服务程序生成新数据• 第二个任务收集数据• 第三个任务处理数据,完成计算并求出一个结果• 第四个任务监视结果值,当结果超出安全范围时,向屏幕打印报警信息

53University of Science and Technology of China

• 读部分源程序:• progStart• progStop• ……

54University of Science and Technology of China

使用 browser查看内存使用情况• Tornado browser 是一个系统对象浏览器,是 shell 的一个图形化的助手• 可以提供显示工具,来监督目标系统状态,包括

• 活动任务的概要• 内存分配• 等等

• 启动 browser

55University of Science and Technology of China

下拉菜单

我们选择Memory Usage ,并周期性刷新

周期性刷新

56University of Science and Technology of China

等待一段时间后……内存在飞快地消耗中???

57University of Science and Technology of China

下拉菜单启动 WindViewWindView 是实时应用的逻辑分析仪,是一个动态可视工具可以提供上下文切换信息以及导致发生这些交换的事件还有与信号量、消息队列和看门狗计时器等对象有关的信息

WindView 信息收集配置对话框WindView控制窗口

58University of Science and Technology of China

点击后,开始数据收集

WindView控制窗口

点击后,停止数据收集等一会儿……

下一步,要将收集的信息显示出来

59University of Science and Technology of China

• 在目标仿真器向主机上载 WindView数据之前,在 shell命令行中输入 progStop ,停止程序运行

60University of Science and Technology of China

• 上载 WindView 的数据

61University of Science and Technology of China

将出现的窗口最大化

点击鼠标右键

62University of Science and Technology of China

• 上图中出现了一些 WindView 的图标,其中:• 旗形图标指示信号量的释放与获取• 水平线指示任务状态

• 执行、就绪、挂起等• 更多的信息可以阅读帮助信息

• 可以看到上图中的 tCrunch 从来没有运行过???

63University of Science and Technology of China

修改任务优先级• 检查 progStart

• tCrunch 的优先级为 240 ,低于 tMonitor 的优先级 230

• 查看 Monitor 的源代码• 这是一个永远运行的循环

• 总在运行的一个高优先级任务,导致低优先级的 tCrunch永远得不到运行的机会

• 修改:• 令 tCrunch 的优先级为 230• 令 tMonitor 的优先级为 240

64University of Science and Technology of China

重新 build 并运行• 发现有出错信息,在目标机仿真器上出现异常信息

65University of Science and Technology of China

• 在 shell 中出现:

66University of Science and Technology of China

• 另外 debugger自动打开编辑窗口

出错位置

67University of Science and Technology of China

• 修改错误• 重新 build 并运行• 在目标机仿真器上看到

68University of Science and Technology of China

• 使用 WindView 将会获得:

69University of Science and Technology of China

• 重新查看内存使用情况在一个常量附近浮动