name=Micrium RTOS description=This plugin provides Micrium OS support. If this plugin is enabled, the stack will be running within Micrium OS as a Micrium OS task. The application can also define up to 3 custom Micrium OS tasks. category=Utility qualityString=Production Ready quality=production includedByDefault=false architecture=efr32,simulation providedApis=main,micrium-rtos requiredApis=idle-sleep,mbedtls callbacks=callbacks.info implementedCallbacks=emberAfPluginIdleSleepRtosCallback,emberRtosIdleHandler,emberRtosStackWakeupIsrHandler # This makes the plugin not throw an error if files are missing, but only show it as disabled. missingFileHandling=disable sourceFiles= # Main micrium-rtos-main.c micrium-rtos-sleep.c # OS application hooks: these could be generated in the future. os_app_hooks.c # Micrium Silicon Labs BSP files. $MICRIUM_OS/bsp/siliconlabs/generic/source/bsp_cpu.c (efr32) # Micrium RTOS common files. $MICRIUM_OS/common/source/rtos/rtos_err_str.c # Micrium RTOS common KAL files. $MICRIUM_OS/common/source/kal/kal_kernel.c # Micrium CPU core files (common to all platforms and compilers) $MICRIUM_OS/cpu/source/cpu_core.c # Micrium RTOS Kernel files (common to all platforms and compilers) $MICRIUM_OS/kernel/source/os_cfg_app.c $MICRIUM_OS/kernel/source/os_core.c $MICRIUM_OS/kernel/source/os_dbg.c $MICRIUM_OS/kernel/source/os_flag.c $MICRIUM_OS/kernel/source/os_mon.c $MICRIUM_OS/kernel/source/os_msg.c $MICRIUM_OS/kernel/source/os_mutex.c $MICRIUM_OS/kernel/source/os_prio.c $MICRIUM_OS/kernel/source/os_q.c $MICRIUM_OS/kernel/source/os_sem.c $MICRIUM_OS/kernel/source/os_stat.c $MICRIUM_OS/kernel/source/os_task.c $MICRIUM_OS/kernel/source/os_time.c $MICRIUM_OS/kernel/source/os_tmr.c $MICRIUM_OS/kernel/source/os_var.c # Micrium RTOS Lib files (common to all platforms and compilers) $MICRIUM_OS/common/source/lib/lib_ascii.c $MICRIUM_OS/common/source/lib/lib_math.c $MICRIUM_OS/common/source/lib/lib_mem.c $MICRIUM_OS/common/source/lib/lib_str.c # M4 specific CPU files # TODO: these should be (efr32+iar) but it doesn't work. This should be do-able after gcc support is in. $MICRIUM_OS/ports/source/iar/armv7m_cpu_c.c (efr32+iar) $MICRIUM_OS/ports/source/iar/armv7m_cpu_a.asm (efr32+iar) $MICRIUM_OS/ports/source/gnu/armv7m_cpu_c.c (efr32+gcc) $MICRIUM_OS/ports/source/gnu/armv7m_cpu_a.S (efr32+gcc) # ARMv7-M specific CPU files # TODO: these should be (efr32+iar) but it doesn't work. This should be do-able after gcc support is in. $MICRIUM_OS/ports/source/iar/armv7m_os_cpu_c.c (efr32+iar) $MICRIUM_OS/ports/source/iar/armv7m_os_cpu_a.asm (efr32+iar) $MICRIUM_OS/ports/source/gnu/armv7m_os_cpu_c.c (efr32+gcc) $MICRIUM_OS/ports/source/gnu/armv7m_os_cpu_a.S (efr32+gcc) # TODO: add files for other compilers and platforms. setup(additionalFiles) { PATH(ABSOLUTE):$FRAMEWORK/plugin-soc/micrium-rtos/config PATH(ABSOLUTE):$COMMON/inc PATH(ABSOLUTE):$MICRIUM_OS/ PATH(ABSOLUTE):$MICRIUM_OS/kernel/include PATH(ABSOLUTE):$MICRIUM_OS/common/include PATH(ABSOLUTE):$MICRIUM_OS/bsp/siliconlabs/generic/include } setup(macros){ -DMICRIUMOS } options=cpuUsage,pollCli,sleepEnable,zigbeeStackSize, \ appTask1,appTask1StackSize,appTask1Priority, \ appTask2,appTask2StackSize,appTask2Priority, \ appTask3,appTask3StackSize,appTask3Priority cpuUsage.name=CPU usage tracking cpuUsage.description=If this option is enabled, the OS will keep track of CPU usage required from uc/Probe. cpuUsage.type=BOOLEAN cpuUsage.default=true # Note: zigbee task stack size bumped to 1400 to account for ~400 bytes used by # NVM3 zigbeeStackSize.name=ZigBee Task call stack size zigbeeStackSize.description=The size in 32-bit words of the ZigBee task call stack zigbeeStackSize.type=NUMBER:250,5000 zigbeeStackSize.default=1400 pollCli.name=Poll CLI pollCli.description=If this option is enabled, the ZigBee stack task will periodically wake up to maintain the CLI responsive. pollCli.type=BOOLEAN pollCli.default=false sleepEnable.name=Enable EM1/EM2 sleepEnable.description=If this option is enabled, the OS will attempt to enter EM1 or EM2 lower modes whenever possible sleepEnable.type=BOOLEAN sleepEnable.default=false # Note: EMHAL-1521, EMHAL-2188 sleepEnable.enabledIf=!conf.architectureMatches("efr32~series[2]") appTask1.name=Application Task (1) appTask1.description=Enable/disable the Application (1) Task appTask1.type=BOOLEAN appTask1.default=false appTask1StackSize.name=Application Task (1) call stack size appTask1StackSize.description=The size in 32-bit words of the Application (1) Task call stack appTask1StackSize.type=NUMBER:64,5000 appTask1StackSize.default=200 appTask1StackSize.dependsOn=appTask1 appTask1Priority.name=Application Task (1) priority appTask1Priority.description=The priority of the Application (1) Task appTask1Priority.type=NUMBER:7,14 appTask1Priority.default=7 appTask1Priority.dependsOn=appTask1 appTask2.name=Application Task (2) appTask2.description=Enable/disable the Application (2) Task appTask2.type=BOOLEAN appTask2.default=false appTask2StackSize.name=Application Task (2) call stack size appTask2StackSize.description=The size in 32-bit words of the Application (2) Task call stack appTask2StackSize.type=NUMBER:64,5000 appTask2StackSize.default=200 appTask2StackSize.dependsOn=appTask2 appTask2Priority.name=Application Task (2) priority appTask2Priority.description=The priority of the Application (2) Task appTask2Priority.type=NUMBER:7,14 appTask2Priority.default=7 appTask2Priority.dependsOn=appTask2 appTask3.name=Application Task (3) appTask3.description=Enable/disable the Application (3) Task appTask3.type=BOOLEAN appTask3.default=false appTask3StackSize.name=Application Task (3) call stack size appTask3StackSize.description=The size in 32-bit words of the Application (3) Task call stack appTask3StackSize.type=NUMBER:64,5000 appTask3StackSize.default=200 appTask3StackSize.dependsOn=appTask3 appTask3Priority.name=Application Task (3) priority appTask3Priority.description=The priority of the Application (3) Task appTask3Priority.type=NUMBER:7,14 appTask3Priority.default=7 appTask3Priority.dependsOn=appTask3