最新vxWorks学习笔记.doc
《最新vxWorks学习笔记.doc》由会员分享,可在线阅读,更多相关《最新vxWorks学习笔记.doc(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-datevxWorks学习笔记vxWorks学习笔记vxWorks学习笔记 vxWorks学习笔记2006-07-20 11:141VxWorks开发方式:交叉开发,即将开发分为主机(host)和目标机(target)两部分。类似于dos下C语言程序的开发。合并开发的优点:简单缺点:资源消耗量大,CPU支持,非标准体系的支持host (Tornado) target(vxWo
2、rk) 小程序模块vxWorks实际采用开发模式Tornado提供:编辑,编译,调试,性能分析工具,是vxWorks的开发工具vxWorks:面向对象可以剪裁的实际运行操作系统2.vxWorks启动方式Rom方式 (vxWork_rom)vxWorks直接烧入romRom引导方式(bootrom+vxWorks)其中bootrom烧入rom,vxWorks可以通过从串口,网口,硬盘,flash等下载!这里的bootrom不是开发环境中的bootable,在开发环境里bootable指的是vxWorks,downloadable指application3.调试attach用来在多任务调试时将调试
3、对象绑定到某个任务任务级调试(attach taskName)单个任务的调试不会影响到其他任务的运行,主要用来调用户的应用程序。全局断点:在调另一任务或本任务时,系统运行本任务断点,则停下。各任务要配合使用。任务断点:调本任务时,系统运行到本任务断点,则停下。如果没有attach到本任务,不起作用。一次性断点:跑到一次之后自动删除。 系统级调试(attach system)把所有task和系统core、中断看成一个整体,可用于调试系统和中断。对中断调试,如果不是系统级调试,无论是那种断点都不起作用!wdbAgent不在调试范围内,当任务级调试时工作在中断方式,系统级调试工作在轮询方式。!可是使
4、用命令行方式的调试,参看crossWind教程。4.调度优先级调度(无条件)时间片:同优先级,如果时间片没有打开,任务采取先到先运行,运行完毕在交出cpu,如果打开,则轮流使用cpu。!死循环使比它优先级低的任务都不能运行。5任务间通讯信号量,全局变量,管道,signal,message queue,socket信号量:分互斥、同步(二进制)、计数三种。其中互斥用于资源管理,禁止多任务同时共享内存。它的优势是:速度快;同一任务如果已经take到,再次take还会成功。!全局变量一定要有信号量保护。Message queue:封装了全局变量和信号量,优势是:快;有很多操作项(send多recv少
5、:消息可以排队,用priority_urgent选项加到队列头。send少recv多:取的时候支持fifo和优先级,即有消息到达时给高优先级任务还是先被recv阻塞的任务)signal:紧急通信机制,仅次于中断,依赖于系统调度,不依赖时间片(中断依赖于硬件时间),因此signal又称为软中断。!exeption:内部中断,属于硬中断(例如除法出错)。它与signal的关系如下图:taskA taskB 软中断处理 signal taskC taskB Users tasks exception signal 软中断处理 Exception中断处理历程1 查TCB(task control bl
6、ock),得到正在执行的任务信息 2 如果注册了这个signal,则挂起任务 3 打印exception号,pc指针,reg值 4 如果注册了这个signal,给任务发signal6.内存分配在config.h中由宏定义指定。 user_reserved mem (保存热启动时 的一些参数) System Memory pool Wdb poll vxWorks Memory的最终布局 LOCAL_MEM_LOCAL_ADRSRAM_LOW_ADRS FREE_RAM_ADRS WDB_POOL_SIZE sysMemTop() sysPhyMemTop() Bootrom romInit()
7、 romStart()Bootrom usrInit() usrRoot() VxWorks ROM RAM ROM_SIZEROM_BASE_SIZEROM_TEXT_ADRSRAM_HIGH_ADRSRAM_LOW_ADRS启动时的ROM和RAM布局!bootrom中的内存驱动在config/scr/drv/mem下,直接include *.c就可以使用其中的函数。对于flash必须在config.h中加上类型的定义,换flash芯片在flash*.h中修改控制字等宏定义。7.中断中断分三层含义:中断引脚号(或从中断控制器得到)(interrupt level) *_LEVEL中断号(in
8、terrupt number) INT_VEC_GET(*_LEVEL)中断向量(对x86是中断号*4)(interrupt vector) INUM_TO_IVEC(INT_VEC_GET(*_LEVEL)!中断处理程序和中断向量必须connect再enable后才能被激活,对x86使用sysIntEnablePIC(),对MIPS,ARM,PPC等使用intEnable()。!中断中不能含有会使中断阻塞的函数接口。(例如printf就不行,使用logMsg)8.TimervxWorks使用3个timer,分别用于系统时钟,辅助时钟和时标。Timer0:用于系统时钟(system clock
9、),可用sysClkRateSet()改变速率,默认值时60次/秒。!vxWorks下的watchdog基于timer0,因为是在interrupt尺度,使用必须谨慎,否则会降低系统效率。Timer1:用于辅助时钟(auxiliary clock),在bsp.h中定义了最大速率,最小速率和实际速率初始值。可用sysAuxClkRateSet()改变速度。用sysAuxClkConnect()定义辅助时钟的定时任务。Timer2:用于时标(timestamp)。从系统开始运行时就一直递增,可以用来获得系统运行时间,在windview工具中被使用。用户程序也可以通过sysTimestamp()得到
10、运行时间。9.*.o,*.out,vxWorks一个板子跑起来之后可以有多个*.o和*.out(类似于window下的应用程序)和有且仅有一个的vxWorks(类似于window操作系统),但这些*.o和*.out的编译必须和vxWorks基于同一种cpu。!bootrom在启动时被部分复制到ram里在运行,这一部分将下载vxWorks到ram,然后跳转到vxWorks入口处运行,然后vxWorks将这一部分的bootrom重新划分到系统池。10.符号表(symbol table)符号表就是一个数组,定义了函数和全局变量跟他们的地址的对应关系,默认情况下符号表放在主机上,如果定义了standa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 vxWorks 学习 笔记
限制150内