Introduction, some technical questions.

Hello everyone,

Let me introduce myself, my name is Mateusz and it is my first message here, in this community I am a student of AGH academy in Cracow. New hardware and software platform design for 6LoWPAN is my subject of Masterthesis. In the following year I am supposed to run a small 6LoWPAN mesh and performwide tests showing the potential of 6LoWPAN. Its usage is seen in industrial sensor meshes. The debate about IoT operational systems revolved around Contiki, RIOT, Thread and ARM EmbedOS. Despite some work has been done around Contiki by previous student, we chose RIOT as it is the fastest developing system.

Up till now, I have done:

  • EFM32WG port to RIOT system - libraries, startup, vectors have been included to the project (locally);
  • usart and timer implementation (console is working, hwtimer too); Generally speaking system is functional but it’s still in the beginning stage.

Couple of topics and some technical questions I have:

  1. UART communication - searching through the libraries, I didn’t find any solution based on interrupt handling or DMA. Is it necessary to implement DMA or Interrupt writing?
  2. What is the difference between thread and posix thread. Which is desired in IoT software?
  3. I was a little confused while exploring the timers libraries. a) hwtimer is essential to Kernel. It is responsible for delays and so on. Hardware timer speed is initialized to 1MHz, tell me what is the longest period needed by it? For example 16 bit timers maximum delay will be around 64ms - it seems to be insufficient. May this timer be clocked much slower, f.e. 36kHz? b) Why we have double wrapper to hwtimer? Some processors have directly implemented hwtimer functions and the rest is done through RIOT/sys/compat/hwtimer_arch.c. c) What is going on in situation where we have 1 hw timer with 3 compare registers but it will be insufficient for networking algorithm to work properly? d) Is there any possibility to initialize not one, but f.e. 4 hwtimers on 4 peripheral timers? I have 4 timers in EFM32WG990, so why use a cpu consuming vtimer wrapper working on one hwtimer while we could make use of MCU peripherals? e) Does RIOT support absolute time? I could make use of RTC peripheral clock for this, in EFM32 MCU, it is not power consuming.
  4. Could anyone explain me the power stages used in RIOT:
  • ON
  • IDLE
  • ACTIVE
  • POWERDOWN
  • OFF EFM32 has 5 energy modes and a couple of peripherals functioning well in low power modes. How can I make use of them in RIOT? Here is a short description: It’smy first letter here. I am not used to mailing list, so in case I misunderstood the form or chose the wrong place to post my questions write me about it. Below are some materials about EFM32 MCU:

Hi Mateusz,

welcome to RIOT! Let me try to answer your questions (see inlined comments).

Cheers, Hauke [1] [2]