Drivers that are initialized
  • Minimal, Polling UART0 initialized @ 38400 BPS
  • RTC
  • ADC
  • SPI0, SPI1
  • I2C2

Other items that are setup

  • PLL Setup according to desired CPU speed set @ sys_config.h
  • Flash Acceleration setup according to CPU frequency
  • FreeRTOS fully setup, just need to create tasks and start FreeRTOS scheduler
  • Attempt is made to mount SD Card & Flash Memory, so File IO is ready

The following resources are setup before main() is called

  • System Tick Interrupt is setup for FreeRTOS
  • Timer1 is enabled to to provide system timer services that also helps capture IR signal. Timer1 also services the mesh networking task if FreeRTOS is not running. *

Layer 0 sets up the following items

  • Setup the System Memory and CPU Clock
  • Initialize minimal UART0 (polling version) for standard I/O
  • Make a call to high_level_init() followed by call to main()
  • This layer also contains the processor memory map file

Layer 1 provides the FreeRTOS API

  • Some source code is optimized and improved to provide better information.

Layer 2 provides the System Drivers

  • All of your drivers should be placed in this layer.
  • Base classes for UART and I2C are present to help write drivers for additional UARTs

Layer 3 provides Utility functions and classes

  • Utility functions contain embedded tweaks for String and Vector class
  • Other classes include LOGGER, Command Handler, and FreeRTOS wrapper around Timers

Layer 4 provides gateway to the SJ One Board IO that includes

  • FAT File System to access SD Card and on-board Flash Memory
  • Nordic wireless API also exists at this layer
  • Storage class that allows to format and get information about SD and Flash Memory
  • Acceleration, IR, Temperature, and Light Sensors
  • LED Display, LEDs, and Switches class

Layer 5 is where your application code should go including

  • FreeRTOS Tasks
  • High level code that interacts with lower layers