Omer Bartal, Microcontroller Programming Developer in Tel Aviv-Yafo, Israel
Omer Bartal

Microcontroller Programming Developer in Tel Aviv-Yafo, Israel

Member since November 23, 2015
An autodidact software developer and architect, Omer started gaining experience at a very young age. He's a consummate professional in the fields of Linux kernel, embedded systems, embedded Linux, network related software, and distributed software with experience supporting hardware schematics planning and board bringup. He also has LAN and WAN experience in all layers and in network structure. Omer is a fast learner and is very ambitious.
Omer is now available for hire


  • Undisclosed
    Embedded Linux, Atmel SAMD, Omnivision Image Sensor, Freescale iMX6...
  • Undisclosed
    Low-level Linux, Linux auditing, auditd, Ubuntu, Debian, Redhat, Centos, SELinux
  • Undisclosed
    Linux Kernel, Embedded Linux, STM32 family microcontrollers, I2C, SPI, MDIO...


  • C, 14 years
  • Python, 14 years
  • Cross-platform, 11 years
  • Microcontroller Programming, 11 years
  • Linux Kernel Programming, 9 years
  • Embedded Linux, 9 years
  • MATLAB, 5 years


Tel Aviv-Yafo, Israel



Preferred Environment

Emacs on a textual terminal

The most amazing...

...project I've worked on was a zero-copy TCP/IP stack in the Linux kernel. It worked alongside the kernel's stack. Data was reassembled into userspace memory.


  • Embedded Software Engineer

    2016 - PRESENT
    • Built freescale iMX6 embedded Linux bringup.
    • Developed an Omnivision image sensor driver.
    • Created Atmel SAMD microcontroller bringup.
    • Built Atmel SAMD drivers for cellular modem, wifi, and GPS.
    • Programmed a bootloader for the Atmel SAMD.
    • Implemented a protocol between the Atmel SAMD and the iMX6 processor.
    • Designed the complete solution system.
    Technologies: Embedded Linux, Atmel SAMD, Omnivision Image Sensor, Freescale iMX6, Cellular Modem, GPS, Wifi, V4L2
  • Low-level Linux Engineer

    2015 - PRESENT
    • Implemented the Auditd plugin (audispd plugin). The audit events are parsed and presented in a more usable structure.
    • Consulted the Linux kernel code needed in order to fully understand what to expect in the auditing information. The application needs to support multiple kernel versions and distributions and SELinux configuration is needed in order to avoid the SELinux subsystem from blocking the operation of the plugin.
    Technologies: Low-level Linux, Linux auditing, auditd, Ubuntu, Debian, Redhat, Centos, SELinux
  • Low-level Embedded Software Engineer

    2009 - 2016
    • Created a Linux-kernel-like compilation model where the same code compiles with different features for different boards with different hardware and hardware revisions - altogether 14 different setups were supported.
    • Designed an I2C based communication protocol between the main board, running a Linux based system, and the STM32 device.
    • Built a Linux library around the I2C protocol with Python boost bindings. The library ran on multiple hardware platforms - x86 and ARM based.
    • Created Python scripts controlling the hardware and responding to hotplug events to configure the hardware.
    • Implemented a small and flexible kernel on the ARM based STM32 chip. Modules register themselves and request kernel resources from the kernel at run time. A cooperative scheduler manages the system and provides debugging capabilities.
    • Implemented an I2C slave based bootloader for the STM32 chip.
    Technologies: Linux Kernel, Embedded Linux, STM32 family microcontrollers, I2C, SPI, MDIO, Device drivers, Python, ARM
  • Founder and Technical Leader

    2011 - 2015
    • Designed and implemented a distributed processing system to cope with the masses of computations and back-testing needed for the research.
    • Designed a storage paradigm for the data, calculation results, and the state of ongoing calculations.
    • Designed advanced and flexible code structures that can handle complex econometric research.
    • Calculated the improbability between Python and Malab.
    • Implemented economic models that integrate with each other.
    • Implemented a multi-process, high availability system.
    • Built complex IPC mechanisms.
    Technologies: Algorithmic trading, Bitcoin, REST API, Distributed processing, High availability, Amazon EC2, Python, Matlab, Linux administration
  • Embedded Linux Professional

    2008 - 2011
    • Embedded Linux bringup.
    • Adapted U-Boot.
    • Built Linux kernel device drivers.
    • Created cross-compiling root file systems and custom packages.
    • Provided Linux-related troubleshooting.
    • Built root filesystems.
    Technologies: Embedded Linux, U-Boot, ARM, x86, PowerPC, Linux Kernel, Character device drivers, Block device drivers
  • Linux Kernel Engineer

    2008 - 2008
    • Implemented a zero-copy TCP/IP stack. The stack worked side-by-side with the Linux kernel. It attached to the Ethernet driver and reassembled the TCP session into the userspace application's memory.
    • Implemented a memory mapped double-buffer IPC between the kernel and the userspace application.
    Technologies: Linux Kernel, TCP/IP
  • Embedded Linux Bringup Team Leader

    2007 - 2008
    • Led a team of embedded engineers. The team implemented Linux drivers for a proprietary embedded platform with a Super Hitachy CPU.
    • Developed character device drivers.
    • Developed interrupt driven block device drivers.
    • Ported an existing software to the embedded Linux framework.
    • Built environment planning and bringup.
    • Cross-compiled the environment and cross-built the root filesystem.
    Technologies: Embedded Linux, Linux kernel, Char device drivers, Block device drivers, Super Hitachy
  • Linux Administration

    2002 - 2008
    • Administered a Linux server.
    • Supported build systems.
    • Built Asterisk PBX.
    Technologies: Linux
  • System Architect

    2007 - 2007
    • Designed a network processing embedded system.
    • Solved theoretical networking issues.
    • Designed a communication scheme between the software and a network processor.
    • Implemented proof of concept.
    Technologies: Distributed embedded systems, network processing systems
  • Embedded Software Engineer

    2006 - 2007
    • Implemented a USB Mass Storage Class device.
    • Emulated FAT FS to provide an easy method to provide data to the embedded system.
    Technologies: USB, Cypress FX2, FAT FS
  • Embedded Software Engineer

    2005 - 2006
    • Provided network-related application layer processing for high-availability systems.
    Technologies: C, C++, Embedded, Proprietary/No Operating System, Distributed Processing
  • Software Engineer

    2005 - 2005
    • Implemented a high bandwidth, application layer, traffic generator. Using Epoll, the event driven application managed thousands of TCP sessions.
    Technologies: Linux, C, TCP/IP
  • Network Test Lab Administration and QA Automation Engineer

    2002 - 2005
    • Configured traffic generators.
    • Configured network equipment, especially Cisco switches, routers and ADMs.
    • Planned complex WANs to carry the traffic created by testing equipment.
    • Automated control of network traffic generators using TCP, Python or Windows API when there was no standard API.
    Technologies: TCL, Python, Linux networking tools, WAN technologies (SDH, PDH, etc), LAN
  • Windows API Professional

    1997 - 2001
    • Implemented mouse event hooking and OCR from on-screen text using VB6.
    • Built website scraping and crawling scripts.
    • Developed mouse and keyboard emulators.
    Technologies: Windows API, VB6


  • ARM MCU Kernel (Development)

    Implemented a small and flexible kernel for an ARM based STM32 MCU. Used a Linux-kernel-like compilation model where the same code compiles with different features for different boards with different hardware and hardware revisions. Altogether 14 different setups were supported.
    The main communication method was I2C based and it supported communication between a Linux based CPU as well as for the STM32 instances to communicate between them.

    The I2C master side code library compiled both on the Linux CPU as a shared library and statically on the STM32 kernel. On the Linux side the library had Python boost binding which allowed for scripts to be written to control the STM32 functionality.

    The kernel had run-time registration mechanisms for registering drivers and attaching to resources, a cooperative scheduler and advanced debugging capabilities. A I2C slave based bootloader was implemented to manage firmware upgrades.


  • Languages

    Embedded C, C, Python, C++
  • Paradigms

  • Platforms

    Kernel Programming, Embedded Linux, Debian Linux, Linux
  • Other

    Embedded Systems, Microcontroller Programming, I2C, Operating Systems, Large Scale Distributed Systems, Linux Kernel Drivers, Linux Kernel Programming, Boost.python, Linux System Administration
  • Tools

    U-Boot, MATLAB
  • Libraries/APIs

    Windows API

To view more profiles

Join Toptal
I really like this profile
Share it with others