In your opinion MSM (Boost Meta State Machine) is suitable for embedded application? In my case the application should run on Cortex-M4F MCU with 1 MB of Flash and 192 KB RAM. I like the fact that MSM gives you a more structured approach to define hierarchical state machine with orthogonal regions but it also introduces some overhead. I was wondering if such approach is feasible for embedded applications with memory constrains or should I go "back" to the more traditional "switch case" state machines.
Meta State Machine (Boost) in embedded applications
961 Views Asked by Twoism At
1
There are 1 best solutions below
Related Questions in C++
- C++ using std::vector across boundaries
- Linked list without struct
- Connecting Signal QML to C++ (Qt5)
- how to get the reference of struct soap inherited in C++ Proxy/Service class
- Why we can't assign value to pointer
- Conversion of objects in c++
- shared_ptr: "is not a type" error
- C++ template using pointer and non pointer arguments in a QVector
- C++ SFML 2.2 vectors
- Lifetime of temporary objects
- I want to be able to use 4 different variables in a select statement in c ++
- segmentation fault: 11, extracting data in vector
- How to catch delay-import dll errors (missing dll or symbol) in MinGW(-w64)?
- How can I print all the values in this linked list inside a hash table?
- Configured TTL for A record(s) backing CNAME records
Related Questions in BOOST
- Non-intruisive Boost serialization of labelled enums C++
- error WinSock.h has already been included Boost Windows Qt
- How to get rid of the ".\r\n" characters appended to the error message from FormatMessageA?
- What is the equivalent of boost::system::error_code with GetLastError in C++ Standard Library?
- Copy constructor required to be explicity defined with mutex
- boost spirit: how to match any lexer token in qi?
- boost resume thread on mutex unlock
- boost mpi sends NULL messages
- BOOST & GCC, undefined reference to boost
- CSV like Parse ( whitespace delimiter and boost )
- How does Boost.Units come up with this imprecise result of conversion?
- No viable overloaded '=' in std::bind function
- How should boost::lockfree::spsc_queue's read_available and write_available be used?
- add line in cmake to edit Makefile definition
- How does boost::subgraph work? Can we use filtered graph?
Related Questions in EMBEDDED
- PHP don't use temp file for upload
- Sparkfun SC16IS750 does not work on Raspberry Pi
- Reserve memory space in m_text memory region of FLASH on embedded target
- SAE J1939 Standards Collection -- How much is necessary?
- How to call multiple slaves for Spi data transmission?
- Deployment over GPRS to embedded devices
- Changing just one byte in SD card sector
- Comparion of values won't work without delay
- Better to pass struct, or pointer to struct?
- STM32F4 Handling peripheral error while making a DMA Transfer (RX)
- USB programming, transfer file from iOS device to Embedded os device?
- using Diab, dcc 5.9.4 to compile a windows executable
- does b64_pton() work if input contains special characters? I am using it in C code
- u-boot select boot partition based on GPIO state
- Why is a write to a memory-mapped peripheral register not actioned (LPC43xx)?
Related Questions in STATE-MACHINE
- Calling prepare() after stop() on MediaPlayer throws IllegalStateException
- Game State Implementation Using Protocol And Base Class
- UML state machine: Conflict AFTER choice
- Opengl - Is glDrawBuffers modification stored in a FBO? No?
- peter-murach/finite_machine restore persisted state
- Finite State Machine In C
- Rails 5 - using Pundit Scopes with Statesman state machine: structurally incompatible?
- How define external function call within a guard of state machine in EA
- Bisimulation in state transition system
- How to handle error in event machine using transitions gem on rails?
- Spring State Machine - How many should I create?
- Can't get simple Bit Sequence Recognizer circuit to work (FSM)
- Meta State Machine (Boost) in embedded applications
- Why is it not possible to construct a finite state machine in this case?
- In a UML2 state chart, how to model a condition that might already be active or is triggered?
Related Questions in CORTEX-M
- C Global declared in ISR
- kill function from ISR on cortex-m0
- STM32 I-CODE and D-CODE buses
- lpc17xx frequency detection of square wave using polling
- Cortex M0 hardfault; BLC Huffman
- FFT in ARM Cortex-M0 returns NaN or infinite
- How to write to SHPR2 correctly on cortex M0
- Flashing image to STM3220g-EVAL board using Trace 32
- Change Stack Location for Cortex M3 in Startup.s file
- How to change endianess settings in cortex m3?
- Creating a loop within an assembly macro - IAR ARM
- LDMIA instruction not working correctly on external SRAM in cortex M4
- Can I use the "Instruction" TCM in an Atmel SAM E70 processor for data?
- Using LZ4HC algorithm in an ARM Cortex-M3 processor
- Can I port a library compliled for Cortex M3 onto a cortex M4?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
It really depends on how often you will need to use it and how much value it adds to your project in terms of time, ease of development, readability, portability, etc.
If you have all the time in the world you could potentially make something that would be more purpose built and specified for to your application needs.
RAM is precious in your scenario (of course, depending on your application). I suggest writing a somewhat non-trivial state machine using Boost (or use Boot's example), examine RAM usage, and then make the determination if your project has the [RAM] budget for it.
Note, boost makes the tradeoff to use more code space (via templating) than run-time memory. Further, this tradeoff optimizes runtime performance in that the processor is much more efficient at fetching instructions from flash than it is at fetching data from RAM (in mostly all cases when using a Cortex-M4F).
Remember, C++11 & 14 compilers are much smarter than they used to be for meta programming / templates, so code-bloat shouldn't really be of concern because the tradeoff / cost to using Boost MSM may worth it for complex, non-trivial state machines.
Check out Boost MSM-lite (experimental), which attempts to address many of the concerns by reducing MSM to a finite set of facilities of vanilla MSM.
Boost MSM-lite