Comparative Analysis of RTOS Features and Tools for MSP432 MCU
This comprehensive comparison delves into the features and options available for real-time operating systems (RTOS) on MSP432 MCU, covering tasks, middleware, connectivity, power management, drivers, sensors, and more. The analysis also includes a detailed comparison of RTOS tools, viewers, execution graphs, logging, configuration tools, compiler support, examples, licenses, and costs.
Uploaded on Sep 15, 2024 | 0 Views
Download Presentation
Please find below an Image/Link to download the presentation.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.
E N D
Presentation Transcript
MSP432 MCU RTOS Solutions 1
MSP432 RTOS RTOS Options User Application Tasks Middleware File Systems Connectivity Wi-Fi TI-RTOS freeRTOS Power Manager Real-time Kernel RTX (CMSIS-RTOS) Drivers Micrium OS MCU Sensors 2
MSP432 RTOS Broad Middleware offering from TI-RTOS & CMSIS User Application Tasks Middleware File Systems Connectivity Wi-Fi Unique to TI-RTOS: Simplify power management for MCU Power Manager Real-time Kernel Drivers Broad offering from TI- RTOS Drivers MCU Sensors RTOS Core standard offering from all RTOSes 3
RTOS Features Comparison Scheduler Type CMSIS comp- liant Services Interrupt Latency Device Specific Support Device Drivers Flash Size Low Power Support Pre-emptive X Tasks Swis Hwis Software Timers Semaphores Mutex Mailbox Events Zero-latency interrupts supported (115 cycles for ISRs with TI- RTOS calls) Systick Interrupts Exception Handling SPI SPI-SD I2C UART Timer RTC Timestamp Watchdog 4K to 10K Tick Suppression, Device specific Power Manager TI-RTOS By TI Round-robin (default) Pre-emptive Cooperative Tasks SWIs Software Timers Semaphores Mutex Mailbox Events Zero-latency interrupts supported Systick X <4K Tick Suppression, Device specific support coming soon ARM RTX By Keil Pre-emptive Cooperative X Tasks Co-routines (task share stack) Direct TASK notifications Software Timers Semaphore Mutex Events Zero-latency interrupts supported Systick X 5K to 10K Tick Suppression, Pre and post sleep macros for customization, Idle task hook. FreeRTOS By Real Time Engineers Ltd Pre-emptive X Tasks Software Timers Semaphores Mutex Mailbox Events Unknown Systick X 5K to 24K Idle Task Hook Tick suppression coming soon Micrium OS By Micrium 4
RTOS Tools Comparison Object Viewer Execution Graph Logging RTOS Config Tool Signal Plots Compiler support Examples License Certified Cost CCS IAR GCC > 50 BSD Free TI-RTOS By TI (GUI composer) X IAR Keil GCC Cosmic 2 BSD Free ARM RTX By Keil X CCS IAR Keil GCC Tasking 1 Modified GPL SafeRTOS Free FreeRTOS By Real Time Engineers Ltd 3rd party Standalone 3rd party Standalone 3rd party Standalone 3rd party Standalone X CCS IAR 2 Micrium SIL3/SIL4 Contact Micrium Micrium OS By Micrium 5
MSP432 & TI-RTOS Components Supported Kernel Wi-Fi FAT File System Device Drivers Power Manager Instrumentation IDE: CCS, IAR, & GCC Tools Device Drivers Real-time clock NEW! Developed and maintained by TI Timer Fully supported on MSP432 with > 50 examples. Out of the box examples for supported booster- packs. UART I2C SPI Power Manager to simplify & optimize power during runtime SPI-SD PWM NEW! BoosterPack Supported CC3100 Booster Pack Power-aware Drivers that work with TI-RTOS kernel or can even be used with another RTOS Watchdog SD-Card BoosterPack GPIO TMP006 BoosterPack Underlying structure for Energia MT - first hobbyist-oriented multi- thread IDE supporting MSP432 Sharp Memory LCD BoosterPack RF430CL330 NFC Transponder TPL0401EVM Board 6
TI-RTOS Power Manager Using TI-RTOS Power Manager MSP432 Power Sequence Using MSP432 DriverLib FlashCtl_setWaitState(FLASH_BANK0, waitsNew); FlashCtl_setWaitState(FLASH_BANK1, waitsNew); /* now change clocks and dividers */ CS_setDCOCenteredFrequency( PowerMSP432_perfLevels[level].DCORESEL); CS_initClockSignal(CS_MCLK, PowerMSP432_perfLevels[level].clockSource, PowerMSP432_perfLevels[level].DIVM); CS_initClockSignal(CS_HSMCLK, PowerMSP432_perfLevels[level].clockSource, PowerMSP432_perfLevels[level].DIVHS); CS_initClockSignal(CS_SMCLK, PowerMSP432_perfLevels[level].clockSource, PowerMSP432_perfLevels[level].DIVS); AM1_DCDC AMx_DCDC AM1_LDO AMx_LDO AM1_LPR AMx_LPR 3MCLKs 3MCLKs 1MCLK 1MCLK 3MCLKs 1MCLK RTC_C_holdClock(); WDT_A_holdTimer(); PCM_setPowerState(PCM_LPM3); AM0_DCDC SLx_DCDC AM0_LDO SLx_LDO AM0_LPR SLx_LPR Power_setPerformanceLevel(level) Power_sleep() FlashCtl_enableReadBuffering(FLASH_BANK0, FLASH_DATA_READ); FlashCtl_enableReadBuffering(FLASH_BANK0, FLASH_INSTRUCTION_FETCH); FlashCtl_enableReadBuffering(FLASH_BANK1, FLASH_DATA_READ); FlashCtl_enableReadBuffering(FLASH_BANK1, FLASH_INSTRUCTION_FETCH); RESET Active-mode Transition Sleep-mode Transition changedStateOK = PCM_setPowerState(stateNew);
Energia MT ?? Single sketch code hard to write for multiple LEDs at different rates Multiple sketches makes code clean and easy to write Complex single sketches to simple multiple sketches Run sketches in parallel Automagic low power The power of an RTOS for everybody without the complexity! Easy to create interactive component libraries See video! 8
Energia MT Reuse of framework TI-RTOS enables Energia to be ported to new devices rapidly! Energia MT Sketches Energia Libraries Sketches Energia/Wiring API Libraries TI-RTOS Energia/Wiring API UART I2C SPI PWM UART I2C SPI PWM Device Device
MSP432 & ARM RTX Download Keil IDE from http://www.keil.com/mdk5/instal CMSIS compliant Royalty Free Free for all ARM RTX details http://www.keil.com/rl-arm/kernel.asp Run examples today on the MSP432 LaunchPad www.keil.com/appnotes/docs/apnt_276.asp Small footprint <4K Flexible Scheduling Full suite of examples and CMSIS drivers coming soon 10
MSP432 & FreeRTOS Download FreeRTOS from http://www.freertos.org/ MPU support See the demo that runs on the MSP432 LaunchPad at http://www.freertos.org/TI_MSP432_Free_RT OS_Demo.html Tickless Free, Modfiied GPL licence 11
MSP432 & Micrium OS Built-in benchmarks Download Micrium C/OS-II from http://micrium.com/downloadcenter/download- results/?searchterm=mi- msp432p401r&supported=true Contact Micrium for pricing questions. Certified for safety! 12
Backup 13
MSP432 TI-RTOS Power Manager Power Manager helps applications with entering/exiting various LPM modes, choosing among the various performance levels AM_LDO_VCORE0, AM_DCDC_VCORE1 etc Drivers can give inputs to Power Manager on which sleep mode or performance level they can handle at any given time. Drivers can get notified by the Power Manager when sleep or performance events occur. Application can pick the sleep mode and performance level and then the Power Manager will manage the rest in a thread-safe way. Power and performance decisions are made in ONE place. Clocks get configured based on requested performance level. Flash wait states and buffering modes set automatically based on performance level. RTC and Watchdog are managed to enter LPM3 Simply ask power Manager these questions What are my clocks right now? What is my performance level? Why can t my system enter LPMx.5? What are my latencies to enter/exit LPM modes? etc. All TI-RTOS drivers use the Power Manager services. 14
MSP432 TI-RTOS Power Manager APIs Init and setup Power_init(); - Call once before other APIs at init time. Get/Set Power_set/getPerformanceLevel(); Use this API to set various performance levels such as AM_DCDC_VCORE1, AM_DCDC_VCORE0 etc. This API also manages flash wait wait and buffering modes. Constarints are taken into account before entering a new performance level. Getters Power_getConstraintMask(); - Get constraints that can prevent power manager from entering a particular sleep state or performance level. This API will tell the application why the power Module did not allow entry into a particular sleep or performance state. Power_enablePolicy(); Enable Power Manager call once at init time. Power_idleFunc(); - Add to idle loop or forever while(1). Power_register/unregisterNotify(); Register a function with the power manager to get notified on power events such as about to sleep , waking up . Apps can then manage their state/resources accordingly. Goto to LPM Power_shutdown(); API to enter LPMx.5. Power_sleep(); API to enter LPM0, LPM3 or LPM4. Power_set/releaseConstraint(); Use this API to prevent entry into Low Frequency Mode or prevent entry into LPMx.5. 15
ARM RTX Development Tools Leverage ARM standard CMSIS-DSP library 17