What is firmware, and why is firmware development important at Ciholas?

Basically firmware is software that is written to run on hardware. It’s the code that makes the low-level hardware do the things it does; like turning on an LED, read a sensor, or send a transmission. Most electronic devices that we use on a daily basis have a small microcontroller to operate the hardware and that microcontroller runs the code, or firmware, necessary to make the device operate.

Pretty much everything we develop at Ciholas has a brain, or a small microcontroller. It is critical that we have a strong firmware development team at Ciholas in order to not just make the hardware work, but make it not fail.

Do all devices require a processor with firmware?

While it is possible to create complex devices purely in hardware, it is often more cost-effective to include a processor in the design, enabling features and flexibility. There is an integral relationship between hardware and firmware. We write firmware for nearly every project we do, and our team understands how to use firmware to achieve efficiency, lower cost, and increase longevity.

Is the firmware the same on all devices or does it change based on the design?

The firmware changes based on processor selection and the requirements of the design. When working with embedded electronics the selection of the processor isn’t always based on the latest and best tech. It depends on available peripherals, low power capabilities, overall cost, and many other factors.

Changing processors between designs does present challenges to our firmware team. We have a lot of experience porting firmware written for one processor to the next. Our higher-level application pieces are written with layers of abstraction to make them portable. We are always ready to adapt.

I’ve heard you say, “Don’t just make it work, make it not fail,” in reference to firmware. What does this phrase mean to the Ciholas team?

We aim to not only complete the task in front of us, but to approach it from all possible boundary cases and angles to try and break it. We want to be efficient in our testing so that we are confident the final product will not fail. There are going to be things that we don’t foresee, but we use our experience to avoid potential pitfalls.

To increase confidence in our products, we write tests to evaluate our software. Our tests describe what our software should be doing, allowing us to catch behavior changes that take place as we add features. Test driven development can be difficult in firmware, because it is very human driven. Unfortunately, making firmware not fail often comes down to timing and context specific bugs that we cannot develop tests for. These challenges require an experienced engineer to identify and overcome obstacles preemptively.

What experience does Ciholas have with firmware?

Ciholas originally started with a focus on hardware. We provided hardware for multiple companies and we also provided basic software to operate and prove that the hardware worked. Over time we have taken on more full-product software development and provide it as a service that we have offered for almost 15 years now. We have experience writing firmware for designs in multiple industries for things such as safety equipment in coal mining, sports timing and tracking, inventory tracking, health industries, and entertainment.

What is the future of firmware?

Firmware is always changing and evolving. We are consistently seeing cheaper, faster, and smaller processors with more features that weren’t available before. Possibilities open up with more memory and faster speeds. We strive to stay ahead of the game and use all available resources.

There are definitely times when it is easier and more cost effective to use a bigger, faster processor. But, there will always be a need to optimize the firmware to operate efficiently. That is where experienced firmware engineers come in and that is what sets us apart from other companies. While a lot of what we do can be done by others, we take it to the next level with regard to performance and robustness.