Experienced software developer (embedded software, middleware, system software) with 10-year background, skilled in C, embedded Linux systems (administration, kernel-space/device drivers development, shell scripting), build automation. Demonstrated history of working in the computer software industry. Worked with various Linux-powered devices including smartphones, smart TVs, Blu-ray players, lighting consoles and networking devices. Experience in bare metal programming for ARM Cortex-M microcontrollers.
Senior Embedded Software Engineer
Freelance
Oct 2020
- Present
location_on
Ukraine
- modify i.mx8mm ethernet linux driver to share IEEE1588 PTP timestamp with Cortex M4 firmware;
- bring-up of runc-based container with several software components inside, integration of the container into Yocto build system to include the container image into host OS software image;
- bring-up and integration into Yocto build system of Jailhouse FreeRTOS inmate on Cortex A53 core of i.mx8mm with RPMsg communication support, peripherals bring-up in Jailhouse: I2C, SPI, GPIO, UART, GPT;
- implement linux kernel drivers to forward UDP traffic between Cortex-A7 and Cortex-M4 cores on STM32MP1 (using RPMsg framework);
- implement new features for Siklu EtherHaul and MultiHaul series devices:
• PTPv2 Transparent Clock support with hardware timestamping;
• updated toolchain and libc;
• time-zones support;
- maintaining build system;
- working with Marvell 88E6393X switch, Marvell 88X3310P PHY;
- troubleshooting and bug fixing.
OS Senior Engineer
Huawei Technologies
Sep 2019
- Feb 2020
location_on
Germany
Research and development of various components of microkernel-based OS:
- dynamic deadlock detection system (lockdep);
- low-level tracing library (formal verification passed).
Software developer
NetModule GmbH
Apr 2018
- Aug 2019
location_on
Germany
- development of MFD and GPIO drivers for FPGA (target: linux kernel; understanding of schematics, datasheets and FPGA documentation);
- development of linux GPIO driver for XR21B1420 USB GPIO expander;
- development of userspace hardware abstraction layer, architectural improvements and refactoring;
- debugging and troubleshooting: fixing the most complex bugs in user- and kernelspace, including multithreading issues, memory corruptions and firmware bugs in connected peripheral devices;
- port custom linux distribution from OpenWRT to Yocto;
- perform major linux kernel version upgrade: porting drivers, solving all arising issues;
- introducing software development, testing and troubleshooting best practices, mentorship for junior developers, code reviews.
Software developer
MA Lighting Technology GmbH
Feb 2016
- Mar 2018
location_on
Germany
- USB vendor class host driver implementation (PC, userspace: libusb, libudev);
- bare metall programming for ARM Cortex M4, Cortex M7 (USB vendor class device driver, scheduling, data structures); understanding of linker scripts and C runtime initialization;
- PC (host) ⇔ microcontroller (Cortex M4, Cortex M7) communication protocol implementation, integration with other software components;
- build system.
Engineer, promoted to Lead Engineer
Samsung R&D Institute Ukraine (Samsung Electronics)
Sep 2012
- Jan 2016
location_on
Ukraine
- Digital Rights Management: middleware implementation according to specification, security review and certification passed;
- virtualization project (Linux host & guest, KVM, qemu-system-arm): system bring-up, knowledge of linux boot process, various linux system components, system administration;
- ARM TrustZone technology: NWD-SWD low level interoperation;
- C/C++ source code obfuscation: in-depth knowledge of build process, different build systems and toolchains, build automation. Some knowledge of ELF file format, ARM assembly/ABI.