- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VxWorks软硬件设计及实例分析 tof@felab 2005.3.27 主要内容 VxWorks特点 Tornado界面 硬件实例 软件流程 用户程序框架 更多技术细节 一、VxWorks的特点 支持多任务 实时性强 体积小,可裁剪 支持多种CPU 支持网络通讯、串口通讯 汇编 + 标准C的编程模式 内核和定制任务可以分开编译、动态下载,支持用户自定义启动任务 VxWorks多任务 为什么多任务 每个明显单独运行的程序称为一个任务 任务包含什么 任务名和任务ID 任务优先级(0~255) 任务状态 任务操作 taskSpawn() 发起任务 taskDelete() 删除任务 taskDeleteForce() 删除设置了安全保护的任务 taskSafe() 设置任务的安全保护 taskUnsafe() 取消任务的安全保护 taskSuspend() 挂起一个任务 taskResume() 使任务退出挂起状态 taskPrioritySet() 设定任务的优先级 taskPriorityGet() 获得任务的优先级 taskLock() 锁定任务调度 taskUnLock() 重新允许任务调度 taskIdSelf() 获得任务本身的ID taskIdVerify() 判断ID对应的任务是否仍然存在 taskDelay() 延迟 taskTcb 获得任务的控制块TCB 任务间通讯 共享内存(全局变量、数组、结构体) 管道(pipe) 信号灯(semaphore) 消息队列 (message queue) 二、Tornado--集成编译环境 GDB--调试界面 WindView--多任务观察界面 程序编辑--Source Insight 参考文档 Tornado安装目录\docs\books.html 《嵌入式实时操作系统VxWorks及其开发环境Tornado》,中国电力出版社 VxWorks开发人员指南丛书 ,清华出版社 / /list.asp?boardid=3 ,电子产品世界——嵌入式设计论坛 BSP training, Device driver, Tornado training Workshops BSP Developer’s Kit for VxWorks, user’s Guide 三、硬件实例 硬件框架 四、软件流程 文件分布 Tornado docs host target 文件分布 BSP all bspname 文件分布 用户程序 .c .h makefile [XXXgnu] 硬件控制 板载灯 配合EPLD或者FPGA进行初期调试 串口(后期调试) Bootrom启动后期 网口(TCP/IP, UDP) Bootrom启动后期 PCI器件 bootrom和VxWorks中都用关于PCI通用寄存器(256byte)配置的部分 用户程序负责用户寄存器的填写 五、用户程序框架 中断处理 初始化部分 挂接终端(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…); } 硬件轮询(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); } 基于缓冲队列的双工通讯模式 网络运行(一) 网络运行(二) 网络监控 socket函数返回错误 ping() 六、更多技术细节… 网络通讯的缓冲队列实现 多任务控制 善用宏定义 自启动VxWorks制作 嵌入式软件的控制端调用 VxWorks编程规范 * * 通讯协议 *
您可能关注的文档
最近下载
- 《应用文写作》高职完整全套教学课件.pdf
- 人教版二年级上册数学全册教学设计(配2025年秋新版教材).docx
- 路灯维修工考试题库单选题100道及答案.docx VIP
- TDZJN 80-2022 数据中心用锂离子电池设备产品技术标准.docx
- 2025年教科版一年级《科学》上册全册教案 .pdf VIP
- 唱天瑶 课件接力版音乐五年级上册(共11张PPT)(含音频+视频).pptx VIP
- 数字化驱动下的智慧家庭医生服务报告.pdf VIP
- [工程科技]MODFLOW用户手册中文版.doc
- 苏教版小学一年级数学下学期综合检测试卷 附解析.pdf VIP
- 矿山排水工培训课件视频.pptx VIP
文档评论(0)