2021-05-07: Bern Kernel v0.1.0

Meeting Information

Subject:Milestone Meeting: Kernel v0.1.0
Date/Time:07.05.2021, 10:00-10:55
Location:MS Teams
Note Taker:Stefan Lüthi

Participants

  • Stefan Lüthi (maintainer)
  • Roger Weber (advisor)

Agenda

  1. Milestone: Kernel v0.1.0
  2. Testing on Host
  3. Remote Tracing Station

Meeting


  1. Milestone: Kernel v0.1.0
    1. Evaluation of milestone objectives:
      1. All issues regarding the milestone are done
      2. The scheduler currently disables all interrupts when active. This leads to high interrupt latency, which is ok for now.
      3. The project is on track, no measures have to be taken
    2. Next Milestone:
      1. Next up are of synchronization primitives (mutex, semaphore) and stack overflow protection
      2. The mutex implementation will be minimal (without priority inversion)
      3. Most RTOS append tasks waiting for a semaphore to a pending list within the semaphore. Because the Bern RTOS isolates task stacks, the pending list must be kept in kernel memory. There are two possible solutions:
        1. The kernel keeps a pending list per synchronization object. Fast but needs list for every sync object.
        2. The kernel keeps one pending list for all sync object. Slower but needs only one list.
    3. Off Topic:
      1. Interrupts in uC/OS are divided into OS aware interrupts and low latency/high priority interrupts. ISR unaware of the OS must not call the RTOS. In Rust we could use procedural macros to see which ISR run outside the RTOS and could possibly check at compile time that the ISR doesn't contain any RTOS API calls.
Action ItemOwnerDue DateDone
Close milestone Kernel v0.1.0Stefan Lüthi07.05.2021
Shorten/Optimize critical sections in the schedulerStefan Lüthideferred
Compare/Evaluate different pending list approaches for sync objectsStefan Lüthi21.05.2021

  1. Testing on Host

    1. Current testing strategy
      • Test API calls on host (off target)
      • Test hardware integration on target (microcontroller)
    2. The CPU architecture is completely isolated (through trait interfaces) and mocks are provided for off target testing
    3. Some unit tests are already running (linked-list), while others pose some issues with the mocking framework
Action ItemOwnerDue DateDone
Implement a unit test for the scheduler to check if mocks are workingStefan Lüthi21.05.2021

  1. Remote Tracing Station
    1. The remote tracing station consists of
      • a SEGGER J-Trace Cortex-M edition trace adapter
      • a SEGGER Cortex-M trace reference board (STM32F407)
      • a Digilent Digital Discovery logic analyzer & pattern generator
      • a PC (running GNU/Linux)
    2. The tracing station can be accessed within the bfh.ch domain.
    3. Tracing allows for in-depth kernel execution and stack analysis.

Next Meeting

according to sprint cycle