问题标签 [vxworks]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
1003 浏览

linux - 所有任务的单一公共地址空间

如何为所有任务提供单一的公共地址空间。如果它像这样发生,我们可以避免虚拟到物理内存的映射。

如果所有任务共享公共地址空间,那么我们如何避免虚拟到物理内存映射。

0 投票
3 回答
2770 浏览

c++ - 常用于 RTOS 的设计模式 (VXworks)

任何人都可以帮助我了解 RTOS 常用的设计模式吗?
在 VXworks 中,哪种模式更可取?

0 投票
0 回答
160 浏览

c - 在 VxWorks 的 ARMARCH5gnu 中添加 -fno-omit-frame-pointer 选项会导致随机崩溃

在编译期间添加 -fno-omit-frame-pointer 选项时,应用程序会随机崩溃。

这个问题发生在 VxWorks 的 ARMARCH5gnu 架构中。

解决此问题的任何指示都会有所帮助。

0 投票
5 回答
1435 浏览

c - 单元测试 UDP 套接字处理代码

是否有任何“好”方法可以使等待 recvfrom() 调用的线程解锁并返回错误?

这样做的动机是为包含读取 UDP 数据报的单元的系统编写单元测试。其中一个分支处理 recvfrom 调用本身的错误。代码不需要区分不同类型的错误,它只需要设置一个标志。

我曾想过从另一个线程关闭套接字,或者关闭它,以导致 recvfrom 返回错误,但这似乎有点笨拙。我在其他地方看到过发送一个过大的数据包可以做到这一点,因此设置了一个实验,将一个 16K 的缓冲区发送到一个等待 4K 的 recv,但这并没有导致错误。recvfrom 只返回 4096,表示它已经获得了那么多字节。

0 投票
3 回答
4643 浏览

vxworks - 在 VxWorks 6.7 中从内部代码执行脚本

在 VxWorks 5.5.1 中,您可以使用 execute 命令运行脚本。在 VxWorks 6.7 中不再支持执行命令。如果有替代品,现在有人吗?我是从内部代码而不是命令行专门谈论的。

0 投票
4 回答
8863 浏览

vxworks - VxWorks 调度程序是如何执行的?

想知道如何调用调度程序以便它可以切换任务。就像它的抢占式调度或循环调度一样——调度程序应该参与进来以进行任何类型的任务切换。假设一个低优先级的任务有一个无限循环——调度器什么时候干预并切换到一个更高优先级的任务?

查询是: 1.谁调用调度器?[在 VxWorks 中] 2. 如果它被定期调用 - 该机制是如何实现的?

提前致谢。

——阿什温

0 投票
4 回答
1302 浏览

c# - tcp/ip 接受不返回,但客户端返回

服务器:
vxworks 6.3
调用通常的套接字、绑定、侦听,然后:

客户端:
.NET 2.0
TcpClient 构造函数连接到采用字符串主机名和 int 端口的服务器,例如:

当服务器在 windows (native c++) 中编译和执行时,这工作正常。

间歇性地,TcpClient 的构造函数将返回实例,不会抛出任何异常,但 vxWorks 中的 accept 调用不会随客户端 fd 返回。tcpstatShow 表示没有接受。

什么可能使 TcpClient 构造函数(调用“Connect”)返回实例,而服务器上的接受调用不返回?它似乎与系统在后台执行的操作有关 - 当服务器忙于将数据持久保存到闪存或客户端尝试连接时的 NFS 共享时,似乎更有可能出现此症状,但当它发生时可能会发生也不是。

我尝试调整运行接受的线程的优先级,
我查看了“听”中队列的大小。够了。
可用的文件描述符的总数应该足够了(虽然还没有验证这一点,早上第一件事)

0 投票
1 回答
2707 浏览

drivers - 如何在 VxWorks 中配置 PCI-to-PCI 桥接设备?

我正在使用 VxWorks 中的板级支持包 (BSP),它使用 pciAutoConfig() 来配置 PCI 总线。当我将以太网控制器卡添加到总线时,pci 显示例程不显示该卡。

使用总线分析器,我发现以太网适配器实际上由一个 PCI-to-PCI 桥组成,桥后面有两个以太网控制器。BSP 似乎没有正确处理以太网控制器包含的 PCI 到 PCI 桥接器。

我的问题是,我应该查看哪些库和配置来配置 PCI-to-PCI 桥接器?我认为这些调用将进入现有 pciAutoConfig() 调用所在的 sysHwInit() 中。

pciAutoCfgCtl() 有一个 PCI_BRIDGE_PRE_CONFIG_FUNC_SET 参数,它指向一个用户定义的函数来配置总线。这是唯一的方法吗?或者 VxWorks 库中有什么东西可以为我做到这一点?

0 投票
1 回答
444 浏览

c++ - 嵌入式平台上的线程类内存分配异常

我遇到了一个奇怪的问题,我已经能够找到一些问题,但我仍然看不到原因。也许这里有人可以提供一些启示?

我正在使用 PPCgnu604 工具链在 C++ 中开发的 VxWorks 5.5 之上的 PowerPC 处理器上运行。

我有这样的课:

当我的应用程序启动时,它将动态分配 MyClass 的一个实例并生成一个指向其“运行”函数的线程。本质上,它只是坐在那里轮询命令,并在收到后返回一个状态。

请注意,这是该课程的精简版。为简洁起见,还有许多其他方法和变量被省略。

我看到的问题是,当命令和状态消息都被定义为私有类成员时,尽管事实上不应该有动态内存分配,但我将在内存中的可用字节中得到改变。这很重要,因为这发生在需要确定性和速率安全的程序中。

如果我将一个或两个消息声明移动到运行函数中,它可以正常工作而无需额外分配!

在我对 C++ 声明和内存分配的理解中,我一定遗漏了一些基本的东西。我的理解是,我动态实例化的类实例在创建时将完全分配在堆上(包括所有成员变量)。我在这里看到的不同之处在于,将消息声明移动到 run 函数会将它们放在堆栈上。在这种情况下,堆的大小足以容纳整个类的大小。为什么在使用特定部分之前似乎没有分配足够的内存?

消息类没有自己的动态分配。(如果他们这样做了,我希望移动声明不会改变这种情况下的行为,我仍然会看到堆大小的变化。)

为了监控内存分配,我使用了以下 VxWorks memLib(或 memPartLib)调用:

编辑:

澄清一下,MyClass 对象在初始化例程中被实例化和初始化,然后代码进入速率安全处理。在此期间,在通过串行线路接收命令消息(与命令或状态消息对象的第一次交互)时,分配额外的内存(或者更确切地说,空闲字节数减少)。这很糟糕,因为动态内存分配不是确定性的。

正如我所描述的,我已经能够通过移动类变量来解决这个问题。

0 投票
5 回答
6569 浏览

c++ - 如何在 C/C++ 中接收原始的第 2 层数据包?

如何在 POSIXy C++ 中接收第 2 层数据包?数据包只有 src 和 dst MAC 地址、类型/长度和自定义格式的数据。它们不是 TCP 或 UDP 或 IP 或 IGMP 或 ARP 或其他任何东西——它们是硬件人员给我的自制格式。

socket(AF_PACKET, SOCK_RAW, IPPROTO_RAW)永远不会从它的recvfrom().

我可以很好地发送,无论我向网络堆栈抛出什么选项,我都无法接收。

(平台是 VxWorks,但我可以翻译 POSIX 或 Linux 或其他...)

接收代码(当前化身):