1 / 27

VxWorks 软硬件设计及实例分析

VxWorks 软硬件设计及实例分析. tof@felab 2005.3.27. 主要内容. VxWorks 特点 Tornado 界面 硬件实例 软件流程 用户程序框架 更多技术细节. 一、 VxWorks 的特点. 支持多任务 实时性强 体积小,可裁剪 支持多种 CPU 支持网络通讯、串口通讯 汇编 + 标准 C 的编程模式 内核和定制任务可以分开编译、动态下载,支持用户自定义启动任务. VxWorks 多任务. 为什么多任务 每个明显单独运行的程序称为一个任务. 任务包含什么. 任务名和任务 ID 任务优先级(0~255)

bonner
Download Presentation

VxWorks 软硬件设计及实例分析

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. VxWorks软硬件设计及实例分析 tof@felab 2005.3.27

  2. 主要内容 • VxWorks特点 • Tornado界面 • 硬件实例 • 软件流程 • 用户程序框架 • 更多技术细节

  3. 一、VxWorks的特点 • 支持多任务 • 实时性强 • 体积小,可裁剪 • 支持多种CPU • 支持网络通讯、串口通讯 • 汇编 + 标准C的编程模式 • 内核和定制任务可以分开编译、动态下载,支持用户自定义启动任务

  4. VxWorks多任务 • 为什么多任务 • 每个明显单独运行的程序称为一个任务

  5. 任务包含什么 • 任务名和任务ID • 任务优先级(0~255) • 任务状态

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

  7. 任务间通讯 • 共享内存(全局变量、数组、结构体) • 管道(pipe) • 信号灯(semaphore) • 消息队列 (message queue)

  8. 二、Tornado--集成编译环境

  9. GDB--调试界面

  10. WindView--多任务观察界面

  11. 程序编辑--Source Insight

  12. 参考文档 • 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

  13. 三、硬件实例

  14. 硬件框架

  15. 四、软件流程

  16. 文件分布 • Tornado • docs • host • target

  17. 文件分布 • BSP • all • bspname

  18. 文件分布 • 用户程序 • .c .h • makefile • [XXXgnu]

  19. 硬件控制 • 板载灯 • 配合EPLD或者FPGA进行初期调试 • 串口(后期调试) • Bootrom启动后期 • 网口(TCP/IP, UDP) • Bootrom启动后期 • PCI器件 • bootrom和VxWorks中都用关于PCI通用寄存器(256byte)配置的部分 • 用户程序负责用户寄存器的填写

  20. 五、用户程序框架

  21. 中断处理 • 初始化部分 • 挂接终端(intConnect()) • 中断服务程序 • 关中断(intDisable()) • 通知硬件中断已经被相应 • 中断服务任务 • 处理中断 • 开中断(intEnable())

  22. 硬件轮询(while(1)+taskDelay()) • 软件延迟 void dailyFunc(int param1,int param2…) { while(1) { taskDelay(TIME_TO_GO); /*需要定时执行的内容*/ } } void initDailyFunc() { taskSpawn(…,(FUNCPTR)dailyFunc,…param1,param2…); }

  23. 硬件轮询(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); }

  24. 基于缓冲队列的双工通讯模式

  25. 网络运行(一) • 通讯协议

  26. 网络运行(二) • 网络监控 • socket函数返回错误 • ping()

  27. 六、更多技术细节… • 网络通讯的缓冲队列实现 • 多任务控制 • 善用宏定义 • 自启动VxWorks制作 • 嵌入式软件的控制端调用 • VxWorks编程规范

More Related