问题标签 [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.

0 投票
2 回答
3064 浏览

process - Contiki rtos 中的“产量”是什么意思

我正在使用 contiki 并试图理解其中使用的术语。我在互联网上到处观察某些词,例如产量,无堆栈。一些例子

产生一个过程是否意味着在 Contiki 中执行一个过程。另外,contiki 是无堆栈的是什么意思。

0 投票
1 回答
973 浏览

c - 如何在 Contiki 中启动多个进程以增加 CPU 负载

如何并行启动多个进程以造成 CPU 使用率拥塞?以下是我尝试的代码:-

但是,这会产生如下错误:-

请指导我完成。任何造成 CPU 拥塞的替代方式/建议也会有所帮助。

0 投票
2 回答
486 浏览

c - Contiki 计时器,无需暂停进程

有没有办法等待计时器到期而不暂停进程?如果我们使用

我们暂停这个过程。假设我们想继续做其他事情,当计时器到期时,检查函数的值是否发生了变化。

如果不可能,我可以开始一个等待的新进程吗?

谢谢你。

0 投票
1 回答
1390 浏览

contiki - 如何将两个不同的事件发布到同一个 Contiki 进程?

我有两个 Contiki 进程,一个进程,master,将两个不同的事件发布到第二个进程,send。发送的第一个事件是PROCESS_EVENT_CONTINUE,第二个事件是PROCESS_EVENT_MSG

我从名为main.

完整的代码是:

问题是第二个进程send看到第一个事件(它打印PROCESS_EVENT_CONTINUE),但它没有看到第二个事件(它不打印PROCESS_EVENT_MSG)。

换句话说,第二个事件丢失了。但是,如果我删除源代码行

第二个过程send看到两个事件(都打印出来)PROCESS_EVENT_CONTINUEPROCESS_EVENT_MSG因此,添加此源代码行会导致第二个事件 ,PROCESS_EVENT_MSG被忽略或丢弃。

为什么添加此源代码行会导致第二个事件丢失?

0 投票
1 回答
747 浏览

c - 从 Contiki 中的进程调用进程

在我的代码中,我需要声明两个进程。在第一个过程中,我想这样调用第二个:

但我得到了这个错误:

请问我们如何从另一个进程中调用一个进程?

0 投票
1 回答
245 浏览

c - 函数内的互斥 Contiki

因为 Contiki 提供的内置列表不符合我的需求(使用太多内存),所以我已经实现了我自己的列表版本,该版本已经针对我打算如何使用它进行了优化。

在任何时候,都会有一个列表被多个进程/原型线程操作(即添加/删除元素)。但是,添加/删除不会发生在进程/protothread 块中,而是在通过进程/protothread 发起的一系列函数调用调用的函数中调用。

例如,

结果,我不能使用 Contiki 的内置机制来创建互斥锁(通过 using pt-sem.h),因为它必须出现在进程/原型线程块中。这是因为虽然我可以在实际的进程块中创建一个锁(见下文),但这将导致阻塞进程比必要的时间长得多

这是非常有问题的,因为从我的列表中添加和删除元素不是原子的;如果在向列表中删除或添加元素时发生中断,事情将无法正常运行。是否可以轻松地做我想做的事;即从函数调用中的列表中原子地添加和删除元素,而不是在进程/原型线程块中?

0 投票
1 回答
100 浏览

c - 我如何向另一个程序发送消息,并输出它已被接收?

在 Contiki 中,我需要有两个文件,发送方和接收方,发送方将数据包发送到接收方。我的问题是,接收器没有输出已收到数据包。

我在接收数据包中尝试了一个while循环,我什至尝试创建一个函数,但仍然没有任何效果。

我的 sender.c 文件

我的receiver.c 文件

sender.c 文件正在工作,它正在正确发送数据包,问题是接收器似乎没有输出它已被接收。

0 投票
0 回答
169 浏览

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

`

这是我的输出

0 投票
1 回答
343 浏览

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 连接

代码:

有人可以指导如何解决这个问题,这将是一个很大的帮助。

0 投票
1 回答
44 浏览

c - 无法更新程序中的项目配置变量

我想在运行时更新变量的值,根据某些条件存在于项目配置中。但目前我收到此错误: error: lvalue required as left operand of assignment

实际代码:

项目配置:

注意:我想根据某些条件在一个文件中更新它,然后在另一个文件中使用更新后的值。