-
Sequans Communications
- Platform Software Engineer for LTE 4G
Colombes
2010 - maintenant
June 2010 – Present
Work on platform enablement, system and device drivers for SQN3010, a baseband (MAC and PHY) LTE SoC.
-
Pace
- Embedded Software Engineer
2009 - 2010
November 2009 – June 2010 (8 months)
Low level system programming for HD TV WiFi Zapper satelite set-top box solution based on ST40 SoC with SH4 RISC processor, running embedded Linux as an OS of choice :
- Work on ethernet and USB drivers for U-Boot bootloader
- Bundled Linux image with intiramfs for use on USB key to simulate missing flash memory
- Rewrote U-Boot procedures and changed low-level initialization (poke table) in order to use it with proprietary bootcode with strong security constraints
- Wrote (in assembly language) bootstrap procedure for auto-decompression of system binary in specific format and implemented 29/32-bit addressing mode switch needed to boot Linux image. Implemented mechanism to pass Linux boot arguments from U-Boot to kernel via bootstrap code
- Debugged NAND Flash driver in U-Boot and resolved timing and Bad Block management issues. Integrated similar solution in Linux system using MTD Utils and JFFS2 filesystem
- Implemented MAC address detection from NOR Flash and appropriate environment setting in U-Boot and Linux
- Implemented assembly code which places Audio and Video companions (precompiled binaries) to correct shared memory locations before jumping to Linux entry point and freed necessary RAM memory by reducing root filesystem size
- Attended 4-day educational semminary and courses titled "Embedded Linux kernel and device drivers programing" organized by ORSYS group in Paris, France
- Wrote Perl script which merges several kernel modules into one (by renaming conflicting symbols) and implemented related mechanism via shell scripts and Makefiles, needed for correct dynamic loading of proprietary drivers
- Work on Linux kernel security hardening by re-configuring kernel, rootfs (Busybox), uClibc and user-space scripts to respect security constraints
- Implemented kernel module to read NVRAM and trigger userspace helper programs for mtd subsystem processing
-
SPiDCOM Technologies
- Embedded Software Engineer
PARIS
2008 - 2009
December 2008 – November 2009 (1 year)
Firmware design and implementation for new SPiDCOM SPC300 HomePlug AV protocol (powerline communication) compliant SoC. Creation of BSP and Linux (with U-Boot) SW bundle for ARM based chip :
- Implemented SDRAM controller configuration under U-Boot bootloader in ARM assembly language
- Designed (specification creation) a custom protocol for firmware update based on Ethernet-type Homeplug AV MME messages and implemented it in C. Wrote PC host client application (based on Linux raw sockets) to test and debug protocol implementation.
- Fully wrote MAC controller (Ethernet) driver and enabled TFTP image boot
- Enabled ARM MMU (caches and pagetable set-up, defined virtual to physical mapping, etc...) under U-Boot in order to enable DCache, which significantly speeded up Linux image transfer and all pre-boot operations
- Implemented (ARM assembly) code for autodetection of parameters stored on flash (NVRAM) used on board wake-up and debuged implementation with jtag and GDB. Wrote OpenOCD jtag and GDB scripts to speed up debugging process
- Wrote (in C) Linux image boot procedure that supports dual image booting with candidate selection based on parameters stored in custom image headers. Wrote user space applications for creating these headers and modified Buildroot Makefiles to enable their pre-pending on image build
- Implemented (from scratch) library for manipulating ethernet MME message structures and wrote unitary and functional tests in a form of multhithreaded application (POSIX threads) using libcheck and TUN/TAP vitrual ethenet inteface.
- Implemented (from scratch) library for system configuration and wrote unitary and functional tests
-
Texas Instruments
- Multimedia Software Engineer
Villeneuve-Loubet
2007 - 2008
August 2007 – December 2008 (1 year 5 months)
DSP Architecture and Applications Group
Module-level verification of In-Loop DeBlocking Filter and Motion Estimation modules for digital video coding (compliant to several modern standards: H.264, MPEG-4, etc.), part of the IVA Hardware Accelerator for OMAP4 platform :
- Fully wrote C testbenches, embedding them in the reference decoder code (provided by third party vendors) and programmed filter C model; Development done on Windows (MS Visual C++ development environment) and Linux
- Ported all code to Linux and devoloped C interface and synchronization mechanism to enable IPC with Specman RTL simulation tool in order to test Verilog (hardware) code
- Wrote various Perl scripts and created Perl/Tk GUI application to enable automatic running of the tests, automatic logging and report creation.
- Defined and implemented (in C) functional coverage and algorithms to extract minimum set of testng conformance video bitstreams needed for full coverage
- Provided training and work organization for two engineers who joined the project and lead this team until the successful end of the project
-
Texas Instruments
- GSM/GPRS/EDGE L1 Software Engineer
Villeneuve-Loubet
2006 - 2007
July 2006 – August 2007 (1 year 2 months)
GSM/GPRS/EDGE L1 Software Engineer
- Provided in depth support during GSM/GPRS/EDGE Layer1 Real-time embedded software development
- In charge of MCU and DSP L1 SW non-regression testing spread over several programs that used several TI OMAP platforms with ARM 9 / ARM 11 and TI C55x DSP
- Extensive laboratory experience - proficiency with various modern mobile telephony protocols test equipment (ANITE, RACAL, CRTU, CMU200, CRTP, etc.)
- Analyzed L1 Trace, troobleshooted L1 sofware in case of issues
- Fully developed GSM Voice “audio loopback” and BER test cases, implemented complete automation of GSM Voice test process for RACAL AIME 6103.
- Developed ANITE/Agilent SW applications (in C) for testing 2G/UMA (GAN) handovers
-
FNX Solutions
- Software Engineer
2005 - 2006
August 2005 – June 2006 ( 11 months)
FNX SIERRA System (system for the management and processing of capital market transactions) development and debugging :
- Worked on system coding in C under Solaris within the international team, remotely connected to servers in Philadelphia, USA
- Designed and implemented various changes in API used by real-time risk-management applications. Rewrote, created, tested and debugged new libraries needed for implementing additional (intermediate) layer for applications/database connectivity (business objects and data transfer objects)
- Thoroughly debugged and resolved issues for real-time risk-management applications (system, network and GUI)
- Fully wrote various Perl and BASH scripts and successfully implemented automatization of development process
-
Computers Centre of School of Electrical Engineering, University of Belgrade
- Research Assistant
2004 - 2005
August 2004 – August 2005 (1 year 1 month)
LINSEC – Linux Security and Protection System, project introducing Mandatory Access Control (MAC) mechanism into Linux (as opposed to existing Discretionary Access Control mechanism) :
- Linux kernel hacking (file system domain access control, socket access control)
- Ported the legacy system on 2.6.x “vanilla” kernel and resolved various errors due to GCC incompatibility issues
- Developed enhance for user-space tools for controlling the system patch