Tag: contiki

如何从随机数发生器返回中间位?

我有一个random_rand()函数,它产生一个介于0和RANDOM_RAND_MAX之间的随机数。 RANDOM_RAND_MAX定义为65535。 我想使用random_rand()结果的中间位而不是最低位,以便我可以更好地进行随机化。 你能告诉我一个快速的方法吗? 谢谢

RTIMER_NOW()和clock_time()之间的Contiki差异

我想知道它们之间的区别 RTIMER_NOW() 和 clock_time() function。 我可以将它们返回的值存储在int变量中吗? 他们是否将参考整个模拟的时间或称为调用它们的单个微尘返回? 如果mote在模拟中的第一个事件后5秒开始其主过程,这些函数是否返回模拟值或(模拟值 – 5秒)? 谢谢。

在嵌入式设备上投射指针

在32位嵌入式系统上投射和修改指针时遇到了一个奇怪的问题(运行contiki OS的 redbee econotag是特定的)。 uint32_t array[2]; array[0] = 0x76543210; array[1] = 0xfedcba98; uint8_t* point = ((uint8_t*)array)+1; printf(“%08x \n”, *(uint32_t*)point ); 在我的电脑上输出: 98765432 嵌入式设备上的输出: 10765432 我的计算机的行为与我期望的一样,但嵌入式设备似乎在它到达单词的末尾时回滚。 为什么会这样?

在contiki程序中使用malloc

考虑以下contiki计划。 #include #include”contiki.h” #include static char *mem; static int x; /*—————————————————————————*/ PROCESS(test, “test”); AUTOSTART_PROCESSES(&test); /*—————————————————————————*/ PROCESS_THREAD(test, ev, data) { PROCESS_BEGIN(); printf(“before malloc\n”); mem=(char*)malloc(10); for(x=0;x<10;x++) mem[x]=x+1; printf("after malloc\n"); PROCESS_END(); } 当这个程序编译为native / z1 / wismote / cooja时,它执行得很好并且两个printf语句都被执行,但是当编译为mbxxx目标,然后在硬件上执行时,只执行第一个printf语句并且代码被卡住了在malloc。 这种行为背后的任何猜测或原因? 我也在这里附加GDB跟踪。 (gdb) mon reset init target state: halted target halted due to debug-request, current mode: Thread xPSR: 0x01000000 […]