Software
RTOS options
Below is a list of RTOSes supporting the EFM32 microcontroller.
Name | Footprint | Licence | Remarks |
FreeRTOS | to be tested | Modified GPL | Tickless mode example project available No integrated USB stack, need to port CMSIS stack example FAT FS example exists (not for EFM32) Power management for EFM32 |
uCOS-II/III | to be determined | restrictive in commercial cases | Examples exist (but not for GCC) USB stack available (not free, not with EFM32-targeted example) FAT FS library available (not free, not with EFM32-targeted example) |
RTX | < 4.0 KB | BSD | Tickless mode example projects exist *Compliant with CMSIS-RTOS standard No integrated USB stack, need to port CMSIS stack No integrated FAT FS |
TNKernel | to be tested | BSD | No apparent direct support for EFM32 (but supports Cortex-M3) MSc thesis using TNKernel on EFM32 USB stack available (unkown quality) file system available (unkown quality) |
Device drivers
All devices need implementation of initalization and power control routines. Below is a list of required features for particular devices that are expected to be used in higher layers of software:
LCD (Sharp LS013B7DH03)
- sending pixel data
GPS (Quectel L70)
- fetching NMEA frames over serial port
- handling private protocol (system messages, commands, settings, etc.)
Sensors
- Accelerometer & compass (ST LSM303C)
- Pressure (Freescale MPL3115A2 or Meas. Spec. MS5803-01BA)
- Ambient light (Maxim 44009)
- reading sensor values (raw & human readable values in appropriate units)
- interrupt settings (if connected to MCU)
- FIFO reading & control
- control of sensitivity
- selftest
Fuel gauge (Maxim MAX17047)
- reading voltage, drawn current, average current, remaining time to
empty, remaining capacity, temperature of battery
- reading/writing values of other registers
SD card
- checking status (presence, write-lock)
- reading/writing blocks
Backlight
- setting level (preferrably controlled by hardware with PWM)
Libraries
Functionality expected to be offered by respective libraries:
UI
- drawing primitives (lines, boxes, circles)
- displaying text
- reading state of buttons
- playing simple sounds (or just beeping)
Sensors
- collecting data from sensors
- conversion between units
- modifying settings
- gestures detection? (maybe should be done as a separate library)
GPS
- reading current location
- getting time
- logging/following routes
- connection quality information
- direction (0-360^ or N, W, E, S)
NMEA parsers:
Filesystem
Operations on SD card (probably in FAT file system):
- listing/copying/moving/deleting of files & directories
- reading/writing files
- formatting?
To be evaluated:
- http://elm-chan.org/fsw/ff/00index_e.html
- https://code.google.com/p/fullfat/
- http://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_FAT_SL/FreeRTOS_Plus_FAT_SL.shtml
Settings
- time (set manually/fetched from GPS; 12h/24h format)
- units (metric/imperial)
- backlight level (manual/auto)
- buzzer volume
- sensors/applications specific settings
Applications
Main menu
- choice of application
- displayed as text list, icons or scrollable with big icons (one
application per screen, think of Nokia 3310 main menu)
Watch
Modes:
- analog
- digital
- eggtimer (countdown)
- stopwatch
- alarm clock
Features:
- auto DST adjustment
Navigation
- show current position/altitude
- route logging
- route following
Calendar/todo/notes (optionally)
- read-only
- synchronized through USB connection
- audible reminders
Settings
- interface to settings library
- software version information
- detailed information about battery state
- debug mode activation (reading raw sensor data, devices state, NMEA
frames over USB)
Other
Power management
Bootloader
PC-side software
Ideas
- use emWin for watch GUI?