What Is Firmware?

firmware-developmentExisting on the border between hardware and software, firmware is a specific type of software that is written into the memory of a computer or electronic device.

From here, it’s able to control, monitor and allow for data manipulation of the given device.

Unlike everyday software that is used with computers or laptops, firmware provides the very basic, low-level control for a given device. Telling it how to communicate with other devices, perform basic functions, and provide input & output functionality.

From everyday devices to custom electronics products, firmware is typically found in a range of embedded devices, including:

Consumer Appliances & Devices

  • Microwave Ovens
  • Ovens
  • Refrigerators
  • Televisions
  • Digital Watches

Computer Components & Peripherals

  • Keyboards
  • Hard Drives
  • Video Cards
  • BIOS

Without firmware? These devices wouldn’t know how to operate.

Where Is Firmware Held?

Firmware UpdatesOriginally stored in Read Only Memory (ROM), firmware was difficult – if not impossible – to update. Oftentimes requiring the physical removal and replacement of the memory module that stored the firmware itself.

Since then, firmware has been held within a range of memory types, including:

  • ROM
  • PROM
  • Flash Memory

Nowadays, flash memory allows for the quick and easy wiping and re-writing of stored firmware. Making the act of updating firmware a commonplace occurrence with modern devices. With these updates including anything from bug fixes, through to new features and functionality.

What Is Firmware Development?

Embedded electronic products usually run on custom-developed firmware. Firmware that’s developed to meet the specific needs, requirements and constraints of the given electronic design project.

Compared to regular software creation, firmware development comes with its own challenges and hurdles. Involving working with devices with access to much less processing power, storage space, and lower power consumption.

There are three major stages involved in firmware development. These are:

1. Architecture

The architecture phase deals with the question of ‘What?’.

  • What the product needs to do.
  • What its purpose is.
  • What it does.

It’s through this process that the requirements of the product are set. All at once identifying the challenges involved, as well as creating a specific set of rules and requirements that can be tested against later during the development process.

2. Design

The design phase takes the ‘What?’ and provides the answer of ‘How?’. Through a process of examining the ‘What?’, development teams are able to design firmware that fulfills these requirements. Defining things like classes, tasks and naming.

3. Implementation

The final part of the ‘How?’, the implementation of the design involves the actual creation of the firmware itself. Typically programmed in C and variations thereof.

Examples Of Products Using Custom Firmware

Fan Controller For Server Racks

Fan ControllerA fan controller that monitors both internal and external temperatures, it’s able to respond in accordance by adjusting fan speeds.

Including a new bootloader, this fan controller allows users to download and apply future firmware updates via HTTP.

Automatic Peripheral Selector

Peripheral SelectorDeveloped for a client who runs a reward program, this peripheral selector allows the reward program to interface with all peripherals at once.

Written in C, the peripheral selector includes an integrated internet gateway and boot loader. Allowing for remote monitoring, as well as firmware updates via the internet.

Ultra-Sonic Tank Level Sensor

Ultra-sonic Tank Level SensorA new, low cost universal tank level meter for use on small boats, this tank level sensor makes use of ultra sonic tech. Monitoring, measuring and recording water levels.

Written in C and with a boot loader, this has been factory programmed into the sensor to ensure utmost accuracy.

Frequent Asked Questions (FAQ) on Firmware Development

C or C++: Which Is Used In Firmware Development?

At Electronic Partners, we use C in the majority of the projects we’ve worked on with our clients, such as those listed above. Why is this? To make a long story short, C carries a smaller installation footprint and executable size, it’s widely used, and we’re intimately familiar with it. However, if required, we are able to work with the likes of C++ and C#.

You can find out more about the programming languages we use, and why, at the link below.

Continue reading ‘C or C++: Which Is Used In Firmware Development?

Want to know more about firmware development? Contact us or give us a call on + 64 (9) 419 6474.