Presentation is loading. Please wait.

Presentation is loading. Please wait.

陈香兰 xlanchen@ustc.edu.cn http://staff.ustc.edu.cn/~xlanchen 2006年7月 VxWorks及其应用开发 陈香兰 xlanchen@ustc.edu.cn http://staff.ustc.edu.cn/~xlanchen 2006年7月.

Similar presentations


Presentation on theme: "陈香兰 xlanchen@ustc.edu.cn http://staff.ustc.edu.cn/~xlanchen 2006年7月 VxWorks及其应用开发 陈香兰 xlanchen@ustc.edu.cn http://staff.ustc.edu.cn/~xlanchen 2006年7月."— Presentation transcript:

1 陈香兰 xlanchen@ustc.edu.cn http://staff.ustc.edu.cn/~xlanchen 2006年7月
VxWorks及其应用开发 陈香兰 2006年7月

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

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

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

5 VxWorks操作系统 VxWorks是专门为实时嵌入式系统设计开发的操作系统软件,提供 高效的实时任务调度 中断管理 实时的系统资源
实时的任务间通信

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

7 VxWorks操作系统的组成 VxWorks操作系统包括了进程管理、存储管理、设备管理、文件系统管理、网络协议及系统应用等几个部分

8 VxWorks体系结构框图 板级支持包:Board Support Package 板级支持包对各种板子的硬件功能提供了统一的
软件接口,包括 硬件初始化 中断的产生和处理 硬件时钟和计时器管理 局域和总线内存的地址映射 内存分配等等 每个BSP包括一个ROM启动或其他启动机制 TCP/IP协议栈和 网络驱动 I/O系统 VxWorks提供了一个快速灵活的、与ANSI C兼容的 I/O系统,包括 UNIX标准的缓冲I/O POSIX标准的异步I/O I/O系统 VxWorks包括以下驱动程序: 网络驱动:用于网络通信,支持多种网卡 管道驱动:用于任务间通信 RAM盘驱动:用于常驻内存的文件 SCSI驱动,用于SCSI设备 键盘驱动,用于x86键盘,仅存在于x86BSP 显示驱动:用于x86VGA文本显示,仅存在于x86BSP 磁盘驱动,用于IDE/ATA设备,仅存在于x86BSP 并口驱动,用于PC风格的目标机 实用库 VxWorks提供了一个实用例程扩展集,包括 中断处理、 看门狗计时器、 消息登录、 内存分配、 字符扫描、 线缓冲和环缓冲管理、 链表管理 和ANSI C标准 高性能的实时操作系统核心:Wind 包括: 采用基于优先级的、可抢占的多任务调度 任务间同步机制 进程间通信机制 中断处理 看门狗 内存管理机制 文件系统: VxWorks中,普通数据文件、外部设备都统一作为文件处理 文件系统: VxWorks提供适用于实时系统应用的快速文件系统 这些设备都使用一个标准接口,从而使得文件系统 能够灵活的在设备驱动程序上移植 文件系统: VxWorks支持的文件系统包括: dosFs:与MS-DOS兼容的文件系统 rt11Fs:一种与RT11操作系统兼容的文件系统 rawFs:原生文件系统 将整个盘作为一个文件,允许根据偏移读写磁盘的一部分 tapeFs、TrueFFS、CdRomFs

9 远程过程调用RPC(Remote Procedure Call
远程文件访问,包括基于client/Server的 NFS机制以及使用RSH、FTP或TFTP的 非NFS机制 VxWorks的网络设施 VxWorks的网络设施包括: 远程的登录和telnet 远程过程调用RPC(Remote Procedure Call 以及bootp和ARP代理 与BSD套接字兼容的编程接口 可选的简单网络管理协议SNMP (Simple Network Management Protocol) TCP/IP协议栈 无论是松耦合的串行线路、标准的以太网连接还是 紧耦合的利用共享内存的背板总线,所有的VxWorks 网络机制都遵循标准的Internet协议

10 其他VxWorks组件 以及: 虚拟内存(VxVMI)与共享内存(VxMP) 目标代理(Target Agent) 基于目标机的工具
VxVMI为带有MMU的目标板提供了虚拟内存机制 VxMP提供了共享信号量、消息队列和在不同处理器之间的共享内存区域 目标代理(Target Agent) 基于目标机的工具

11 目标代理(Target Agent) VxWorks的开发使用基于主机/目标机结构的交叉开发环境
主机:运行Tornado集成开发环境,为目标机生成VxWorks和应用程序 主机与目标机之间通过以太网或串口相连,其通信由Target server/Agent方式进行 开发环境 (Target Server) 目标系统 (Target Agent) 主机 目标机 以太网/串口

12 目标代理,Target Agent 遵循WBD(Wind Debug)协议,允许目标机与主机上的Tornado开发工具相连。
在目标代理的默认设置中,目标代理是以VxWorks的一个任务tWdbTask的形式运行的

13 TargetServer向目标代理发送调试请求 调试请求可以决定目标代理对系统中其他任务的控制和处理
target agent通过网络通信, 但用户也可以改变通信方式 TargetServer向目标代理发送调试请求 调试请求可以决定目标代理对系统中其他任务的控制和处理

14 Tornado集成开发环境简介 Tornado集成开发环境 是实现嵌入式实时应用程序的完整的软件开发平台 是交叉开发环境运行在主机上的部分
是开发和调试VxWorks系统不可缺少的系统组成部分 Tornado是一个窗口环境, 集成了编辑器、编译器、调试器于一体

15 Tornado开发系统的组成 主机工具与VxWorks系统之间 的通信由Target server/Agent共 同完成
可剪裁的实时操作系统 Tornado开发环境:运行在宿主机上, 包括一组交叉开发工具和实用程序, 可对目标机上的应用进行跟踪和调试 连接宿主机和目标机的多种通信方式 以太网、串口线等等

16 Tornado IDE的主要组成工具 命令执行工具——WindSh C语言命令shell 这是Tornado所独有的功能强大的命令行 解释器
标机上的C函数、访问系统符号表中 登记的变量 还可以直接执行TCL语言 可以实现所有的调试功能,包括 下载/删除软件模块 创建并发起一个任务、删除任务 创建/删除端点 运行/单步/继续执行程序 查看/修改内存、寄存器、变量 查看任务列表、内存使用情况、 CPU利用率 查看特定的对象(任务、信号量、 消息队列、内存分区、类) 复位目标机等 VxSim对软件开发者的意义: 在嵌入式系统开发中软件的开发通常受到硬件开发 进度的制约 由于软件开发必须滞后于硬件开发,影响了产品 研发进度 VxSim在一定程度上解决了这个问题:使得用户可以 在工程开发初期,在硬件环境尚不具备的情况下,可 以利用Tornado进行与硬件无关模块的设计 集成的源代码编辑器 调试器,包括命令行和图形接口 工具CrossWind/WDB就是图形化的增强型交叉调试器 远程源代码集成调试器 支持任务级和系统级调试 支持混合源代码和汇编代码显示 支持多目标机同时调试 C/C++编译环境 VxWorks提供交叉编译器、iostreams类库和 一系列的工具来支持C语言和C++语言 Diab C/C++ Compiler:唯一获得Motorola 白金大奖的嵌入式编译器 GNU C/C++ Compiler:应用最广泛的编译器 提供对C++全面的支持 工程配置工具——Project Facility/Configuration 可以对VxWorks操作系统及其组件进行自动地配置 Makefile自动生成维护 软件工程维护 自动的依赖性分析 代码容量计算 自动剪裁 大大缩短了开发周期 目标机系统状态浏览器——browser 这是Tornado shell的一个图形化组件 提供目标系统的全面状态总结,也允许开发者监视独立 的目标系统对象:任务、信号灯、消息队列、内存分区 、定时器、模块、堆栈等 开发者可以选择周期性或条件性的更新状态值 WindView, 集成的软件逻辑分析仪(诊断分析工具) 可以向开发者提供目标机硬件上实际运行的应用程序的详细情况 可以与VxSim一起使用 集成的VxWorks目标仿真器——VxSim 提供与真实目标机一致的调试和仿真运行环境 允许开发者可以在没有BSP、操作系统配置以及目标机 硬件的情况下进行开发

17 其他核心工具 多语言浏览器——WindNavigator 提供源代码浏览 图形化显示函数调用关系 快速代码定位

18 图形化核心配置工具——WindConfig
使用图形向导方式智能化的自动配置VxWorks内核及其组件参数 增量加载器 可以动态的加载新增模块并在目标机与内核实现动态链接运行,不必重新下载内核及未改动的模块

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

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

21 Tornado的简单教程

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

23 Tornado的安装

24 启动Tornado 创建工程对话框 第一次使用Tornado,会弹出这个窗口 创建一个新的project
以后根据这里的选择,弹出或不弹出这个对话框 如果需要使用这个对话框,可以通过File中的New project菜单获得

25 Bootable VxWorks Image
RTOS内核、BSP、应用程序和组件4个部分 Application BSP components Wind内核 WDB Agent File System Shell

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

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

28 选择工具链(toolchain) 工具链是一套用来建造针对特定目标机 应用的交叉开发工具 针对目标仿真器,默认的工具链名字形式
Tornado提供的工具链是基于GNU的预处 理、编译、汇编和链接器 针对目标仿真器,默认的工具链名字形式 是SIMhostOsgnu 对NT主机是SIMNTgnu

29 确认所做的选择

30 Workspace0和example1的信息窗口

31 此时在上面选定的目录中

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

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

34 第二步:为example1添加源文件 右键

35 此时,example1的信息窗口 加入的源文件 源文件所依赖的外部文件 即将由源文件所产生的目标文件 cobble.c产生的目标文件
Tornado自动为example1生成的目标文件, 包含所有目标文件

36 Build project 首先预览一下默认的build设置 编译器、汇编器、链接器选项 双击 Makefile默认规则

37 根据上述默认规则,Build example1
右键

38

39 假如在源文件中有错误 例如,在cobble.c中不小心使用了“//” 在build的时候将被检查出错

40 双击

41 出错位置 出错信息

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

43 启动目标机仿真器

44

45 目标机仿真器输出窗口 选择

46 运行browser、shell、debugger、simulator等等

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

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

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

50 Tornado Shell也就是WindSh是一个C语言命令解释器
它自身还提供一套用于任务管理、访问系统信息、调试等命令

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

52 cobble.c简单介绍 这是一个简单的多任务应用 模拟一个数据采集系统 数据来自外部源 第一个任务模拟一个中断服务程序生成新数据
例如,当数据到达时,一个设备将生成中断 第一个任务模拟一个中断服务程序生成新数据 第二个任务收集数据 第三个任务处理数据,完成计算并求出一个结果 第四个任务监视结果值,当结果超出安全范围时,向屏幕打印报警信息

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

54 使用browser查看内存使用情况 Tornado browser是一个系统对象浏览器,是shell的一个图形化的助手
可以提供显示工具,来监督目标系统状态,包括 活动任务的概要 内存分配 等等 启动browser

55 下拉菜单 周期性刷新 我们选择Memory Usage, 并周期性刷新

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

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

58 WindView控制窗口 点击后,停止数据收集 点击后,开始数据收集 等一会儿…… 下一步,要将收集的信息显示出来

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

60 上载WindView的数据

61 将出现的窗口最大化 点击鼠标右键

62 上图中出现了一些WindView的图标,其中:
旗形图标指示信号量的释放与获取 水平线指示任务状态 执行、就绪、挂起等 更多的信息可以阅读帮助信息 可以看到上图中的tCrunch从来没有运行过???

63 修改任务优先级 检查progStart 修改: tCrunch的优先级为240,低于tMonitor的优先级230
这是一个永远运行的循环 总在运行的一个高优先级任务,导致低优先级的tCrunch永远得不到运行的机会 修改: 令tCrunch的优先级为230 令tMonitor的优先级为240

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

65 在shell中出现:

66 另外debugger自动打开编辑窗口 出错位置

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

68 使用WindView将会获得:

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


Download ppt "陈香兰 xlanchen@ustc.edu.cn http://staff.ustc.edu.cn/~xlanchen 2006年7月 VxWorks及其应用开发 陈香兰 xlanchen@ustc.edu.cn http://staff.ustc.edu.cn/~xlanchen 2006年7月."

Similar presentations


Ads by Google