Omer Bartal
Verified Expert in Engineering
Microcontroller Programming Developer
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.
Portfolio
Experience
Availability
Preferred Environment
Emacs
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.
Work Experience
Embedded Software Engineer
Undisclosed
- 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.
Low-level Linux Engineer
Undisclosed
- 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.
Low-level Embedded Software Engineer
Undisclosed
- 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.
Founder and Technical Leader
Zircobit
- 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.
Embedded Linux Professional
Freelance
- 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.
Linux Kernel Engineer
Undisclosed
- 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.
Embedded Linux Bringup Team Leader
IDF
- 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.
Linux Administration
IDF
- Administered a Linux server.
- Supported build systems.
- Built Asterisk PBX.
System Architect
IDF
- 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.
Embedded Software Engineer
IDF
- Implemented a USB Mass Storage Class device.
- Emulated FAT FS to provide an easy method to provide data to the embedded system.
Embedded Software Engineer
IDF
- Provided network-related application layer processing for high-availability systems.
Software Engineer
IDF
- Implemented a high bandwidth, application layer, traffic generator. Using Epoll, the event driven application managed thousands of TCP sessions.
Network Test Lab Administration and QA Automation Engineer
IDF
- 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.
Windows API Professional
Freelance
- Implemented mouse event hooking and OCR from on-screen text using VB6.
- Built website scraping and crawling scripts.
- Developed mouse and keyboard emulators.
Experience
ARM MCU Kernel
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.
Skills
Languages
Embedded C, C, Python, C++, Visual Basic, Tcl, Assembly, Assembler x86
Paradigms
Cross-platform
Platforms
Kernel Programming, Embedded Linux, Debian Linux, Linux, STM32, Amazon EC2, Ubuntu, Debian, CentOS, Amazon Web Services (AWS)
Other
Embedded Systems, Microcontroller Programming, I2C, Operating Systems, Large Scale Distributed Systems, Linux Kernel Drivers, Linux Kernel Programming, Boost.Python, TCP/IP, Linux Kernel, Device Drivers, ARM, Serial Peripheral Interface (SPI), Management Data Input/Output (MDIO), LAN, Linux Network Stack, WAN, USB, Algorithmic Trading, Bitcoin, Linux Administration, RHEL, SELinux, Atmel, GPS, WiFi, Image Sensors, Cellular, v4l2loopback
Tools
U-Boot, MATLAB, Emacs
Frameworks
PowerPC
Libraries/APIs
REST APIs, Windows API
How to Work with Toptal
Toptal matches you directly with global industry experts from our network in hours—not weeks or months.
Share your needs
Choose your talent
Start your risk-free talent trial
Top talent is in high demand.
Start hiring