470 likes | 790 Views
VxWorks 及其应用开发. 陈香兰 xlanchen@ustc.edu.cn http://staff.ustc.edu.cn/~xlanchen 2006 年 7 月. 课程内容. VxWorks 和 Tornado 简介 任务和任务间通信 信号、中断处理与定时机制 调试环境与实例分析 网络编程 VxWorks 操作系统配置. 建立调试环境和实例分析. xlanchen@2006.7.26. 1 、建立调试环境. Tornado 采用主机 / 目标机开发模式 我们以 pcPentium 目标机为例介绍调试环境的建立
E N D
VxWorks及其应用开发 陈香兰 xlanchen@ustc.edu.cn http://staff.ustc.edu.cn/~xlanchen 2006年7月
课程内容 • VxWorks和Tornado简介 • 任务和任务间通信 • 信号、中断处理与定时机制 • 调试环境与实例分析 • 网络编程 • VxWorks操作系统配置
建立调试环境和实例分析 xlanchen@2006.7.26
1、建立调试环境 • Tornado采用主机/目标机开发模式 • 我们以pcPentium目标机为例介绍调试环境的建立 • 目标机:通常使用被开发板但在开发阶段,如果有合适的开发板模拟器/仿真机(例如VmWare),建议使用
1.1 配置文件config.h • 在x86系列的目标机上运行的vxWorks系统包括两部分: • 引导文件bootrom.sys和操作系统映像文件VxWorks
引导文件bootrom.sys • bootrom.sys的主要作用类似于BIOS,一般存放在一张软盘或目标机硬盘或目标机FLASH盘上,由Vxld或其他程序加载到内存 • 初始化目标机上的硬件 • 建立VxWorks运行的环境 • 从引导设备上加载VxWorks操作系统映像,并将CPU的控制权移交给操作系统
操作系统映像文件VxWorks • VxWorks是应用程序和目标代理程序运行的软件平台,一般存放在bootrom.sys所在的软盘或目标机硬盘或目标机FLASH盘,或主机硬盘上 • 由bootrom.sys的引导程序加载到目标机内存
上述两个文件可以利用Tornado提供的工具,按照BSP配置文件config.h中的有关配置自动生成上述两个文件可以利用Tornado提供的工具,按照BSP配置文件config.h中的有关配置自动生成 • 例如pcPentium的配置文件是..\target\config\pcPentium\config.h
config.h • config.h定义: • 引导行 • 目标机操作系统包含的主要成分,例如软驱、IDE硬盘、SCSI设备、网络等设备驱动 • 文件系统(DOSFS、TFFS、CDROMFS等) • 调试方式 • 内存地址 • 以及有关参数
引导行 • 引导行定义了引导设备、引导路径、操作系统文件名、主机/目标机IP地址、子网掩码、FTP用户名和口令等参数 • 对于x86平台目标机,引导设备可以是软盘、硬盘、FLASH盘和网卡 • 一般通过以太网或RS232标准串口连接进行调试
在x86平台上,首先确定调试手段 • 网络 or 串口 • 然后根据下列步骤建立调试环境 • 修改配置文件 • 生成bootrom引导文件和VxWorks映像文件 • 制作启动软盘 • 配置主机环境 • 用启动软盘启动目标机 • 从主机连接到目标机
1.2 网络连接 步骤0:确定调试手段 • 使用以太网连接调试方式,通过网络使用FTP协议从主机下载VxWorks映像 • 首先要确定目标机使用的网卡类型号 • VxWorks支持的网卡参见config.h • 使用某个网卡,必须包含相应的INCLUDE_XXX
步骤1:修改config.h 修改引导行 • 引导文件根据引导行来确定引导设备、引导路径、操作系统文件,并且引导行存放在固定的位置 • 操作系统访问引导行来确定网络的配置 • 系统reboot时也将访问引导行
VmWare的引导行 • “"lnPci(0,0)your_host_name:d:\\vxWorks h=90.0.0.3 e=90.0.0.50 u=target pw=vxworks tn=target"” • 解释如下: • 启动设备名——lnPci(0,0) • 主机标志名,可以任意填写,不影响启动过程——your_host_name • 主机端的操作系统路径和文件名——d:\\vxWorks • 主机IP地址——h=90.0.0.3 • 目标机IP地址——e=90.0.0.50 • 用户名,主机的FTP服务器必须有相应的同名用户——u=target • 口令,必须与主机的FTP服务器相应的同名用户的口令相同——pw=vxworks • 目标名,可以任意设置,不影响启动过程——tn=target
修改config.h • 为了使用键盘和控制台 • 修改 • 为:
修改config.h 修改网络驱动选项 • 选择VmWare支持的网卡
步骤2.1:生成bootrom • 选择菜单Build->Build Boot Rom
弹出的窗口 • BSP选择pcPentium,Image选择bootrom和gnu • 点击OK,会弹出Build Output窗口显示编译过程 • 等待编译成功
步骤2.2:生成VxWorks • VxWroks有很多组件 黑色为VxWorks当前 所包含的组件
打开development tool components 为了能够使用shell, 选择target shell components
选择菜单buildrebuild all • 等待编译结束 • 编译出来的目标文件在工程目录下的default目录下,是vxWorks
步骤3:制作启动软盘 • 如果没有软驱,可以使用虚拟软驱,例如RamDiskNT • 在windows的cmd命令窗口下,进入..\target\config\pcPentium目录: • 命令:format a: • 用于格式化软盘,第一次使用时需要 • mkboot a: bootrom (如果提示没有mkboot命令,则需要到..\host\x86-win32\bin下,运行torVars.bat
步骤4:配置主机环境 • 设置FTP服务器 • 可以使用常用的FTP服务器 • 例如Serv_U • 也可以使用Tornado自带的FTP Server • 使用FTP服务器的关键在于提供正确的用户名和密码
若使用Tornado自带的FTP Server • 启动Tornado组件FTP Server • 在WFTPD窗口中选择菜单Security中的User/right… • 在其弹出窗口中选择New User
根据提示信息输入: • 登录用户名和密码(要与DEFAULT_BOOT_LINE中指定的一致) • Home Directory • 如果这个路径不是默认的vxWorks镜像生成目录的路径,则需要拷贝生成的vxWorks镜像到该路径下 • 比如从上面的default目录下拷贝到D盘
步骤5:从启动软盘启动目标机 • 将目标机配置为从软盘启动 • 开机
步骤7:从主机连接到目标机 • 可以使用Target Server从主机连接到目标机 • 在菜单ToolsTarget ServerConfigure… • 在弹出窗口中 • 首先给目标服务器命名 • 在Target Servers Property中,选择Back End,并在Available Back中选择wdbrpc,在Target Ip/Address中输入目标机IP
在Target Servers Property中,选择Core File and Symbols,选择File为BSP目标文件所在目录的VxWorks,并选取为All Symbols • … • Launch • 点击图形按钮中下拉框,选择目标机,即可
1.3 直接从软盘启动 • 缺省启动行: "fd=0,0(0,0)host:/fd0/vxWorks h=90.0.0.3 e=90.0.0.50 u=target“ • 并且将vxWorks映像拷贝到软盘中(a:) • 不必配置主机环境,直接使用启动盘启动目标机 • 通过软盘无法调试VxWorks,可以通过配置网络或串口实现主机与目标机相连 • 由于软盘有大小限制,VxWorks的功能不能太多,否则推荐网络方式
演示从网络方式启动 • 一些可能失败的原因: • 正确的网卡驱动 • 防火墙设置 • IP设置 • 操作系统映像路径 • 用户名和密码
VxWorks操作系统配置 xlanchen@2006.7.26
Bootable Application • 当创建可启动的应用时,在Workspace窗口的Files栏中,可以看到:
linkSyms.c • 动态生成的配置文件,用来获得正确的symbols references • prjConfig.c • 动态生成的配置文件 • 包含VxWorks中当前包含的各个组件的初始化代码 • romInit.s • VxWorks的boot ROM的入口代码
romStart.c • 将VxWorks映像装入RAM • sysALib.s • 包含系统开始运行的代码 • sysLib.c • 包含体系结构相关的一些例程 • userAppInit.c • 应用程序的初始化入口
配置VxWorks的组件 • 打开Workspace中的VxWorks,可以看到当前VxWorks的配置情况 • 黑色:当前已经选用的组件 • 在配置过程中,如果知道组件的部分信息,可以根据该信息查找所属的组件 • 例如
获得组件的属性 • 双击感兴趣的组件 • 例如:
增加/删除一个组件 • 在感兴趣的组件上。使用右键 • 对于当前没有包含的组件,使用Include …增加 • 对于当前已经包含的组建,使用Exclude…删除 • 如果组件中还包括其他组件(显示为+,-),将会显示一个选择框,根据需要打勾
有的组件目录中包含若干个不相容的选项,只能选择其中一个,例如有的组件目录中包含若干个不相容的选项,只能选择其中一个,例如
修改组件的参数 • 对于感兴趣的组件,有些参数可以修改,例如
估计已有组件的大小 • 在项目上:右键Properties…size