Firmware development · Service 02

Firmware development and embedded Linux in Switzerland

Fermium develops real-time embedded software in C and C++ for target hardware: bare-metal drivers, FreeRTOS applications and embedded Linux systems built with Yocto and Buildroot. We verify timing behaviour and reliability against the device requirements.

Or call us: +41 78 914 41 45
adc_dma.cSTM32 · C
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc){    if (hadc->Instance != ADC1) {        return;    }    uint32_t sum = 0;    for (size_t i = 0; i < ADC_SAMPLES; ++i) {        sum += adc_buffer[i];    }    sensor.raw = sum / ADC_SAMPLES;    sensor.voltage =        sensor.raw * ADC_REFERENCE_VOLTAGE /        ADC_MAX_READING;    HAL_GPIO_TogglePin(        STATUS_LED_GPIO_Port,        STATUS_LED_Pin    );}

What we do

Embedded software development from drivers to field updates

Firmware architecture follows the timing, interface and update requirements of the target device. We develop and verify each layer on the target hardware.

01

Microcontroller firmware

Bare-metal and RTOS firmware for STM32, TI, NXP and Microchip microcontrollers: peripheral drivers, interrupt handling, low-power modes and application firmware for the target board.

02

FreeRTOS and embedded Linux

Task design and timing on FreeRTOS; board support packages, device trees, kernel drivers and root file systems with Yocto and Buildroot on ARM SoC platforms.

03

Fieldbus and industrial protocols

EtherCAT, PROFINET, Ethernet/IP, CANopen, Modbus RTU and TCP, CAN and CAN-FD stacks integrated into the firmware and verified with protocol analysers.

04

Bootloaders, secure boot and OTA updates

Custom bootloaders, signed firmware images, secure boot chains and over-the-air update mechanisms for devices in the field.

05

Motor control and power management

Field-oriented control for brushless motors, current and speed loops, battery and power management firmware for battery-powered and mains-powered devices.

06

Connectivity

USB device and host stacks, Bluetooth LE, Wi-Fi and LoRaWAN, from the radio driver to the application protocol.

Technologies

Platforms, protocols and tools for firmware development

Microcontrollers

  • STM32 Cortex-M0 to M7
  • TI MSP430
  • TI C2000
  • NXP LPC / Kinetis / i.MX RT
  • Microchip PIC / AVR / SAM

Operating systems

  • Bare metal
  • FreeRTOS
  • Embedded Linux (Yocto, Buildroot)
  • Linux BSP / device tree / kernel drivers

Protocols

  • EtherCAT
  • PROFINET
  • Ethernet/IP
  • CANopen
  • Modbus RTU / TCP
  • CAN / CAN-FD / LIN
  • USB Device / Host / OTG
  • Bluetooth LE
  • LoRaWAN

Tools

  • C / C++ / Assembly
  • IAR / Keil MDK / GCC
  • JTAG / SWD
  • Logic and protocol analysers
  • Git

Process

From requirements to the release build

Our verification checks timing, protocol behaviour and long-run stability against the agreed requirements before release.

  1. 01

    Requirements

    Functions, timing constraints, interfaces, protocols, safety and update requirements written down and agreed.

  2. 02

    Architecture

    Partitioning between bare metal, RTOS and Linux, task and memory layout, driver interfaces and the update concept.

  3. 03

    Implementation

    Drivers, board support and application firmware in C and C++, developed on target hardware with board bring-up as the first milestone.

  4. 04

    Verification

    We check timing, protocol conformance and long-run behaviour with logic and protocol analysers. We compare measured results with the requirements and document deviations.

  5. 05

    Release

    Reproducible release build, signed images, bootloader and update path, source code and documentation handed over.

Next step

A personal contact for your project

Describe the device, its current stage and the main requirements. You can attach a specification or a schematic as a PDF. On request, you receive a non-disclosure agreement (NDA) first.

Common questions

Questions about firmware development

Do you develop embedded Linux with Yocto or Buildroot?

Yes. We build Linux systems with Yocto and Buildroot for target hardware. Work can include board support packages, device-tree configuration and kernel drivers for ARM SoCs such as AMD Zynq UltraScale+ and Intel SoC FPGAs, plus the associated bare-metal firmware for the target system.

Can you take over the firmware of an existing product?

Yes. We start from your existing hardware, requirements or codebase. Typical partial engagements are board bring-up, drivers and BSPs, firmware architecture, embedded Linux integration and debugging of devices in the field.

Which fieldbus and industrial protocols do you implement?

EtherCAT, PROFINET, Ethernet/IP, CANopen, Modbus RTU and TCP, CAN, CAN-FD and LIN, plus USB, Bluetooth LE and LoRaWAN for connected devices. Protocol behaviour is verified with logic and protocol analysers on the target hardware.

Do you implement secure boot and over-the-air updates?

Yes. Bootloaders, signed firmware images and secure boot chains are part of the firmware architecture. We integrate the over-the-air update path with the product's firmware architecture.

Contact

Discuss your embedded project

Describe the device, its current stage and the main requirements.

What do you need?

Patrick Walther

Founder

Fermium GmbH
Hardeggweg 3
3326 Krauchthal, Switzerland
Fermium GmbH, Hardeggweg 3, 3326 Krauchthal, Switzerland