700 likes | 965 Views
VxWorks 及其应用开发. 陈香兰 xlanchen@ustc.edu.cn http://staff.ustc.edu.cn/~xlanchen 2006 年 7 月. 课程内容. VxWorks 和 Tornado 简介 任务和任务间通信 信号、中断处理与定时机制 调试环境与实例分析 网络编程 VxWorks 操作系统配置. VxWorks 及其集成开发环境 Tornado 简介. xlanchen@2006.7.5. 主要内容. VxWorks 操作系统及其特点 VxWorks 操作系统的组成 VxWorks 开发环境的基本结构
E N D
VxWorks及其应用开发 陈香兰 xlanchen@ustc.edu.cn http://staff.ustc.edu.cn/~xlanchen 2006年7月
课程内容 • VxWorks和Tornado简介 • 任务和任务间通信 • 信号、中断处理与定时机制 • 调试环境与实例分析 • 网络编程 • VxWorks操作系统配置
VxWorks及其集成开发环境Tornado简介 xlanchen@2006.7.5
主要内容 • VxWorks操作系统及其特点 • VxWorks操作系统的组成 • VxWorks开发环境的基本结构 • Tornado集成开发环境的主要组成 • Tornado集成开发环境的工具集
VxWorks操作系统 • VxWorks是专门为实时嵌入式系统设计开发的操作系统软件,提供 • 高效的实时任务调度 • 中断管理 • 实时的系统资源 • 实时的任务间通信
VxWorks的特点 • 其微内核Wind是一个具有较高性能的、标准的嵌入式实时操作系统内核 • 具有较好的可剪裁性 • 支持应用程序的动态链接和动态下载 • 具有较好的兼容性
VxWorks操作系统的组成 • VxWorks操作系统包括了进程管理、存储管理、设备管理、文件系统管理、网络协议及系统应用等几个部分 • VxWorks只占用很小的存储空间,并可高度剪裁,保证了系统能以较高的效率运行
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支持的文件系统包括: • dosFs:与MS-DOS兼容的文件系统 • rt11Fs:一种与RT11操作系统兼容的文件系统 • rawFs:原生文件系统 • 将整个盘作为一个文件,允许根据偏移读写磁盘的一部分 • tapeFs、TrueFFS、CdRomFs 文件系统: VxWorks中,普通数据文件、外部设备都统一作为文件处理
远程文件访问,包括基于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协议
其他VxWorks组件 • 以及: 虚拟内存(VxVMI)与共享内存(VxMP) • VxVMI为带有MMU的目标板提供了虚拟内存机制 • VxMP提供了共享信号量、消息队列和在不同处理器之间的共享内存区域 目标代理(Target Agent) 基于目标机的工具
目标代理(Target Agent) • VxWorks的开发使用基于主机/目标机结构的交叉开发环境 • 目标机:运行VxWorks和应用程序的板子,通常为嵌入式板子 • 主机:运行Tornado集成开发环境,为目标机生成VxWorks和应用程序 • 主机与目标机之间通过以太网或串口相连,其通信由Target server/Agent方式进行 开发环境 (Target Server) 目标系统(Target Agent) 主机 目标机 以太网/串口
目标代理,Target Agent遵循WBD(Wind Debug)协议,允许目标机与主机上的Tornado开发工具相连。 • 在目标代理的默认设置中,目标代理是以VxWorks的一个任务tWdbTask的形式运行的
默认方式下,target server与 target agent通过网络通信, 但用户也可以改变通信方式 • TargetServer向目标代理发送调试请求 • 调试请求可以决定目标代理对系统中其他任务的控制和处理
Tornado集成开发环境简介 • Tornado集成开发环境 • 是实现嵌入式实时应用程序的完整的软件开发平台 • 是交叉开发环境运行在主机上的部分 • 是开发和调试VxWorks系统不可缺少的系统组成部分 • Tornado是一个窗口环境,集成了编辑器、编译器、调试器于一体
Tornado开发系统的组成 主机工具与VxWorks系统之间 的通信由Target server/Agent共 同完成 Tornado开发系统包含三个高度集成的部分: VxWorks:运行在目标机上的高性能、 可剪裁的实时操作系统 Tornado开发环境:运行在宿主机上, 包括一组交叉开发工具和实用程序, 可对目标机上的应用进行跟踪和调试 连接宿主机和目标机的多种通信方式 以太网、串口线等等
Tornado IDE的主要组成工具 • 命令执行工具——WindSh • C语言命令shell • 这是Tornado所独有的功能强大的命令行 • 解释器 • 可以直接解释C语言表达式、调用目 • 标机上的C函数、访问系统符号表中 • 登记的变量 • 还可以直接执行TCL语言 • 可以实现所有的调试功能,包括 • 下载/删除软件模块 • 创建并发起一个任务、删除任务 • 创建/删除端点 • 运行/单步/继续执行程序 • 查看/修改内存、寄存器、变量 • 查看任务列表、内存使用情况、 • CPU利用率 • 查看特定的对象(任务、信号量、 • 消息队列、内存分区、类) • 复位目标机等 VxSim对软件开发者的意义: 在嵌入式系统开发中软件的开发通常受到硬件开发 进度的制约 由于软件开发必须滞后于硬件开发,影响了产品 研发进度 VxSim在一定程度上解决了这个问题:使得用户可以 在工程开发初期,在硬件环境尚不具备的情况下,可 以利用Tornado进行与硬件无关模块的设计 集成的源代码编辑器 • 调试器,包括命令行和图形接口 • 工具CrossWind/WDB就是图形化的增强型交叉调试器 • 远程源代码集成调试器 • 支持任务级和系统级调试 • 支持混合源代码和汇编代码显示 • 支持多目标机同时调试 • 工程配置工具——Project Facility/Configuration • 可以对VxWorks操作系统及其组件进行自动地配置 • Makefile自动生成维护 • 软件工程维护 • 自动的依赖性分析 • 代码容量计算 • 自动剪裁 • 大大缩短了开发周期 • C/C++编译环境 • VxWorks提供交叉编译器、iostreams类库和 • 一系列的工具来支持C语言和C++语言 • Diab C/C++ Compiler:唯一获得Motorola • 白金大奖的嵌入式编译器 • GNU C/C++ Compiler:应用最广泛的编译器 • 提供对C++全面的支持 目标机系统状态浏览器——browser 这是Tornado shell的一个图形化组件 提供目标系统的全面状态总结,也允许开发者监视独立 的目标系统对象:任务、信号灯、消息队列、内存分区 、定时器、模块、堆栈等 开发者可以选择周期性或条件性的更新状态值 WindView, 集成的软件逻辑分析仪(诊断分析工具) 可以向开发者提供目标机硬件上实际运行的应用程序的详细情况 可以与VxSim一起使用 集成的VxWorks目标仿真器——VxSim 提供与真实目标机一致的调试和仿真运行环境 允许开发者可以在没有BSP、操作系统配置以及目标机 硬件的情况下进行开发
其他核心工具 • 多语言浏览器——WindNavigator • 提供源代码浏览 • 图形化显示函数调用关系 • 快速代码定位
图形化核心配置工具——WindConfig • 使用图形向导方式智能化的自动配置VxWorks内核及其组件参数 • 增量加载器 • 可以动态的加载新增模块并在目标机与内核实现动态链接运行,不必重新下载内核及未改动的模块
Tornado IDE的工作方式 • Tornado IDE不受目标机资源的约束 • 上述工具运行在主机上,依赖存放在主机上的目标机系统的符号表 • 它们与目标机通过target server/agent交互
使用Tornado IDE可以大大缩短嵌入式开发周期 • Tornado的核心功能之一:支持动态链接与加载 • 开发者可以分批将目标模块加载到目标系统上 • 不必在主机上将应用程序与内核链接起来,然后整个的下载到目标系统上去 • 可以大大缩短编辑-测试-调试周期
Tornado的简单教程 xlanchen@2006.7.5
主要内容 • 创建project • Build project • 运行、观察、调试project
启动Tornado 创建工程对话框 第一次使用Tornado,会弹出这个窗口 创建一个新的project 以后根据这里的选择,弹出或不弹出这个对话框 如果需要使用这个对话框,可以通过File中的New project菜单获得
Bootable VxWorks Image • Image将运行在目标机上,包括 • RTOS内核、BSP、应用程序和组件4个部分 Application BSP components Wind内核 File System WDB Agent Shell
作为演示,我们创建一个downloable的应用程序模块,作为演示,我们创建一个downloable的应用程序模块, 并让其运行在目标机仿真器上
选择工具链(toolchain) 工具链是一套用来建造针对特定目标机 应用的交叉开发工具 Tornado提供的工具链是基于GNU的预处 理、编译、汇编和链接器 针对目标仿真器,默认的工具链名字形式 是SIMhostOsgnu 对NT主机是SIMNTgnu
添加源文件 • 第一步:添加源文件到开发目录中 • 第二步:将这个源文件加入到example1中
第一步:添加源文件到开发目录中 从Tornado的安装目录下: (安装目录)\target\src\demo\start拷贝源文件到开发目录中D:\VxWorks_examples
此时,example1的信息窗口 加入的源文件 源文件所依赖的外部文件 即将由源文件所产生的目标文件 cobble.c产生的目标文件 Tornado自动为example1生成的目标文件,包含所有目标文件
Build project • 首先预览一下默认的build设置 编译器、汇编器、链接器选项 双击 宏 Makefile默认规则
假如在源文件中有错误 • 例如,在cobble.c中不小心使用了“//” • 在build的时候将被检查出错
出错位置 出错信息
删除出错的那一行内容 • 当编译成功后,就可以将应用下载到目标仿真器上
目标机仿真器输出窗口 选择
选择 当一个异常发生时,调试器 可以自动地与任务关联
运行debugger • 下面的状态栏中变成 • 工具栏中的调试图形接口被激活
运行shell • Tornado Shell也就是WindSh是一个C语言命令解释器 • 它允许在shell命令行中调用下载到目标机上的任何程序 • 它自身还提供一套用于任务管理、访问系统信息、调试等命令