VxWorks常用命令汇总
vxworks代码分析
MemPoolEnd
RootTaskMem 10000
RootTask Stack Root_Task TCB
•在系统初始化时在kernelInit()中分配中 断堆栈和RootTask的TCB和Stack.其他部分
作为系统分区分配.
•在RootTask执行完后在taskDestory中把其 TCB和Stack通过MemAddPool()加到系统分
FREE_BLOCK BLOCK_HDR
pPrevHdr pPrevHdr
表示空闲节点
BLOCK_HDR BLOCK_HDR
FREE_BLOCK BLOCK_HDR
pPrevHdr pPrevHdr pPrevHdr
pPrevHdr
表示整块内存的 首尾“哨兵”
表示已用内存
BLOCK_HDR
pPrevHdr
windExit 或intExit 函数将当前任务的寄存器环境保存在 任务控制块中,调用函数reschedule进行任务调度
windLoadContent 函数从新选择的任务控制块中装载寄存器 上下文
windLoadContent 函数中执行指令 pushl WIND_TCB_PC(%eax), 它将新选择任务的tcb 结构中存放的pc地址压入系统堆栈
kernelLib.c (kernel\vxworks4\target\src\wind)
kernelInit()函数(2/2)
在ቤተ መጻሕፍቲ ባይዱ里创建了系统的第一个任务
taskInit (pTcb, "tRootTask", 0, VX_UNBREAKABLE | VX_DEALLOC_STACK, pRootStackBase, (int) rootStackSize, (FUNCPTR) rootRtn, (int) pMemPoolStart, (int)memPoolSize, 0, 0, 0, 0, 0, 0, 0, 0);
vxWorks命令
vxWorks命令sp( ) 缺省參数创建⼀个任务(priority="100" 返回值为任务ID。
或错误)(taskSpawn)sps( ) 创建⼀个任务。
并挂起它tr( ) 恢复⼀个挂起的任务(与taskResume同样)ts( ) 挂起⼀个任务 (与taskSuspend同样)td( ) 删除⼀个任务 (与taskDelete同样)period( ) 创建⼀个周期调⽤函数的任务repeat( ) 创建⼀个反复调⽤函数的任务taskIdDefault( ) 设置并报告当前缺省的任务ID。
1.4.2 任务状态信息i( ) 显⽰系统信息,包含当前任务明、状态等(反复查询⽬标机,有时可能显⽰不⼀致)iStrict( ) 类似于i( ),但仅仅查询⽬标机⼀次ti( ) 显⽰任务的TCB信息w( ) 显⽰全部挂起任务的具体信息。
.tw( ) 显⽰某挂起任务的具体信息。
checkState( ) 显⽰⼀个任务的使⽤堆栈的总结,未定义任务时显⽰全部tt( ) 显⽰堆栈记录taskIdFigure( ) 报告任务的ID,以及名称1.4.3 系统信息devs( ) 列出⽬标机系统上的全部设备lkup( ) List symbols from symbol tablelkAddr( ) List symbols whose values are near a specified valued( ) 显⽰⽬标机内存l( ) Disassemble and display a specific nuber of instructionsprintError( ) 给出近期的错误值version() 显⽰VxWorks版本号cd( ) 改变宿主机⼯作⽂件夹(不影响⽬标机)ls( ) 列出宿主机⼯作⽂件夹下的⽂件pwd( ) 显⽰宿主机当前⼯作⽂件夹help( ) 显⽰Shell命令的帮助h( ) 显⽰近期输⼊的20个命令shellHistory( ) 设置或显⽰Shell命令shellPromptSet( )改变C解释器Shell 提⽰printLogo( ) 显⽰Tornado Shell 登陆1.4.4 系统改动和调试ld( ) 载⼊⼀个对象模块到⽬标机。
主CPU板vxworks常用命令
Vxworks常用命令版本及修订说明:目录VXWORKS常用命令 (1)说明 (2)常用命令 (2)说明常用指令使用两种方式:1、在串口超级终端下输入命令;串口设置为115200,8N1;2、使用telnet登陆装置,然后在shell下输入命令;用户:密码:常用命令命令:version查看vxworks程序时间:命令:ll查看文件列表。
U21平台的主CPU文件系统包括:/shr 、/set、/log、/wave。
命令:cdcd “目录名”命令:rm删除文件“文件路径和文件名称”或者remove “文件路径和文件名称”命令: i查看任务状态。
正常任务状态为:PEND/READY。
异常为:STOP、SUPPEND. 状态中出现+I说明该任务占用了高优先级任务所需要的资源,而被暂时提高了优先级运行。
命令:tt “任务名称”查看任务调用情况。
当系统中出现异常任务时,只要使用命令:tt,可以查看异常任务函数调用情况。
命令:ti “任务名称”查看任务详细信息.命令:checkStack 查看各任务堆栈使用情况。
命令:getcpuusage 查看任务负载。
命令:devs查看驱动设备列表。
命令:iosFdShow查看被打开的文件id列表:命令:systime查看修改装置时间命令;systime “Time=xx:xx:xx”修改时间;systime “TIME=XX-XX-XX”修改日期其中:status为0为没有检查到外部对时。
status为1为对时源为1588对时;2为B码;4为PPS;但与定值配置不符。
status=800x:表示外部对时正常;x为1为1588对时;2为B码;4为PPS 命令:ifShow查看网口IP地址。
命令:ifAddrSet修改装置网卡IP地址:格式:ifAddrSet "qefcc0","198.120.0.107"其中:qefcc0为第一个网口(板卡面板从上往下数),qefcc1为第二个网口,qefcc2为第三个网口。
VxWorks编程常用函数说明
三、IO 系统:ioLib.h 1、系统中的 IO 设备,包括键盘、串口、文件等,都用统一的接口访问。第一步通常先得到 文件描述符,然后进行读写或者设置的工作,最后关闭该描述符。 creat:建立文件 open:得到文件或设备的描述符 read:读文件或设备 write:写文件或设备 ioctl:设置参数 close:关闭文件描述符 remove:删除文件
二、常用的库: #i nclude "taskLib.h" /* 任务 */ #i nclude "msgQLib.h" /* 消息队列 */ #i nclude "semLib.h" /* 信号量 */ #i nclude "ioLib.h" /* IO */ #i nclude "wdLib.h" /* Watch dog */ #i nclude "logLib.h" /* 信息输出 */ #i nclude "socket.h" /* 网络套接字 */
taskSend() { int pd; /* pipe 的描述符 */ if ((pd = open("/pipe/mypipe", O_WRONLY, 0644)) == ERROR) { printf("Open pipe failed!"); } if (semTake(semMID, NO_WAIT) == ERROR) { printf("Pipe in use!"); } write(pd, "a", 1); semGive(semMID); close(pd); }
vxworks函数
1.taskSpawn 创建(产生并激活)新任务int taskSpawn(c h ar *name,int priority,int options,int stackSize,FUNCPTR entryPt,int arg1,int arg2, int arg3,int arg4, int arg5,int arg6, int arg7,int arg8, int arg9,int arg10)函数运行成功返回任务ID号,否则为ERROR。
任务可选项的几种模式如下表:名称值描述VX_FP_TASKVX_NO_STACK_FILLVX_PRIVATE_ENVVX_UNBREAKABLEVX_SUPERVISOR_MODE0x80x1000x800x2运行带浮点的协处理器不使用0xee填充堆栈用私有环境运行任务断点失效用户任务常用值2.taskDelete 删除一个任务STATUS taskDelete(int tid)删除指定ID号的任务,并释放任务所占有的内存3.taskDelay 延迟任务STATUS taskDelay(int ticks)任务延迟为某一任务休眠一定时间提供了简单的处理方法,一般用于任务的周期性循环执行。
当输入参数为NO_WAIT(其值为零)时,表示将所延迟的任务切换到同一优先级就绪队列的尾部。
4.taskSuspend 任务悬置STATUS taskSuspend(int tid)5.taskResume 恢复任务STATUS taskResume(int tid)6.msgQCreate 创建并初始化消息队列#include <msgQLib.h>MSG_Q_ID msgQCreate(int maxMsgs,int maxMsgLengt h,int options)消息入列方式有两种:MSG_Q_FIFO 先进先出,按时间先后顺序考虑;MSG_Q_PRIORITY 按消息优先级考虑。
VxWorks几种常用的延时方法
VxWorks几种常用的延时方法关键字:taskDelay 函数VxWorks 基准频率实时嵌入式系统sysTimes-tampLock 串口通信skep 延时时间tick嵌入式系统中,一个任务往往需要在特定的延时之后执行一个指定的动作,比如等待外设以确保数据可靠,控制扬声器发声时间以及串口通信超时重发等。
这就需要利用定时器机制来计量特定长度的时间段。
VnWorks作为实时嵌入式系统,提供多样的定时接口函数。
下面列举一些常用的定时方式,并说明其注意事项。
1 taskDelavtaskDelay(n)使调用该函数的任务延时n个tick(内核时钟周期)。
该任务在指定的时间内主动放弃CPU,除了taskDelay(0)专用于任务调度(将CPU交给同一优先级的其他任务)外,任务延时也常用于等待某一外部事件,作为一种定时/延时机制。
在没有中断触发时,taskDelay能很方便地实现,且不影响系统整体性能。
例如写数据至EEPROM,EEPROM需要一个内部擦除时间(最大擦除时间为lOms)。
以下所提及的一个tick都假设为16.67 ms(1/60 s)。
可以简单地调用taskDelay(2)来保证数据擦写完成。
按理说taskDelay(1)就足以保证,为什么需要taskDelay(2)呢?这正是taskDelay使用的一个缺陷,使用时需要注意。
taskDelay(n)表示任务延时至第n 个系统时钟到来的时刻,如图1所示。
如果在A时刻调用taskDelay(1)仅延时5 ms,则在B 时刻taskDelay(1)就刚好是一个tick周期。
可见需要10 ms的延时就必须调用taskDelay(2)才能实现。
taskDelay有接近一1个tick的误差存在,taskDelay(n)实际上是延时(n-1)tick~n tick 的时间。
延时精度为l/n,延时1s就是taskDelay(60)的误差极限为1.6%,而taskDelay(1)的误差极限将是100%。
VxWorks编程常用函数说明
taskSend() { if (OK != msgQSend(msgQID, "A", 1, NO_WAIT, MSG_PRI_NORMAL)) { printf("Message send failed!"); } }
if (select(width, &readFds, NULL, NULL, NULL) == ERROR) { /*监听*/ close(fds[0]); ... ...; close(fds[3]); return; } for(i=0; i if (FD_ISSET(fds[i], &readFds)) { ... ...; /* 进行读写操作 */
Init() { /* 创建管道 */
if (pipeDevCreate("/pipe/mypipe", 8, 1) != OK) { printf("/pipe/mypipe create fialed!\n"); } /* 创建互斥信号量 */ if ((semMID = semMCreate(SEM_Q_FIFO)) == NULL) { printf("Mutex semaphore create failed!\n"); } }
taskReceive() { uchar_t ch; msgQReceive(msgQID, &ch, 1, WAIT_FOREVER); /* 这里任务会阻塞 */ printf("Received from msgq: %c ", ch); }
VxWorks 使用
一、创建映像工程 Create a bootable VxWorks image工程创建完毕后,工程管理工具为用户工程产生、拷贝了一系列文件,这些文件显示在工程作业空间的Files选项卡中(如图1.1所示)。
这些文件都是创建工程时,系统自动创建的文件(有些文件不可修改)。
下面对这些文件进行详细的描述和说明。
linkSyms.c :动态产生的配置文件。
该文件包含的代码来自于VxWorks文档,而VxWorks文档是参考适当的符号集而创建的。
文件包行的是没有被初始化的程序模块符号信息。
该文件在工程任何时候发生变化时重新产生,用户不需要对其编写和修改。
prjConfig.c :一个动态产生的配置文件。
该文件在工程任何时候发生变化时重新产生,用户不需要对其编写和修改。
该文件包含的是当前VxWorks映像所包含组件的初始化代码。
romInit.s :包含引导Rom和基于Rom的VxWorks映像的初始化入口汇编代码。
romStart.c :包含把VxWorks映像下载到RAM中的程序代码。
sysALib.s :包含系统启动代码。
这是VxWorks映像下载到RAM中启动启动以后执行的第一段代码。
sysLib.c :包含与目标机或系统相关的C语言函数。
该文件提供板级接口,通过该接口,VxWorks和应用程序的实现将与目标系统无关。
usrAppInit.c :包含自启动型VxWorks映像用户应用程序入口函数usrAppInit(),类似与C语言的main ()函数。
用户可以把应用初始化程序增加到该函数里,如图1.2所示的usrAppInit.c文件窗口。
usrAppInit()函数是应用程序入口函数,当目标机系统加电后,首先初始化CPU,接着初始化目标机上的设备、安装设备驱动程序、创建设备等,然后进行系统的配置和系统引导所需要的资源申请等,最后执行usrAppInit()函数。
二、配置VxWorks模块在生成用户自定义VxWorks映像前,应根据自己应用和目标机的需求,对VxWorks模块进行配置。
vxworks基础命令
精心整理1.与任务相关的命令sp function,[arg1],...,[arg9]-启动任务,最多接受9个参数,默认的优先级100、堆栈20000字节period n,function,[arg1],...,[arg8]-创建一个周期调用function的任务,周期为n秒,最多接受8个参数repeat m,function,[arg1],...,[arg8]-创建一个反复调用function的任务,调用次数为m,m=0时永久调用,最多也是8个参数ts tidX -挂起任务tr tidX -恢复挂起的任务td tidX -删除任务i tidX -显示任务基本信息,参数为0时显示全部任务ti tidX -显示任务详细信息,包括寄存器、堆栈等tt tidX -显示任务的函数调用关系checkStack tidX -显示任务堆栈使用的历史统计,参数为0时显示全部任务[其中tidX可以为任务ID 也可以为任务名]2、系统信息lkup ["string"] -在系统符号表中查找并列出含有"string"字符的函数及全局变量,有两个特殊参数:0,给出符号表统计;""(空字符串),列出全部符号lkAddr addr -显示addr地址附近的符号表l addr,[n] -显示addr地址开始的n条指令的反汇编,n省略时默认为10条指令h [n] -n为0时列出最近执行的shell命令,默认20条;n非0时,设定shell记录的历史命令的数目d [addr,[number],[width]]-显示addr地址开始的number个单元的内容,width定制每个单元的宽度,可以是1、2、4、8m addr,[width] -按width宽度修改addr地址的内容,width 可以是1、2、4、8memShow 1 -显示系统分区上空闲和已分配空间的总数等printErrno value -打印系统定义的错误码的宏3、与网络相关的命令ifShow ["ifname"] - show info about network interfacesinetstatShow - show all Internet protocol socketstcpstatShow - show statistics for TCPudpstatShow - show statistics for UDPipstatShow - show statistics for IP icmpstatShow - show statistics for ICMParpShow - show a list of known ARP entriesmbufShow - show network stack data pool statisticsnetStackSysPoolShow - show network stack system pool statisticsrouteShow - display all IP routes (summary information)mRouteShow - display all IP routes (verbose information)routestatShow - display routing statisticsrouteAdd "destaddr","gateaddr" - add route to route table routeDelete "destaddr","gateaddr" - delete route from route table说明:上述大多数命令都可以在help、netHelp中查到。
Vxworks学习资料整理
Vxworks学习资料整理Vxworks学习资料整理 (1)1 基于硬盘启动的Vxworks环境搭建 (3)2 Vxworks引导盘制作 (6)2.1 通过DOS加载VxWorks方法 (6)2.2 Bootrom三种类型 (7)2.3 VxWorks映象 (7)2.4 Bootrom.sys最快制作方法 (8)2.5 从网络引导 (8)2.6 从本地硬盘引导 (9)2.7 制作bootrom文件 (9)2.8 Bootrom编译步骤 (11)2.9 用BSP生成Bootable工程(即我们的程序文件) (12)2.10 FTP Server下载VxWorks (14)3 Tornado调试环境的建立 (17)3.1.1 配置文件config.h (17)3.1.2 网络连接 (18)6 从主机搭接(attach)到目标机 (21)7.1.3 串口连接 (21)4 4.Config.h文件注释说明 (22)4.1 启动行说明 #define DEFAULT_BOOT_LINE \: (22)4.2 Config.h 文件说明 (23)4.3 启动参数结构体 BOOT_PARAMS (35)4.4 booting过程介绍,比较详细 (39)5 sysClkRateGet();返回系统时钟每秒的tick数量, tick详解 (43)6 中断应用设计要点 (44)7 驱动程序设计 (49)8 缩短vxworks的启动时间 (52)9 调试篇 (55)10 驱动编程步骤 (55)10.1 将驱动程序增加到“系统驱动程序列表”中 (55)10.2 将设备增加到“系统设备列表”中 (55)10.3 打开设备,得到文件描述符 (55)10.4 SELECT机制的使用 (56)10.4.1 select( )函数翻译 (58)11 VxWorks系统的网络驱动(END) (60)12 VXworks操作系统中信号量用于多任务同步与互斥的讨论 (62)12.1 二进制信号量实现互斥和同步 (64)12.1.1 互斥的实现: (64)12.1.2 同步的实现: (65)12.2 互斥信号量 (67)13 Tornado的文件目说明录 (68)14 Shell 内置命令说明 (72)14.1 任务管理 (72)14.2 任务状态信息 (72)14.3 系统修改和调试 (73)14.4 对象命令( WindSh Commands for Object Display ) (73)14.5 WindShell and Browser, Shell 命令 (74)15 驱动篇 (82)16 中断篇 (83)16.1 中断服务程序ISR编写注意事项 (83)16.2 中断号与中断向量的转换 (84)16.3 安装中断服务程序 intConnect() (84)16.4 调试中断服务程序方法 (84)17mkboot批处理命令详细解释 (84)18 MakeFile 说明 (86)19 VxWorks5.4中的输入输出重定向 (89)19.1 vxworks屏幕输出, 一般来说用printf都是串口/shell输出,串口输出就可以到屏幕上了? (89)19.2 20.2 VxWorks中针对X86开发时标准输入输出的重定向? (90)20 怎样加入外部.o文件? (93)21 如何在Vxworks中使用 cd ,pwd , ls 命令:启用File System and Disk Utilities 组件(INCLUDE_DISK_UTIL),可在shell下用pwd/cd/ls等命令 (94)22 Error: image is larger than 524288 bytes (94)23 proxyArpDefaultOn()未定义解决方法? (95)24 如何将VxWorks的系统定时间隔或系统Ticks设置为1ms (95)25 read/write、fread/fwrite、fopen/open有什么区别 (96)26 快速启动 (100)27 启动时报ATA0a和硬盘启动相关问题 (100)28 如何安装USB2.2新版本及编译USB驱动? (101)29 WindML、图形界面相关问题 (102)29.1 WindML,ugldemo出错? (102)29.2 5101 VxWorks黑屏问题? (102)29.3 添加ugldemo.c后,编译报undefined reference to “ugltextdraw”错误一大堆? (103)29.4 WindML 中文字库显示? (103)30 VxWork6.8相关问题 (105)30.1 ELF和bin文件的区别? (105)30.2 diab和GNU的区别? (106)31 No such file or directory错误? (108)专业术语:WTX协议:(Wind River Tool eXchange): 用于开发机内部Tornado工具与Target Server 之间通信.WDB协议:(Wind DeBug): 用于主机Target Server与目标机之间的通信.1基于硬盘启动的Vxworks环境搭建VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS)。
vxworks命令教程2024新版
文件创建、打开和关闭
创建文件
使用`creat()`函数创建新文件,需要指定文件名和访 问模式。
打开文件
使用`open()`函数打开已存在的文件,同样需要指定 文件名和访问模式。
关闭文件
使用`close()`函数关闭已打开的文件,释放相关资源 。
文件读写操作
01
读取文件
写入文件
02
03
telnet
远程终端服务命令,用于建立TCP连接 并远程登录到目标主机。
ftp
文件传输协议(FTP)命令,用于在网 络上传输文件。
tftpபைடு நூலகம்
简单文件传输协议(TFTP)命令,用 于在网络上进行简单的文件传输。
网络诊断和调试
netstat
网络统计命令,用于显示网络 连接、路由表、接口状态等网
络相关信息。
在嵌入式系统开发中,命令行接口(CLI )是一个不可或缺的工具。通过CLI,开 发者可以与系统进行交互,执行命令,查 看系统状态,调试问题等。
本教程旨在帮助开发者熟悉并掌握 VxWorks的命令行接口,以便更有效地 进行嵌入式系统开发和调试。
教程范围
基本命令介绍
涵盖VxWorks中常用的基本命令, 如任务管理、内存管理、时间管理
ndp
邻居发现协议(NDP)命令,用于 IPv6网络中的邻居发现和管理。
route
用于设置和查看路由表,实现网络数 据包的正确转发。
dhcpc
动态主机配置协议客户端(DHCP Client)命令,用于从DHCP服务器 获取网络配置信息。
数据传输和接收
ping
用于测试网络连接可达性,发送ICMP 回显请求并接收回显应答。
vxworks串口常用命令
vxworks串口常用命令VxWorks串口常用命令一、概述VxWorks是一款实时操作系统,广泛应用于嵌入式系统开发中。
在嵌入式系统中,串口通信是一种常见的数据传输方式。
本文将介绍VxWorks中常用的串口命令,帮助开发人员在串口通信中更加高效地进行操作。
二、常用命令1. devConnectdevConnect命令用于连接一个串口设备。
例如,要连接一个串口设备/dev/tty0,可以使用以下命令:-> devConnect("/ty0", "/tyCo/0");2. iosDevShowiosDevShow命令用于显示所有已连接的串口设备。
例如,要显示所有已连接的串口设备,可以使用以下命令:-> iosDevShow();3. ioctlioctl命令用于对串口设备进行控制操作。
例如,要设置串口波特率为9600,可以使用以下命令:-> ioctl("/tyCo/0", FIOBAUDRATE, 9600);4. openopen命令用于打开一个串口设备。
例如,要打开串口设备/dev/tty0,可以使用以下命令:-> open("/ty0", O_RDWR);5. readread命令用于从串口设备读取数据。
例如,要从串口设备/dev/tty0读取10个字节的数据,可以使用以下命令:-> read(fd, buffer, 10);6. writewrite命令用于向串口设备写入数据。
例如,要向串口设备/dev/tty0写入10个字节的数据,可以使用以下命令:-> write(fd, buffer, 10);7. closeclose命令用于关闭一个已打开的串口设备。
例如,要关闭串口设备/dev/tty0,可以使用以下命令:-> close(fd);8. selectselect命令用于在多个串口设备之间进行选择。
VxWorks调试手段和方法总结
3
单击 Adcanced 按钮可以打开 Advanced Breakpoint 窗口,如图 4 所示。
图 3 Advanced Breakpoint 窗口 Condition Expression 输入框允许用户给断点附加条件,只有在此条件满足时,断点才会 起作用,程序才会在此暂停。可以在条件框内输入一个整型表达式,或是一个变化的内存值, 只要是非零值,就假定此条件为真。 Number of times to skip 框指定在导致程序暂停之前允许经历的断点次数。 On Break 选项指定了如何处理一个断点: l Keep 将断点定义为永久断点 l Delete 将断点定义为临时断点,程序经历一次此断点即删除它 l Disable 将断点定义为临时断点,程序经历一次此断点即关闭它,以后仍可以经
2 运行程序
单击 CrossWind 工具栏中的 图标或选择 Debug 下拉菜单中的 Run 选项,就会出现
1
Run Task 窗口。如图 1 所示。
图 1 Run Task 窗口 利用 Run Task 窗口指定需要运行的函数和函数参数。函数参数之间以空格键隔开。参 数列表必须是整数或地址,不能是浮点或双精度值、函数调用。选中 Break at Entrypoint 框 可以在函数的第一条语句处设置一个临时断点,这样程序一运行就会停在第一条语句处,用 户可以执行单步,跳过子函数调用或恢复执行。
的每一个起始地址保存下来,可以从下拉列表中选择一个以前显示过的地址。单击 按钮
6
可以更新内存显示。 Memory窗口中显示的内存值不能手工修改。如果想修改某一地址的内存值需要通过
Shell命令m来完成。 在Tools|Options|Debugger窗口中修改Memory Window 选项可以改变Memory窗口中的
VxWorks编程常用函数说明
write(fd, &data, sizeof(data));
… …
close(fd);
}
memDevDelete("/mem/mem1");
}
3、通过Select函数实现多个IO监听:selectLib.h
பைடு நூலகம்printf("Message send failed!");
}
}
taskReceive() {
uchar_t ch;
msgQReceive(msgQID, &ch, 1, WAIT_FOREVER); /* 这里任务会阻塞 */
printf("Received from msgq: %c ", ch);
FD_ZERO(&fdset) 清除所有监听位
FD_ISSET(fd, &fdset) fd是否有数据
例子,其中MAX意为取最大值:
Init() {
struct fd_set readFds;
int fds[4];
int width;
fds[0] = open(..);… …;fds[3] = open(..); /* 打开IO */
… …; /* 进行读写操作 */
}
}
/* } */
}
四、多任务环境的编程:
1、任务控制:taskLib.h
taskSpawn( ) - 创建任务
taskInit( ) -初始化任务,用户自己指定栈和PCB地址
(完整版)主CPU板vxworks常用命令
(完整版)主CPU板vxworks常用命令Vxworks常用命令版本及修订说明:目录VXWORKS常用命令 (1)说明 (2)常用命令 (2)说明常用指令使用两种方式:1、在串口超级终端下输入命令;串口设置为115200,8N1;2、使用telnet登陆装置,然后在shell下输入命令;用户:密码:常用命令命令:version查看vxworks程序时间:命令:ll查看文件列表。
U21平台的主CPU文件系统包括:/shr 、/set、/log、/wave。
命令:cdcd “目录名”命令:rm删除文件“文件路径和文件名称”或者remove “文件路径和文件名称”命令: i查看任务状态。
正常任务状态为:PEND/READY。
异常为:STOP、SUPPEND. 状态中出现+I说明该任务占用了高优先级任务所需要的资源,而被暂时提高了优先级运行。
命令:tt “任务名称”查看任务调用情况。
当系统中出现异常任务时,只要使用命令:tt,可以查看异常任务函数调用情况。
命令:ti “任务名称”查看任务详细信息.命令:checkStack 查看各任务堆栈使用情况。
命令:getcpuusage 查看任务负载。
命令:devs查看驱动设备列表。
命令:iosFdShow查看被打开的文件id列表:命令:systime查看修改装置时间命令;systime “Time=xx:xx:xx”修改时间;systime “TIME=XX-XX-XX”修改日期其中:status为0为没有检查到外部对时。
status为1为对时源为1588对时;2为B码;4为PPS;但与定值配置不符。
status=800x:表示外部对时正常;x为1为1588对时;2为B 码;4为PPS 命令:ifShow查看网口IP地址。
命令:ifAddrSet修改装置网卡IP地址:格式:ifAddrSet "qefcc0","198.120.0.107"其中:qefcc0为第一个网口(板卡面板从上往下数),qefcc1为第二个网口,qefcc2为第三个网口。
最新VxWorks常用命令汇总
V x W o r k s常用命令汇总VxWorks常用的命令1.与任务相关的命令sp function,[arg1],...,[arg9]-启动任务,最多接受9个参数,默认的优先级100、堆栈20000字节period n,function,[arg1],...,[arg8]-创建一个周期调用function的任务,周期为n秒,最多接受8个参数repeat m,function,[arg1],...,[arg8]-创建一个反复调用function的任务,调用次数为m,m=0时永久调用,最多也是8个参数ts tidX -挂起任务tr tidX -恢复挂起的任务td tidX -删除任务i tidX -显示任务基本信息,参数为0时显示全部任务ti tidX -显示任务详细信息,包括寄存器、堆栈等tt tidX -显示任务的函数调用关系checkStack tidX -显示任务堆栈使用的历史统计,参数为0时显示全部任务[其中tidX可以为任务ID 也可以为任务名]2、系统信息lkup ["string"] -在系统符号表中查找并列出含有"string"字符的函数及全局变量,有两个特殊参数:0,给出符号表统计;""(空字符串),列出全部符号lkAddr addr -显示addr地址附近的符号表l addr,[n] -显示addr地址开始的n条指令的反汇编,n省略时默认为10条指令h [n] -n为0时列出最近执行的shell命令,默认20条;n非0时,设定shell记录的历史命令的数目d [addr,[number],[width]]-显示addr地址开始的number个单元的内容,width定制每个单元的宽度,可以是1、2、4、8m addr,[width] -按width宽度修改addr地址的内容,width可以是1、2、4、8 memShow 1 -显示系统分区上空闲和已分配空间的总数等printErrno value -打印系统定义的错误码的宏3、与网络相关的命令ifShow ["ifname"] - show info about network interfacesinetstatShow - show all Internet protocol socketstcpstatShow - show statistics for TCPudpstatShow - show statistics for UDPipstatShow - show statistics for IPicmpstatShow - show statistics for ICMParpShow - show a list of known ARP entriesmbufShow - show network stack data pool statistics netStackSysPoolShow - show network stack system pool statistics routeShow - display all IP routes (summary information) mRouteShow - display all IP routes (verbose information) routestatShow - display routing statisticsrouteAdd "destaddr","gateaddr" - add route to route tablerouteDelete "destaddr","gateaddr" - delete route from route table说明:上述大多数命令都可以在help、netHelp中查到vxWorks命令规则:名词+动词,第二个单词开始大写序号状态命令备注1 BSP c 改变配置2 BSP p 打印当前配置信息3 BSP @ 开始加载内核4 BSP ctrl+x 重新启动5 BSP6 BSP7 vxWorks i 查看进程8 vxWorks ifShow 查看当前网络设置9 vxWorks devs 查看所有的设备10 vxWorks cd "/xxx/" 进入目录11 vxWorks cfIdeInit 每次上电后执行12 vxWorks cfFormat 新卡(或者是未格式化的卡)插入的时候执行,只需执行一次13 vxWorks ll 以详细模式查看当前目录下的文件14 vxWorks ls 以简单模式查看当前目录下的文件15 vxWorks version 查看编译时间16 vxWorks td xxx 终止xxx进程17 vxWorks help 帮助18 vxWorks tffsShow 查看tffs的相关信息19 vxWorks tffsDevFormat 格式化tffs文件系统20 vxWorks showTime 查看系统时间21 vxWorks usrTffsConfig(0,0,"/tffs0") 新增一个tffs格式的文件系统22 vxWorks pwd 查看当前操作所在的目录路径23 vxWorks ping "xx.xx.xx.xx",10,0 ping地址xx.xx.xx.xx,共计10次24 vxWorks pciDeviceShow 查看当前系统中的所有PCI设备25 vxWorks pciHeaderShow,0,xx 查看当前系统中的组号为0、地址号为xx的PCI设备VxWorks中如果稍有不慎,就可能导致task suspend,如果运气好,shell没有被挂起,则可以通过系统的一些命令追踪一下挂起的原因。
vxWorks shell命令
shell命令vxWorks命令规则:名词+动词,第二个单词开始大写序号 状态 命令 备注1 BSP c 改变配置2 BSP p 打印当前配置信息3 BSP @ 开始加载内核4 BSP ctrl+x 重新启动5 BSP6 BSP7 vxWorks i 查看进程8 vxWorks ifShow 查看当前网络设置9 vxWorks devs 查看所有的设备10 vxWorks cd "/xxx/" 进入目录11 vxWorks cfIdeInit 每次上电后执行12 vxWorks cfFormat 新卡(或者是未格式化的卡)插入的时候执行,只需执行一次13 vxWorks ll 以详细模式查看当前目录下的文件14 vxWorks ls 以简单模式查看当前目录下的文件15 vxWorks version 查看编译时间16 vxWorks td xxx 终止xxx进程17 vxWorks help 帮助18 vxWorks tffsShow 查看tffs的相关信息19 vxWorks tffsDevFormat 格式化tffs文件系统20 vxWorks showTime 查看系统时间21 vxWorks usrTffsConfig(0,0,"/tffs0")新增一个tffs格式的文件系统22 vxWorks pwd 查看当前操作所在的目录路径23 vxWorks ping "xx.xx.xx.xx",10,0 ping地址xx.xx.xx.xx,共计10次24 vxWorks pciDeviceShow 查看当前系统中的所有PCI设备25 vxWorks pciHeaderShow,0,xx 查看当前系统中的组号为0、地址号。
vxWorks常用命令
状态 BSP BSP BSP BSP BSP BSP vxWorks vxWorks vxWorks vxWorks vxWorks vxWorks vxWorks vxWorks vxWorks vxWorks vxWorks vxWorks vxWorks vxWorks vxWorks vxWorks vxWorks vxWorks vxWorks
,第二个单词开始大写
命令 c p @ ctrl+x
i ifShow devs cd "/xxx/" cfIdeInit cfFormat ll ls version td xxx help tffsShow tffsDevFormat showTime usrTffsConfig(0,0,"/tffs0") pwd ping "xx.xx.xx.xx",10,0 pciDeviceShow pciHeaderShow,0,xx
备注 改变配置 打印当前配置信息 开始加载内核 重新启动
查看进程 查看当前网络设置 查看所有的设备 进入目录 每次上电后执行 新卡(或者是未格式化的卡)插入的时候执 行,只需43;动词,第二个单词开始大写
以详细模式查看当前目录下的文件 以简单模式查看当前目录下的文件 查看编译时间 终止xxx进程 帮助 查看tffs的相关信息 格式化tffs文件系统 查看系统时间 新增一个tffs格式的文件系统 查看当前操作所在的目录路径 ping地址xx.xx.xx.xx,共计10次 查看当前系统中的所有PCI设备 查看当前系统中的组号为0、地址号为xx的PCI设备
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VxWorks常用的命令1.与任务相关的命令sp function,[arg1],...,[arg9]-启动任务,最多接受9个参数,默认的优先级100、堆栈20000字节period n,function,[arg1],...,[arg8]-创建一个周期调用function的任务,周期为n秒,最多接受8个参数repeat m,function,[arg1],...,[arg8]-创建一个反复调用function的任务,调用次数为m,m=0时永久调用,最多也是8个参数ts tidX -挂起任务tr tidX -恢复挂起的任务td tidX -删除任务i tidX -显示任务基本信息,参数为0时显示全部任务ti tidX -显示任务详细信息,包括寄存器、堆栈等tt tidX -显示任务的函数调用关系checkStack tidX -显示任务堆栈使用的历史统计,参数为0时显示全部任务[其中tidX可以为任务ID 也可以为任务名]2、系统信息lkup ["string"] -在系统符号表中查找并列出含有"string"字符的函数及全局变量,有两个特殊参数:0,给出符号表统计;""(空字符串),列出全部符号lkAddr addr -显示addr地址附近的符号表l addr,[n] -显示addr地址开始的n条指令的反汇编,n省略时默认为10条指令h [n] -n为0时列出最近执行的shell命令,默认20条;n非0时,设定shell记录的历史命令的数目d [addr,[number],[width]]-显示addr地址开始的number个单元的内容,width定制每个单元的宽度,可以是1、2、4、8m addr,[width] -按width宽度修改addr地址的内容,width可以是1、2、4、8 memShow 1 -显示系统分区上空闲和已分配空间的总数等printErrno value -打印系统定义的错误码的宏3、与网络相关的命令ifShow ["ifname"] - show info about network interfacesinetstatShow - show all Internet protocol socketstcpstatShow - show statistics for TCPudpstatShow - show statistics for UDPipstatShow - show statistics for IPicmpstatShow - show statistics for ICMParpShow - show a list of known ARP entriesmbufShow - show network stack data pool statistics netStackSysPoolShow - show network stack system pool statistics routeShow - display all IP routes (summary information) mRouteShow - display all IP routes (verbose information) routestatShow - display routing statisticsrouteAdd "destaddr","gateaddr" - add route to route tablerouteDelete "destaddr","gateaddr" - delete route from route table说明:上述大多数命令都可以在help、netHelp中查到vxWorks命令规则:名词+动词,第二个单词开始大写序号状态命令备注1 BSP c 改变配置2 BSP p 打印当前配置信息3 BSP @ 开始加载内核4 BSP ctrl+x 重新启动5 BSP6 BSP7 vxWorks i 查看进程8 vxWorks ifShow 查看当前网络设置9 vxWorks devs 查看所有的设备10 vxWorks cd "/xxx/" 进入目录11 vxWorks cfIdeInit 每次上电后执行12 vxWorks cfFormat 新卡(或者是未格式化的卡)插入的时候执行,只需执行一次13 vxWorks ll 以详细模式查看当前目录下的文件14 vxWorks ls 以简单模式查看当前目录下的文件15 vxWorks version 查看编译时间16 vxWorks td xxx 终止xxx进程17 vxWorks help 帮助18 vxWorks tffsShow 查看tffs的相关信息19 vxWorks tffsDevFormat 格式化tffs文件系统20 vxWorks showTime 查看系统时间21 vxWorks usrTffsConfig(0,0,"/tffs0") 新增一个tffs格式的文件系统22 vxWorks pwd 查看当前操作所在的目录路径23 vxWorks ping "xx.xx.xx.xx",10,0 ping地址xx.xx.xx.xx,共计10次24 vxWorks pciDeviceShow 查看当前系统中的所有PCI设备25 vxWorks pciHeaderShow,0,xx 查看当前系统中的组号为0、地址号为xx 的PCI设备VxWorks中如果稍有不慎,就可能导致task suspend,如果运气好,shell没有被挂起,则可以通过系统的一些命令追踪一下挂起的原因。
其中用到的主要命令是i、tt、ti、d等。
首先从出错信息开始:0xfc8125b8 (t_Lcd): memPartFree: invalid block 0xfdfc6f38 in partition 0xfe508894.由于memPartFree了一个非法的内存块,导致了任务挂起,我们需要确定到底是哪条语句导致了这个异常的产生,可能是什么原因引起的。
首先,需要通过“i”命令察看任务状态:-> iNAME ENTRY TID PRI STATUS PC SP ERRNO DELAY---------- ------------ -------- --- ---------- -------- --------------- -----tExcTask excTask fdffec80 0 PEND fe3c5f50 fdffeb60 3006b 0tLogTask logTask fdffc298 0 PEND fe3c5f50 fdffc188 0 0tShell shell fdf5fa48 1 READY fe1f3afc fdf5f628 0 0……t_Lcd fe392a30 fc8125b8 100 SUSPEND fe1f24b0 fc8120b8d0003 0……可以看到任务t_Lcd的状态为SUSPEND,即被挂起的状态。
其他各项的含义都比较清楚,ENTRY是任务的入口函数,如果没有symbol,则直接显示地址,TID是任务的ID号,一般用任务的栈底地址表示,PC是当前的指令位置,SP是当前栈顶位置。
然后通过”tt”来追溯函数调用过程:-> tt "t_Lcd"fe3c14f4 vxTaskEntry +68 : fe392a30 ()fe392b48 initLcdComponent+2e8: fe392bdc ()fe392bec initLcdComponent+38c: fe392bfc ()fe39333c initLcdComponent+adc: lcdShowPassWord ()fe398590 lcdShowPassWord+84 : saveModifiedSetting ()fe3a3790 saveModifiedSetting+220: saveSettingValue (1)fe1fd6d0 saveSettingValue+148: fe1fc428 (0, 5, ffffffff)fe1fc888 getDeviceSettingValue+64c: fclose ()fe1aab48 fclose +ec : free ()fe1bb7d4 free +1c : memPartFree ()fe1bb2dc memPartFree +148: taskSuspend ()我们可以了解到函数的调用过程,vxTaskEntry()?->fe392a30()->fe392bdc ()->fe392bfc()->lcdShowPassWord ()->saveModifiedSetting ()->saveSettingValue (1)->fe1fc428 (0, 5, ffffffff)->fclose ()->free ()->memPartFree ()->taskSuspend ()。
其他相关信息:第一栏是发生跳转(即函数调用)后的返回地址,稍后会作详细解释,第二栏是离返回地址最近的symbol和偏移量,一般情况下会是发起调用的那个函数的名称,除非该函数是内部函数,系统中没有symbol,第三栏是被调用的函数。
再来查看一下t_Lcd任务的栈里的内容,从前面的任务信息里已经得知当前栈顶位置为fc8120b8,通过“d”命令显示该地址的内容。
-> d 0xfc8120b0fc8120b0: fc81 25b8 fc81 25b8 fc81 20c8 fe1f 24b0 *..%...%... ...$.* fc8120c0: fe50 8894 fdfc 6f30 fc81 20e8 fe1b b2dc *.P....o0.. .....* fc8120d0: fdf2 6b08 0000 0100 0000 000c 0000 0000 *..k.............* fc8120e0: 0000 0000 fdf1 ed80 fc81 20f8 fe1b b7d4 *.......... .....* fc8120f0: fd9a 3538 fdf1 ed80 fc81 2108 fe1a ab48 *..58......!....H* fc812100: fd9a 3538 fc81 2108 fc81 2238 fe1f c888 *..58..!..."8....* fc812110: 0000 0000 0000 0005 ffff ffff 0000 0600 *................* fc812120: 0000 000a fdf1 ed80 4230 312e 7874 6373 *........B01.xtcs* fc812130: 5f62 7566 2e69 6c32 0000 0000 0000 0000 *_buf.il2........*这里我们可以看到一些熟悉的地址,注意看最后两列,在这里可以找到”tt”中显示的第一栏地址即函数调用的返回地址。