问题标签 [contiki-process]
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.
process - Contiki rtos 中的“产量”是什么意思
我正在使用 contiki 并试图理解其中使用的术语。我在互联网上到处观察某些词,例如产量,无堆栈。一些例子
产生一个过程是否意味着在 Contiki 中执行一个过程。另外,contiki 是无堆栈的是什么意思。
c - 如何在 Contiki 中启动多个进程以增加 CPU 负载
如何并行启动多个进程以造成 CPU 使用率拥塞?以下是我尝试的代码:-
但是,这会产生如下错误:-
请指导我完成。任何造成 CPU 拥塞的替代方式/建议也会有所帮助。
c - Contiki 计时器,无需暂停进程
有没有办法等待计时器到期而不暂停进程?如果我们使用
我们暂停这个过程。假设我们想继续做其他事情,当计时器到期时,检查函数的值是否发生了变化。
如果不可能,我可以开始一个等待的新进程吗?
谢谢你。
contiki - 如何将两个不同的事件发布到同一个 Contiki 进程?
我有两个 Contiki 进程,一个进程,master
,将两个不同的事件发布到第二个进程,send
。发送的第一个事件是PROCESS_EVENT_CONTINUE
,第二个事件是PROCESS_EVENT_MSG
。
我从名为main
.
完整的代码是:
问题是第二个进程send
看到第一个事件(它打印PROCESS_EVENT_CONTINUE
),但它没有看到第二个事件(它不打印PROCESS_EVENT_MSG
)。
换句话说,第二个事件丢失了。但是,如果我删除源代码行
第二个过程send
看到两个事件(都打印出来)PROCESS_EVENT_CONTINUE
。PROCESS_EVENT_MSG
因此,添加此源代码行会导致第二个事件 ,PROCESS_EVENT_MSG
被忽略或丢弃。
为什么添加此源代码行会导致第二个事件丢失?
c - 从 Contiki 中的进程调用进程
在我的代码中,我需要声明两个进程。在第一个过程中,我想这样调用第二个:
但我得到了这个错误:
请问我们如何从另一个进程中调用一个进程?
c - 函数内的互斥 Contiki
因为 Contiki 提供的内置列表不符合我的需求(使用太多内存),所以我已经实现了我自己的列表版本,该版本已经针对我打算如何使用它进行了优化。
在任何时候,都会有一个列表被多个进程/原型线程操作(即添加/删除元素)。但是,添加/删除不会发生在进程/protothread 块中,而是在通过进程/protothread 发起的一系列函数调用调用的函数中调用。
例如,
结果,我不能使用 Contiki 的内置机制来创建互斥锁(通过 using pt-sem.h
),因为它必须出现在进程/原型线程块中。这是因为虽然我可以在实际的进程块中创建一个锁(见下文),但这将导致阻塞进程比必要的时间长得多
这是非常有问题的,因为从我的列表中添加和删除元素不是原子的;如果在向列表中删除或添加元素时发生中断,事情将无法正常运行。是否可以轻松地做我想做的事;即从函数调用中的列表中原子地添加和删除元素,而不是在进程/原型线程块中?
c - 我如何向另一个程序发送消息,并输出它已被接收?
在 Contiki 中,我需要有两个文件,发送方和接收方,发送方将数据包发送到接收方。我的问题是,接收器没有输出已收到数据包。
我在接收数据包中尝试了一个while循环,我什至尝试创建一个函数,但仍然没有任何效果。
我的 sender.c 文件
我的receiver.c 文件
sender.c 文件正在工作,它正在正确发送数据包,问题是接收器似乎没有输出它已被接收。
c - Contiki BR 未执行 tcp_ip 事件,不会在 PROCESS_YIELD 之后进行
我正在尝试在 6LoWPAN 边界路由器中实现 ECC。我正在为所有 udp_sender.c 使用 contiki Wismote 微尘作为发件人,并且边界路由器 (border_router.c) 需要接收一些消息并回复 ECC 密钥。我在 makefile 中禁用了默认服务器 (WITH_WEBSERVER=0) 并启用了 debug_print。
udp_sender.c 正确发送消息,但边界路由器没有收到消息。在border_router.c之后什么都没有执行PROCESS_YIELD
`
这是我的输出
c - 未能尝试使用线程和计时器通过 UDP 发送两条不同的消息
我想从服务器向客户端发送两种不同类型的消息。我已经为这两个不同的消息data_signal()
创建了两个函数。probe_signal()
该data_signal()
函数将定期向客户端发送一个间隔为 的定义消息CLOCK_SECOND * 1
。
我使用一个用于间隔CLOCK_SECOND * 30
持续时间的计时器来定期调用probe_signal()
以向客户端发送不同的消息。
目前该data_signal()
功能正在按预期工作。但是,该probe_signal()
功能不会将其消息发送给客户端。
我通过简单地在客户端打印消息验证了这一点,并且没有收到“probe_signal()”消息。
此外,如果我评论uip_udp_packet_send(conn, buf, strlen(buf));
那一行,data_signal()
我就能收到来自probe_signal()
. 我认为这个问题正在发生,因为我使用的是相同的 UDP 连接
代码:
有人可以指导如何解决这个问题,这将是一个很大的帮助。
c - 无法更新程序中的项目配置变量
我想在运行时更新变量的值,根据某些条件存在于项目配置中。但目前我收到此错误:
error: lvalue required as left operand of assignment
实际代码:
项目配置:
注意:我想根据某些条件在一个文件中更新它,然后在另一个文件中使用更新后的值。