i.MX8 carrier board

For a customer product we have developed a mainboard PCB and embedded software.

The mainboard carries an i.MX8-SoM from Variscite and extends the i.MX8 using an iCE40-FPGA for interfacing and real-time control. It further contains a stepper motor controller (controlled by FPGA and i.MX8), two BLDC motor controller (based on STM32), several interfaces like ethernet, USB, some SPS sensor inputs, control outputs and a bus led output.

Our services

Conceptual design and development of

  • the electronics (~530 components)
  • the real time software, based on FreeRTOS and running on the i.MX8 Cortex M4 core
  • the FPGA design
    • for real-time data processing
    • for real-time control of the stepper motor controller
    • for interfacing
  • the STM32 firmware to control and commutate the two BLDC motors
  • the Linux driver for the communication between the Linux userspace programs and the Cortex M4 real-time software
  • some Linux userspace programs for testing and maintenance purposes

Adaption of

  • the Yocto based embedded Linux environment which is running on the i.MX8 Cortex A53 cores to the project requirements
  • the Linux devicetree and Linux kernel to the mainboard
  • the u-boot to the project requirements

Assembling of

  • the first prototypes

The Linux userspace firmware and a webinterface was developed by a software development company with whom we shared the task.

Our Skills

  • Embedded Linux, Linux BSP, Linux driver development
  • C/C++ programming language
  • VHDL programming language
  • Schematic and Layout
  • SMD/THT assembling and reflow-soldering

Used technologies


  • Embedded Linux
  • Devicetree
  • Linux kernel
  • Linux driver
  • u-boot
  • C/C++ programming language
  • VHDL programming language
  • Stepper motor
  • BLDC motor
  • Power sequencing
  • 4-Layer PCB

Chips and SoMs

  • i.MX8M Mini,  VAR-DART-MX8MM-SoM from Variscite
  • i.MX8M Plus, VAR-DART-MX8MP-SoM from Variscite
  • TMC2590 stepper motor controller
  • STM32 microcontroller
  • FET-Gate-Driver
  • iCE40 FPGA
  • Battery buffered RTC
  • eFUSEs


  • I2C
  • UART
  • SPS interfacing
  • Ethernet
  • USB


  • kdevelop - C/C++ development IDE for developing Firmware for the CM4 based on the NXP SDK
  • Segger J-Link-Pro - debugging the CM4 and STM32
  • Segger-GDB - debugging the CM4 and STM32
  • Yocto - building the embedded Linux images
  • Docker - containing the Yocto build pipes
  • CubeIDE from ST - C/C++ development IDE for the STM32
  • Git - version control software
  • Gitlab - version control and ticket management software
  • iCEcube2 from Lattice - FPGA development
  • GHDL - FPGA simulation
  • KiCAD - schematic and layout software
  • Reflow-Oven