Our best offer to you is Quality, Tested and Reusable code.

Reuse our fully defined, well-tested, documented software and drivers, OSAL, HAL & BSP package for 8/32-bit MCUs.

Board Support Package (BSP)

Every BSP implementation regardless MCU use exact Hardware Abstraction Layer (HAL) interface. This abstraction helps for seamless migration from one MCU to another without affecting other software components.

Board Support Package (BSP) help to speed up the board creation process. In each BSP, we try to implement all peripherals available on the MCU with highly dynamic configuration and expose all available peripheral channels. This BSP can be used both with and without RTOS, with some BSPs having an API to lock the resources when used under RTOS.

This BSP is the realization of our generic HAL API, which has now existed for 4 years without major changes and is used on 3 different platforms such as the Microchip PIC32 series and the NXP LPC series. This BSP is also used in our device driver implementation so that our driver is platform and operating system independent. The BSP design is simplified yet dynamic enough to support any peripheral function while maintaining the genericity of the interface.

Our list of available BSPs may not be very long and covers a variety of MCUs with different architectures, but based on our experience, you only need a small selection of MCUs, but with stable, well-tested and highly configurable BSPs and HAL interfaces that can be safely used with RTOS. Each BSP is supplied with a sample program in bare metal and RTOS as well as a software design document for evaluation purposes.

Further details about our HAL can be found at

Microchip PIC32MK, PIC32MX and PIC32MM

High performance and extensive peripheral functions. Suitable for medium to highly complex projects that require a lot of computing power, digital signal filtering and CAN FD communication. In addition, this type of MCU has numerous PWM channels, making it suitable for controlling brushless DC motors.


  • 32-bit, MIPS32 architecture
  • Max. running frequency 120 MHz
  • 1MB on-chip flash memory
  • Class B Safety Library, IEC 60730
  • 256 KB SRAM
  • -40 °C to +125 °C
  • Bare-metal & RTOS
  • Compatible with C/C++
  • Follow MISRA C:2004, MISRA C:2012


  • CAN FD (4-channel)
  • ADC (42-channel)
  • DAC (3-channel)
  • GPIO (78-channel)
  • I2C (4-channel)
  • PWM (12-channel)
  • QEI (6-channel)
  • RTC (Real-time Clock & Calendar)
  • SPI (6-channel)
  • TIMER (9-channel)
  • UART (6-channel)
  • NVM (non-volatile memory)
  • WDT (watchdog)
  • Customised & generic bootloader

NXP LPC54xx, LPC55xx and LPC51Uxx

High performance with dual-core ARM Cortex in a single chip, contains ARM Cortex M4 and Cortex M0+. This type of MCU helps to increase system reliability and is suitable for projects of medium complexity. It has fewer peripherals than the Microchip PIC32, but not all applications need them all.


  • 32-bit, ARM Cortex M4
  • Max. running frequency 150 MHz
  • 256 KB on-chip flash memory
  • 32 KB SRAM
  • -40 °C to +105 °C
  • Bare-metal & RTOS
  • Compatible with C/C++
  • Follow MISRA C:2004, MISRA C:2012


  • ADC (12-channel)
  • GPIO (48-I/O)
  • I2C (8-channel)
  • PWM (8-channel)
  • RTC (Real-time Clock)
  • SPI (8-channel)
  • TIMER (5-channel)
  • UART (8-channel)
  • WDT (watchdog)

NXP LPC82x, LPC84x and LPC11Uxx

ARM Cortex M0+ MCU with low power consumption, which is best suited for simple to medium complex applications. Don’t worry about transitioning your application software, be it more complex in the future, swapping this MCU to higher performance MCU that can support RTOS such as LPC54xx or PIC32xx will be seamless with our BSP and HAL interface.


  • 32-bit, ARM Cortex M0+
  • Low-power optimization, max. running frequency 30 MHz
  • 64 KB on-chip flash memory
  • 16 KB SRAM
  • -40 °C to +105 °C
  • Bare-metal OS
  • Compatible with C/C++
  • Follow MISRA C:2004, MISRA C:2012


  • ADC (12-channel)
  • DAC (2-channel)
  • GPIO (41-I/O)
  • I2C (4-channel)
  • PWM (8-channel)
  • SPI (2-channel)
  • TIMER (8-channel)
  • UART (5-channel)
  • WDT (watchdog)

OS Abstraction Layer (OSAL)

OSAL implementation for future supported RTOS such as ThreadX will use exact generic OS Abstraction Layer interface that being used for FreeRTOS. This abstraction makes it possible to migrate from one RTOS to another without affecting other software components.


FreeRTOS may be an old but golden RTOS. In short, it is a scheduler that allocates time for each task to execute its program. This RTOS is easy to adopt, has a low learning curve and can be ported to new MCUs that are not yet supported. Nevertheless, this RTOS has proven itself and is used by companies such as Dyson, Bosch and Philips in their product lines.
SAFERTOS with the same interface as FreeRTOS is available if your application software needs to be certified according to ISO 26262, IEC 61508 SIL 3 and DO-178C.


  • Non-specific MCU implementation
  • Support all MCU with 128 KB flash memory and at least 8 KB RAM
  • Timing critical application
  • Compatible with C/C++


  • Task
  • Timer
  • Queue
  • Delay (block, non-block)
  • Mutex, Semaphore
  • Memory allocation
  • and more..

We also provide,

Consultation & Training


  • 2 hours free consultation for any type of embedded software
  • More than 10 years of experience in the automotive, aerospace and consumer electronics industries
  • Experience in developing and managing large, legacy code bases
  • Insight into safety-critical software applications, requirements and know-how for DO-178C and EN-4709 certification
  • DevOps, streamlining software development practices and more.

Software Requirement, Architecture & Design


  • Designed with Unified Modelling Language (UML) format
  • Software design document including but not limited to,
    • Software requirement
    • Class diagram
    • Component diagram
    • State diagram (optional)
    • Sequence diagram
    • Timing diagram
  • Proof-of-Concept (POC) realization of the design

Application Software


  • Implementation from software design and requirements
  • Refinement and improvement of the existing detailed design (optional)
  • RTOS or bare-metal OS
  • Code conformity according to MISRA C/C++, CERT, CWE
  • White box and black box testing
  • Static code analysis report
  • Compliance with internationally recognized coding standards for C and C++
  • Proficient in C and Python programming languages, medium expert in C++

Sensor & Device Drivers


  • Implementation from system requirement
  • Graphics: LCD, OLED .. more
  • Sensors: distance, movement, RTH, air quality, GPS, encoder … more
  • Radio: Wi-Fi, bluetooth, LoRA .. more
  • Motor control: DC, 3-phase brushless, servo, stepper … more
  • Code compliance according to MISRA C/C++, CERT, CWE
  • Static code analysis report
  • Compliance with internationally recognized coding standards for C and C++
  • Sample programs and software design documents are available for each product

Finite State Machine (FSM) for Embedded System


  • Non-specific BSP, OSAL or MCU implementation
  • Compatible with C/C++
  • Follow Embedded C coding standard and MISRA C:2004, MISRA C:2012
  • Event-driven support, works best with RTOS
  • Fully tested with 100% line and branch coverage


  • Customized state flow control with state back and forward capability
  • Entry and exit function as guards before and after running a state
  • Synchronous and deterministic implementation
  • Event and error timing monitoring
  • State flow control, easily configured

See our previous work,