When I'm searching for embedded systems information, it's amazing how much blanket advice I encounter - often just repeating truths from previous generations or providing advice without considering design constraints.
It's important to remember how diverse embedded systems can be. You might be developing for an 8-bit microcontroller with only 4KB ROM and 1KB RAM. I might be building a radar system which has 8 circuit card assemblies and runs software on an FPGA. Tools and techniques used in the first situation are very different than those in the second.
Here are some things to keep in mind when evaluating/giving advice for embedded systems:
- If you are space/memory constrained, your tool selection is constrained. If you are not space/memory constrained, you get more leeway to use modern development tools and techniques.
- You must understand all of the tools at hand in order to make an effective judgment call.
- Most modern designs are not constrained to 8-bit systems with 1KB RAM.
- You are often constrained to tools that are supported for your target platform. A C++ compiler may not be available for your specific chipset, or you may be able to utilize more common toolchains (gcc, clang).
- People will often make recommendations soley based on the way they have done things in the past. Good advice in one situation may be terrible advice in another.
Next time, we'll analyze some of the bad blanket advice targeted at C++ usage in embedded systems.