korena's blog

Embedded Systems Projects

(data migration in progress)

Custom Car Dashboard

  • Location: Kuala Lumpur, Malaysia
  • Role: Platform Integration
  • Technologies: QT (5.7), TI AM3359 System On Chip, Linux stable 4.7.6
    Busybox, PowerVR SGX530 GPU
  • Languages: C, bash, C++, QML

My role in this project was to integrate the different modules of the system to facilitate the development of the client's custom QT Quick based application. To make sure all areas are covered, I developed a part of the QT application according to the specs gathered from the UX designer hired by the client.

The following software sub-systems were integrated:

Linux Kernel:

The Linux stable kernel 4.7.6 was configured and compiled to support the client's custom hardware based on the Beaglebone Black open-source module, with the addition of some extra hardware modules to support different subsystems such as GPS, Audio subsystem, Camera and a resistive touch screen.
The kernel was then used to integrate (port and cross compile) the required close-source modules provided by imagination technologies and TI to support PowerVR SGX530 GPU acceleration.

File system:

A custom file system was created based on Busybox, allowing for a smaller memory and storage footprint compared to mainstream distributions such as Debian and Fedora. The file system was built to support Systemd as the init system. and a safe non-root user creation process was created to support different profiles for different users.

Kernel Modules:

A number of kernel modules were developed to support different custom interfacing hardware provided by the client's engineering team.

QT 5.7 framework

QT (everywhere) was compiled against the target's OpenGL implementation, and installed on the target board, the framework was not expected to use a windowing system.

QT Quick UI Modules

To test the integrity of the platform integration, I developed the following modules using QT 5.7:

  • Weather Application: To test network connection.
  • Time QML component: To test timezones and locales
  • background changing logic: To test permissions and user profile integration

Vending Machine (under development)

  • Location: Kuala Lumpur, Malaysia
  • Role: System Architect
  • Technologies: QT (5.6), TI AM3358 System On Chip, Linux stable LTS 4.4FreeRTOS, STM32F1

As an Embedded software engineer at Ascenteus Research, I was responsible for integrating and developing the internal subsystems of a Vending Machine (Project not public yet). The vending machine contains two main electronic modules:

Main Motherboard

This module runs the main embedded OS, which is responsible for communicating with the user through a touch screen, as well as controlling the redundant submodules that are responsible for controlling the moving parts of the machine, as well as the chiller, Bill/Coin acceptors, and various other electrical subsystems.
The Motherboard also provides a comprehensive communication interface that allows for remote control through a web based interface over 4G/ethernet.

Control board (2 redundant boards)

This module controls the moving parts of the vending machine, running freeRTOS, it responds to signals from the Main Motherboard and sends back status information.
A heartbeat signal is periodically sent to the motherboard for health checks and fail-safe balancing of operation.


Grayns TORC 1.9

  • Location: Kuala Lumpur, Malaysia
  • Role: Embedded software engineer
  • Technologies: ARM, Bare metal

TORC 1.9 is a special rice cooker that is meant to cook rice following a procedure that involves automatically draining the starchy water at a certain temperature, which requires special unusual mechanisms to be incorporated into the design.


Bootloader implementation

  • Location: Kuala Lumpur, Malaysia
  • Role: Embedded software engineer
  • Technologies: ARM, Cortex-A8, Samsung S5pv210

A free-form project demonstrating the bring up of an ARM Cortex-A8 based SoC to the point where it can load the Linux kernel over TFTP.