ChibiOS on RPi B+

 

What: ChibiOS 17.6 running on an RPI B+. This works as is, but is nevertheless a work in progress.

Where: Download & installation isntructions .

Who: rvanspaa (happy to discuss with anyone interested).

 

Improvements

 

Changes made to original version by Steve Bate

Updated to ChibiOs 17.6

Added GPIO interrupt support.

Added Abort, Prefetch &  Undefined exception handlers, including divide by zero.

Added loop to serial interrupt handler, decreasing write interrupts significantly.

Enabled caching & pagetable support, increasing speed 10 fold.

Added new extended shell commands.

Enabled the floating point coprocessors.

 

 

 

 

 

 

 

Test results

 

 

ch> info

Kernel:       4.0.0

Compiler:     GCC 5.2.1 20151202 (release) [ARM/embedded-5-branch revision 231848]

Architecture: ARMv6Z

Core Variant: ARM11

Port Info:    Pure ARM mode

Platform:     BCM2835

Board:        RPi B+

Build time:   Jul  3 2017 - 16:22:36

ch> test

 

*** ChibiOS/RT Test Suite

***

*** Compiled:     Jul  3 2017 - 16:22:34

*** Platform:     BCM2835

*** Test Board:   RPi B+

 

----------------------------------------------------------------------------

--- Test Case 1.1 (System integrity functionality)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 1.2 (Critical zones functionality)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 1.3 (Interrupts handling functionality)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 1.4 (System Tick Counter functionality)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 2.1 (Thread Sleep functionality)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 2.2 (Ready List functionality, threads priority order)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 2.3 (Priority change test)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 2.4 (Priority change test with Priority Inheritance)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 3.1 (Suspend and Resume functionality)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 4.1 (Semaphore primitives, no state change)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 4.2 (Semaphore enqueuing test)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 4.3 (Semaphore timeout test)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 4.4 (Testing chSemAddCounterI() functionality)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 4.5 (Testing chSemWaitSignal() functionality)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 4.6 (Testing Binary Semaphores special case)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 5.1 (Priority enqueuing test)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 5.2 (Priority inheritance, simple case)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 5.3 (Priority inheritance, complex case)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 5.4 (Priority return verification)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 5.5 (Repeated locks, non recursive scenario)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 5.6 (Condition Variable signal test)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 5.7 (Condition Variable broadcast test)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 5.8 (Condition Variable priority boost test)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 6.1 (Messages Server loop)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 7.1 (Events registration)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 7.2 (Event Flags dispatching)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 7.3 (Events Flags wait using chEvtWaitOne())

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 7.4 (Events Flags wait using chEvtWaitAny())

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 7.5 (Events Flags wait using chEvtWaitAll())

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 7.6 (Events Flags wait timeouts)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 7.7 (Broadcasting using chEvtBroadcast())

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 8.1 (Mailbox normal API, non-blocking tests)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 8.2 (Mailbox I-Class API, non-blocking tests)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 8.3 (Mailbox timeouts)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 9.1 (Loading and emptying a memory pool)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 9.2 (Loading and emptying a guarded memory pool without waiting)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 9.3 (Guarded Memory Pools timeout)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 10.1 (Allocation and fragmentation)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 10.2 (Default Heap)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 11.1 (Threads creation from Memory Heap)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 11.2 (Threads creation from Memory Pool)

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 12.1 (Messages performance #1)

--- Score : 3224829 msgs/S, 6449658 ctxswc/S

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 12.2 (Messages performance #2)

--- Score : 2544687 msgs/S, 5089374 ctxswc/S

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 12.3 (Messages performance #3)

--- Score : 2544686 msgs/S, 5089372 ctxswc/S

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 12.4 (Context Switch performance)

--- Score : 13049688 ctxswc/S

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 12.5 (Threads performance, full cycle)

--- Score : 1976803 threads/S

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 12.6 (Threads performance, create/exit only)

--- Score : 2844671 threads/S

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 12.7 (Mass reschedule performance)

--- Score : 787169 reschedules/S, 4723014 ctxswc/S

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 12.8 (Round-Robin voluntary reschedule)

--- Score : 5625300 ctxswc/S

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 12.9 (Virtual Timers set/reset performance)

--- Score : 9274624 timers/S

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 12.10 (Semaphores wait/signal performance)

--- Score : 15130664 wait+signal/S

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 12.11 (Mutexes lock/unlock performance)

--- Score : 10724760 lock+unlock/S

--- Result: SUCCESS

----------------------------------------------------------------------------

--- Test Case 12.12 (RAM Footprint)

--- System: 120 bytes

--- Thread: 72 bytes

--- Timer : 20 bytes

--- Semaph: 12 bytes

--- Mutex : 16 bytes

--- CondV.: 8 bytes

--- EventS: 4 bytes

--- EventL: 20 bytes

--- MailB.: 40 bytes

--- Result: SUCCESS

----------------------------------------------------------------------------

 

Final result: SUCCESS

ch>

Download and installation instructions