vxworks中tickGet函数获取的tick是从0开始

vxworks中tickGet函数获取的tick是从0开始,第1张

从tick开始。

它是一个数值量,本身不能代表时间。如果说要知道tick增加一个代表多少时间的话,那就要看系统的时钟率了。

在Shell下,sysClkRateGet可以返回这个始终率的值。比如60。啥意思呢,就是1秒钟产生60个tick。 *** 作系统调度是基于这个tick的,这在硬件上是个优先级很高(除了NMI以外都比它低)的时钟中断。如果你的始终率是60那么一个tick代表的时间就是1000ms/60=1667ms。也就是tick增加一个所花的时间1667毫秒。

那么你要想你的tick是1ms一下的话,那不就是把时钟率设置成1000就可以了,因为1000ms/1000=1嘛。可以用sysClkRateSet(1000)来达到此目的。嵌入式系统嘛,啥都你自己整,时钟率高了, *** 作系统调度频率就很高,软件响应能力增强,但硬件中断的处理就不一定是实时的了。

时钟率不是越大越好。但太小了绝对好不起来。1ms还是不够用?用辅助时钟吧。它也中断。用起来一样。不过,值得注意的是,千万别整很多东西挂到一个1秒钟执行1000次以上的中断里面,CPU耗不起啊。所以1ms以下的精确定时,推荐用硬件做。注意啊,实时 *** 作系统是软件,怎么说它也是软的。

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

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

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

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

3、与网络相关的命令

ifShow ["ifname"] - show info about network interfaces

inetstatShow - show all Internet protocol sockets

tcpstatShow - show statistics for TCP

udpstatShow - show statistics for UDP

ipstatShow - show statistics for IP

icmpstatShow - show statistics for ICMP

arpShow - show a list of known ARP entries

mbufShow - 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 statistics

routeAdd "destaddr","gateaddr" - add route to route table

routeDelete "destaddr","gateaddr" - delete route from route table

说明:上述大多数命令都可以在help、netHelp中查到

客户端与服务器建立连接

客户端调用connect函数时,已经知道服务器的IP地址以及端口号

服务器中accept返回的套接字中,包含客户端的IP地址以及端口号

建立的连接是相互的,所以可以互通消息。

VxWorks 是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时作业系统。Tornado 是WRS 公司推出的一套实时作业系统开发环境,类似MicrosoftVisual C,但是提供了更丰富的调试、仿真环境和工具。

基本介绍 中文名 :威克沃 外文名 :VxWorks 公司 :Wind River System(风河公司 ) 产品类型 :实时作业系统 开发时间 :1983年 产地 :美国 开发环境 :Tornado/Wind River Workbench 简介,组成,核心,I/O 系统,档案系统,网路支持,工具,新架构,产品, 简介 VxWorks 作业系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时作业系统(RTOS),是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的核心以及友好的用户开发环境,在嵌入式实时作业系统领域占据一席之地。它以其良好的可靠性和卓越的实时性被广泛地套用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、d道制导、飞机导航等。在美国的 F-16、FA-18战斗机、B-2 隐形轰炸机和爱国者飞d上,甚至连1997年4月在火星表面登入的火星探测器、2008年5月登入的凤凰号,和2012年8月登入的好奇号也都使用到了VxWorks上。 组成 VxWorks作业系统有以下部件组成: 核心 多任务调度(采用基于优先权抢占方式,同时支持同优先权任务间的分时间片调度) 任务间的同步 进程间通信机制 中断处理 定时器和记忆体管理机制 I/O 系统 VxWorks 提供了一个快速灵活的与 ANSI C 兼容的 I/O 系统,包括 UNIX 标准的Basic I/O(creat(),remove(),open(),close(),read(),write(),and ioctl()),Buffer I/O (fopen(),fclose(),fread(),fwrite(),getc(),putc()) 以及POSIX 标准的异步 I/O。VxWorks 包括以下驱动程式:网路驱动、管道驱动、RAM盘驱动、SCSI驱动、键盘驱动、显示驱动、磁碟驱动、并口驱动等 。 档案系统 支持四种档案系统:dosFs,rt11Fs,rawFs 和 tapeFs 支持在一个单独的 VxWorks 系统上同时并存几个不同的档案系统。 板级支持包 BSP(Board Support Package) 板级支持包向VxWorks作业系统提供了对各种板子的硬体功能 *** 作的统一的软体接口,它是保证VxWorks作业系统可移植性的关键,它包括硬体初始化、中断的产生和处理、硬体时钟和计时器管理、局域和汇流排记忆体地址映射、记忆体分配等等。每个板级支持包包括一个 ROM 启动(Boot ROM)或其它启动机制。 网路支持 它提供了对其它VxWorks系统和TCP/IP网路系统的"透明"访问,包括与BSD套接字兼容的编程接口,远程过程调用(RPC),SNMP(可选项),远程档案访问(包括客户端和服务端的NFS机制以及使用RSH,FTP 或 TFTP的非NFS机制)以及BOOTP 和代理ARP、DHCP、DNS、OSPF、RIP。无论是松耦合的串列线路、标准的乙太网连线还是紧耦合的利用共享记忆体的背板汇流排,所有的 VxWorks 网路机制都遵循标准的 Inter 协定。 工具 在 Tornado 开发系统中,开发工具是驻留在主机上的。但是也可以根据需要将基于目标机的Shell 和装载卸载模组加入 VxWorks。 嵌入式Vxworks系统的主要套用领域主要有以下几方面: 1.数据网路:如:乙太网交换机、路由器、远程接入伺服器等 2.远程通讯:如:电信用的专用分组交换机和自动呼叫分配器,蜂窝电话系统等 3.医疗设备:如:放射理疗设备 4.消费电子:如:个人数字助理等 5.交通运输:如:导航系统、高速火车控制系统等 6.工业:如:机器人 7.航空航天:如:卫星跟踪系统 8.多媒体:如:电视会议设备 9.计算机外围设备:如:X终端、I/O 系统等 总之,VxWorks的系统结构是一个相当小的微核心的层次结构。核心仅提供多任务环境、进程间通信和同步功能。这些功能模组足够支持VxWorks在较高层次所提供的丰富的性能的要求。 VxWorks60版本新增功能: 风河通用平台VxWorks版(GPP)是所有设备软体应用程式的首要基础平台。此通用平台基于全球套用最广泛的运行时作业系统--VxWorks而构建。最新版本(VxWorks 61)中的各运行时组件可向后兼容VxWorks的早期版本。此最新版本包含了增强的记忆体保护、容错管理,并支持最新的网路和安全协定以及设备与企业间的连通性。 通用平台组合了最为严格和确定性的实时作业系统,其产品完全集成了现有的产品开发解决方案,从而能够满足贵企业的各种苛刻需求。它无缝集成了业界标准的RTOS(VxWorks 61)、功能强大的开发套件(Workbench 23)、网路和安全协定、用于工程人员快速启动项目的培训以及迅速扩展您开发团队综合技能的各种专业服务。 新增功能: 通用平台VxWorks 31版扩展了的30功能:它扩展了架构支持、多处理器讯息处理(基于业界标准的开源式TIPC协定)、增强了网路堆叠以及支持风河Workbench的最新版本。 新架构 - ARM 9,ARM 11 - Intel Pentium M - Intel XScale - MIPS - PowerPC - Renesas SuperH-4,SuperH-4a 支持通用平台VxWorks 30版中的所有架构和BSP 多处理器讯息通道(基于TIPC协定) 网路堆叠包括PPP、PPPoE以及多链路PPP 风河Workbench 23 产品 WindNet SNMP WindNet STREAMS WindNet 第三方产品,包括 OSI、SS7、ATM、Frame Relay、CORBA、ISDN、X25、 CMIP/GDMO、分散式网路管理等。 这些产品扩展了VxWorks的网路特性,并增强了嵌入式处理器的网路特性 虚拟记忆体( VxVMI)与共享记忆体(VxMP) VxVMI 为带有 MMU 的目标板提供了虚拟记忆体机制。 VxMP 提供了共享信号量,讯息伫列和在不同处理器之间的共享记忆体区域。 目标代理(Target Agent) 目标代理遵循 WBD(Wind Debug)协定,允许目标机与主机上的 Tornado 开发工具相连。在目标代理的预设设定中,目标代理是以 VxWorks 的一个任务tWdbTask 的形式运行的。 Tornado 目标伺服器(Target Server)向目标代理发送调试请求。调试请求通常决定目标代理对系统中其它任务的控制和处理。预设状态下,目标伺服器与目标代理通过网路进行通信,但是用户也可以改变通信方式。 实用库 VxWorks 提供了一个实用例程的扩展集,包括中断处理、看门狗定时器、讯息登录、 记忆体分配、字元扫描、线缓冲和环缓冲管理、炼表管理和 ANSI C 标准。 是一个实时作业系统。

vxWorks下如果要获得网络的功能,需要在编译vsb project的时候打开IPv4或者IPv6的协议栈,然后编译;然后在vip project中加入网络的相关component,其中有IFCONFIG的component,然后build,启动之后的target,可以使用ifconfig或者“cmd ifconfig -a” 方式来查看vxWorks系统下网络的状态,当然也可以通过ifconfig命令来配置。

方向有点不对。

获取本机IP地址,一般是不通过socket这个途径,当然这个途径可以获得地址,但一般不会这么做。你可以查下getsockbyname这个函数。

至于这里为什么会显示0000,可能是你在SOCKET理解上有点出入。

my_addrsin_addrs_addr在不同的情况有不同的含义,如果是TCP监听套接口,则它的含义是比较的标准,而不是本机的IP。

比如你的机器,它有多个地址,首先127001是它的回路地址,本机可以通过127001来访问自己。其次他可能有个内部局域网地址,比如说是19216815,局域网上机器都可以通过这个地址访问你的机器。还有可能你的机器有个外网地址,比如202101563,internet上的机器都可以通过这个地址访问你的机器。

接下来说下my_addrsin_addrs_addr的含义:

如果你创建了TCP监听套接口,而且你执行的是 my_addrsin_addrs_addr赋值为127001,意思就是只有目的地址为127001的包才会被监听套接口获取,这就是一种后果,因为127001是回路地址,根本就不会出网卡,如果其它机器输入127001最后会被送回自己本机,包根本就不会到达你的机器,也就是这种接口只能接受自己本地的包。如果内网的机器发送包目的地址是你的局域网地址19216815,而且端口也是你这个套接口监听的端口,可惜的是这个端口只收目的地址是127001的包,19216815的包会被丢弃。这种接口最终结果就是只收本机的包。

如果绑定的是19216815的地址,则任何目的地址是19216815的包都会被接受(当然端口必须是一致)。这种只能局域网上的机器包会被你的端口收到,外网则不行,原因很简单,外网的19216815的包是不可能通过路由到达你的机器。

如果是你的外网地址,则同理任何外网地址到达的包都会被收到。

如果是INADDR_ANY,则意思就是不管目的地址是什么,都会被你接受。可能有点不可思议,但放心,路由器不会让什么地址的包都会到达你的主机的。

总之就是这个是监听的标准,而不是你的IP,你甚至可以把它设置成别人的IP地址,但可惜的是别人的IP地址的包,路由器是不会转发给你的,所以你什么都不会收到。(至少在当今以太网作为局域网的天下你是收不到的,路由器不转发。不知道令牌环网或者其它的局域网会怎样,当然即使是以太网也可以使用ip欺骗的技术,这有点扯远了)。

不知道我说请不清楚。

以上就是关于vxworks中tickGet函数获取的tick是从0开始全部的内容,包括:vxworks中tickGet函数获取的tick是从0开始、vxworks6.8系统命令、请教vxworks的socket通信编程,十分着急,问题已解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10150285.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存