1. Does my project need an RTOS? If so, which one?
Usually the determining factor for switching from bare-metal to a Real-Time Operating System (RTOS) is the need for pre-emptive multitasking. Sometimes this can be accomplished without the overhead of an RTOS. As the system becomes more complex, an RTOS can ensure that high-priority tasks run when needed.
There are many options for RTOS, both open-source and COTS (paid). Some work better than others for different problem domains and hardware/driver support.
2. I need wireless conectivity. Which technology should I choose?
The specific requirements for the project will help determine the best wireless connectivity techology to choose. The location of the device, power supply utilized, connection speed and bandwidth and certification requirements all factor into the choice of wireless technology. Options include:
- Bluetooth: Classic, Bluetooth Low Energy
- Cellular: LTE, Cat-M1, NBIoT, 5G
- 802.15.4, 6LoWPAN, Thread, Zigbee
- SubGHz and LoRaWAN
3. Should I use Linux for my embedded systems product?
Linux Single Board Computers (SBC) such as those from Raspberry Pi and BeagleBone are popular and cost-effective platforms. Custom Linux SBCs can be very complex, but tailored to your design requirements. Using a Linux-based system provides access to lots of software that can be used in your application. A modern microcontroller design may also be able to provide the features and software needed for your application.
4. There are so many different microcontrollers. How do I choose one?
The simple answer is the cheapest one that has all the features needed for the application. But the choice is much more complicated than that. What kind of volume do you need? How long do you need to be able to purchase the part, 10 years? What’s the lead time for the part?
One of the main differences between microcontrollers is the processor core. There are several popular choices including:
- ARM Cortex-M (M0/M0+/M3/M4/M7/M23/M33 and more to come)
5. What’s a bootloader? Do I need one?
A bootloader is a special section of code that allows you to update the program in your microcontroller, usually without any special programming hardware. Some microcontrollers have built in bootloader code in a ROM section. A custom bootloader can be created to use the input method needed for your application (wireless, USB, serial, etc). Having a bootloader allows you to update your product in the field, which can be critical for feature and security updates.
6. What does “Statropy” mean anyway?
It is a portmanteau of static and entropy. Static, meaning lacking in change; and entropy, derived from Greek roughly as change within. Constant change.
In case you haven’t found the answer for your question please feel free to contact Statropy Software.