分享

vxWorks使用过程中的100个疑问与解答(下)

 软件定义世界 2023-04-20 发布于上海

在项目中需要适配vxWorks,自己总结的遇到的问题与解决方法,欢迎大家交流vxWorks使用心得。

51

Q:

如何显示板卡CPU、DDR等信息?

A:

coreShow

52

Q:

如何显示vxWorks Image版本号?

A:

version

53

Q:

与任务相关的命令

A:

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 也可以为任务名]

54

Q:

与调试系统相关的指令

A:

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、8

m addr,[width] -按width宽度修改addr地址的内容,width可以是1、2、4、8

memShow 1 -显示系统分区上空闲和已分配空间的总数等

printErrno value -打印系统定义的错误码的宏

55

Q:

vxWorks引导后的shell型命令,首先可以使用help查看所有指令来学习

A:

56

Q:

如何启动rtp程序?

A:

1).命令行启动rtpsp  /ata0a/rtptest.vxe

2).应用程序里面启动

constchar*argv[]={“/ata0a/测试.vxe“,NULL}

rtpSpawn(argv[0],argv,NULL,100,0x10000,0,0)

57

Q:

环境变量

A:

使用 shConfig 命令修改环境变量:

shConfig(char *config) -参数为NULL时,显示当前Shell的配置参数,否则设置其参数

SH_GET_TASK_IO

为调用函数设置I/O重定向。ON:重定向到WindSh;OFF:I/O显示到目标机控制台。

LD_PATH

为模块设置搜索路径用“”隔开。例如ld 命令提交后Shell搜寻模块的路径顺序为首先在当前目录然后到LD_PATH设置的路径。

LD_SEND_MODULES

设置load模式。

以下3个用不到

LD_CALL_XTORS

LD_COMMON_MATCH_ALL

DSM_HEX_MOD

58

Q:

显示任务切换调用例程列表

A:

taskSwitchHookShow

59

Q:

显示一个任务的调用状况,解析堆栈

A:

60

Q:

DKM模块的加卸载指令

A:

ld < test.out 加载test.out模块到系统

unld id  卸载模块

61

Q:

显示系统中所有加载的模块

A:

moduleShow

62

Q:

修改bootrom启动参数

A: 

63

Q:

显示POSIX消息队列的信息

A:

mqPxShow

64

Q:

显示POSIX信号量的信息

A:

SemPxShow

65

Q:

显示信号量的信息

A:

SemShow

66

Q:

显示队列的使用状况

A:

msgQShow

67

Q:

显示host列表

A:

hostShow

68

Q:

显示ip信息

A:

ipstatShow

69

Q:

显示路由信息

A:

routestatShow

70

‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍Q:

显示tcp,udp信息

A:

tcpstatShow,udpstatShow

71

‍‍‍‍Q‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍:

显示连接信息

A:

inetstatShow

72

Q:

显示ftp信息

A:

tftpInfoShow

73

Q:

文件操作

A:

cd

改变工作目录

ls

列出工作目录下的文件

pwd

显示当前工作目录

copy

拷贝文件

copy “host:cnset.cfg”“/HDisk/cnset.cfg”

remove

删除文件

remove “/HDisk/trace/error.log”

rename

更改文件名称

74

Q:

显示历史shell指令

A:

shellHistory

75

Q:

释放shell内动态分配的字符指针。参数为0,则打印当前所有字符指针;参数为-1,则释放所有指针

不过在shell中直接声明的字符指针,应该用free()来释放

76

Q:

打印指定RTP中的文件描述符?

A:

iosRtpFdShow

77

Q:

打印IO流中fp的信息

A:

stdioShow

78

Q:

打印dosFs volume configuration

A:

dosFsShow

79

Q:

网络常见的错误码

A:

80

Q:

vxWorks 网络抓包

A:

命令行切换到C模式,然后输入pcap命令即可实现捕获指定网口的网络数据

81

Q:

workbench怎么将生成的文件自动拷贝对应的目录

A:

1.写.bat脚本,右键运行

2.添加到POST_BUILD_RULE

82

Q:

如何在shell切换到其它目录后回到FTP镜像目录

A:

> cd "host:"

83

Q:

BOOT命令

A:

BOOT命令,启动时使用,用于查看和修改启动参数等操作。

p,打印配置

c, 修改配置

?, 帮助信息

@,加载内核

Ctrl+X,重新启动

84

Q:

列举PCI设备

A:

PciDeviceShow

85

Q:

系统里面修改驱动参数

A:

bootChange

86

Q:

vxWorks cache一致性问题,可使用如下函数解决

A:

实际flush()/invalidate()函数有如下两组,功能相同稍有区别:

组1:CACHE_DMA_FLUSH()函数和CACHE_DMA_INVALIDATE()函数

组2:cache Flush()函数和cacheInvalidate()函数

87

Q:

在vxworks6.x下添加一个新的驱动 一般需要添加6个文件 分别是

A:

target/src/hwif/xxx 下 

xxx.c 和 xxx.mk  --- 源文件和makefile文件

target/src/hwif/h/xxx 下 

xxx.h -- 头文件

target/config/comps/vxworks下

xxx.cdf -- cdf文件用于被workbench识别

target/config/comps/src/hwif下

xxx.dc xxx.dr - dc dr用于命令行编译

Eg: 新加一个串口驱动

vxbUccSio.c

vxbUccSio.h

vxbUccSio.mk

vxbUccSio.dc

vxbUccSio.dr

40vxbUccSio.cdf

88

Q:

如何判断是什么文件系统?

A:

chkdsk() & hrfsChkDsk() 和 dosFsShow()

STATUS dosFsShow

(

void *  pDevName, 

u_int   level     

)

STATUS chkdsk

(

const char *    pDevName,   

u_int    repairLevel,   

u_int    verbose   

)

STATUS hrfsChkDsk

(

char *      path,         

int         verbLevel,     

int         flags         

)

89

Q:

添加中断show

A:

# define INCLUDE_ISR_OBJECTS

# define INCLUDE_ISR_SHOW

# define INCLUDE_ISR_DEFER

90

Q:

添加EDR信息

A:

#define INCLUDE_EDR_SHOW

#define INCLUDE_EDR_ERRLOG

#define INCLUDE_EDR_PM

#define INCLUDE_EDR_SYSDBG_FLAG

91

Q:

显示ICMP信息

A:

icmpstatShow

92

Q:

vxWorks 存储分布

A:

93

Q:

在代码里面查找符号表,然后加载

A:

status = symFindByName(sysSymTbl, "test", (char *)&task_entry, ptype);

task_entry();

94

Q:

长跳转指令

A:

Relocation value does not fit in 26 bits

-Xcode-absolute-far编译使其支持长跳转指令

95

Q:

查看中断异常

A:

-> sysExcMsg sysExcMsg = 0x1d197f8: value = 17152 = 0x4300

-> d 0x4300

96

Q:

如何防止临界区被中断打断

A:

(1)intLock():使中断禁止

(2)intUnlock():开中断

可以用intLock/intUnlock提供最高级别的互斥机制以保护临界区域不被打断

97

Q:

vxWorks怎么通过文件IO访问设备的

A:

98

Q:

vxWorks启动流程

A:

99

Q:

vxWorks默认的注释类型是“”在使用C++类型的注释“//”,就有可能报错。

A:

解决方法:移除-ansi开关。可是怎么移除呢?对许多对编译器不太了解的人可能看了FAQ了不知道怎么办。
下面具体讲解:
在vxWorks的工程里有build这个选项,字体变黑的就是你选的编译类型以default为例,双击default(默认的),在
c/c++compiler和assember里将-ansi去掉,然后再OK!
100

Q:

vxWorks 系统编程中任务级与中断级的通讯如何实现?

A:

中断是由硬件触发,软件的作用只是将中断服务例程(ISP)与中断事件连接起来.

1.使能中断,函数intEnable().

2.用intConnect()登记中断号,和相应的中断例程ISR.

这样一旦有中断发生,系统自动跳转到相应位置执行ISR.

前情回顾




重新审视你的”系统工程“——SpaceX对系统工程的颠覆认知


美军大幅度强化SCA无线电装备的研发投入


美国海军花费1.42亿美元将机载战术训练系统移植到SCA4.1架构


北约将为E-3A“哨兵”预警机配备新型软件定义无线电设备

vxWorks使用过程中的100个疑问与解答(上)



    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多