VxWorks软硬件设计及实例分析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

任务间通讯


共享内存(全局变量、数组、结构体) 管道(pipe) 信号灯(semaphore) 消息队列 (message queue)
二、Tornado--集成编译环境
GDB--调试界面
WindView--多任务观察界面
程序编辑--Source Insight
参考文档



vxWorks
windows
用户程序
用户开发的 应用软件 BIOS Windows ( +自启动软 件)
开发 完毕 后
bootrom
vxWorks 烧入单板 FLASH ( + 自启动 用户程序)
文件分布

Tornado
– docs – host – target
文件分布

BSP
– –
all bspname
控 制 端
wk.baidu.com
PC 或工作站 socket API
受 控 端
socket API 信息接收任务 信息 接收 缓冲 队列 信息执行 1 信息解释任务 信息执行 m 信息执行 n 硬件轮询 任务 硬件中断 信息发送任务 信息 发送 缓冲 队列 中断服务任务 中断服务程序
文件分布

用户程序
– – –
.c .h makefile [XXXgnu]
硬件控制

板载灯

配合EPLD或者FPGA进行初期调试 Bootrom启动后期 Bootrom启动后期
串口(后期调试)



网口(TCP/IP, UDP)

PCI器件


bootrom和VxWorks中都用关于PCI通用寄存器 (256byte)配置的部分 用户程序负责用户寄存器的填写
VxWorks软硬件设计及实例分析
tof@felab 2005.3.27
主要内容



VxWorks特点 Tornado界面 硬件实例 软件流程 用户程序框架 更多技术细节
一、VxWorks的特点

支持多任务 实时性强 体积小,可裁剪 支持多种CPU 支持网络通讯、串口通讯 汇编 + 标准C的编程模式 内核和定制任务可以分开编译、动态下载,支持 用户自定义启动任务
三、硬件实例
硬件框架
人机界面
超级终端
CPU 小系统
单板软件 *.o vxWorks bootrom
串 口
ROM CPU RAM FLASH
PCI 总线 TCP/IP 通道
网 口
PCI 接口芯片 5933
FPGA
外围器件
四、软件流程
软件 开发 过程 中 bootrom 说明 由 WindRiver 公司提供 BSP 编译,需要针对硬件修改, 烧制到单板 ROM 由 WindRiver 公司提供 BSP 编译,需要针对硬件修改, 通过串口或网络下载 用户编写, 使用 Tornado 集成 环境调试,通过串口或网络 动态下载 固化到单板 ROM 软件 BIOS 说明 由主板生产方提供, 固化到主板 ROM 由微软提供, 安装到 硬盘 使用 VC 等工具编 写调试, 从硬盘执行 固化到主板 ROM 安装到硬盘
硬件轮询(watchdog)

硬件延迟
void dailyFunc(int param) { wdStart(wdDailyFunc,TIME_TO_GO,(FUNCPTR)dailyFunc,param); /*需要定时执行的内容*/ } void initDailyFunc() { wdDailyFunc = wdCreate(); wdStart(wdDailyFunc, TIME_TO_GO,(FUNCPTR)dailyFunc,param); }
中断处理

初始化部分

挂接终端(intConnect()) 关中断(intDisable()) 通知硬件中断已经被相应
中断服务程序
– –

中断服务任务
– –
处理中断 开中断(intEnable())
硬件轮询(while(1)+taskDelay())

软件延迟
void dailyFunc(int param1,int param2…) { while(1) { taskDelay(TIME_TO_GO); /*需要定时执行的内容*/ } } void initDailyFunc() { taskSpawn(…,(FUNCPTR)dailyFunc,…param1,param2…); }
五、用户程序框架
bootrom (从 Flash 读取映像文件) VxWorks (发起多个系统任务) 用户程序入口 (发起多个用户任务) 多任务 系统 时 间 轴 单任务 系统
系统任务 网络模块 绑定中断服务程 序, 发起相应任务 轮询硬件模块 (tExcTask/tLogTask /tWdbTask/tNetTask)
Tornado安装目录\docs\books.html 《嵌入式实时操作系统VxWorks及其开发环境 Tornado》,中国电力出版社 VxWorks开发人员指南丛书 ,清华出版社 http://www.windriver.com/ http://bbs.edw.com.cn/list.asp?boardid=3 ,电子产 品世界——嵌入式设计论坛 BSP training, Device driver, Tornado training Workshops BSP Developer’s Kit for VxWorks, user’s Guide
VxWorks多任务

为什么多任务

每个明显单独运行的程序称为一个任务
任务包含什么

任务名和任务ID 任务优先级(0~255) 任务状态
任务操作





taskSpawn() 发起任务 taskDelete() 删除任务 taskDeleteForce() 删除设置了安全保护的任务 taskSafe() 设置任务的安全保护 taskUnsafe() 取消任务的安全保护 taskSuspend() 挂起一个任务 taskResume() 使任务退出挂起状态 taskPrioritySet() 设定任务的优先级 taskPriorityGet() 获得任务的优先级 taskLock() 锁定任务调度 taskUnLock() 重新允许任务调度 taskIdSelf() 获得任务本身的ID taskIdVerify() 判断ID对应的任务是否仍然存在 taskDelay() 延迟 taskTcb 获得任务的控制块TCB
相关文档
最新文档