Summary
Embedded Software Developer with a demonstrated history of working with clients in the aviation, consumer, home automation, industrial, and medical sectors. I have a Master’s degree in Electrical Engineering with a focus on microprocessors and microarchitecture which gives me a deeper perspective when developing embedded applications and board-support packages using open-source technologies.
Education
Title: Characterization and analysis of critical paths in asynchronous integrated circuits.
Contributions and achievements:
- Design and implementation of a tool allowing the use of traditional CAD software with asynchronous integrated circuits;
- Automatic detection of asynchronous critical paths in order to validate them using conventional tools;
- Involved in the development cycle of an asynchronous processor at Octasic.
Experiences
Provide expert consulting services to clients in the aviation, consumer, home automation, industrial, and medical sectors:
- Create custom BSPs with either Buildroot, Yocto, or OpenWrt;
- Adapt and configure U-Boot and Barebox;
- Debug and fix Linux drivers, create device trees for custom boards, profile kernel performance, and tune RT patchset usage;
- Maintain and add new features to legacy code and create custom client applications;
- Add hardware and system tests to validate the client’s platform and BSP;
- Participate in design, code, and documentation reviews;
- Understand and adapt multiprocessor systems and multithreaded applications;
- Upstream patches to the respective open-source communities.
Develop and maintain µC/OS-III:
- Add features : task protection with an MPU and implement a syscall interface;
- Improve performance : reduce memory usage and increase execution speed;
- Create ports, in assembly, for the eSi-RISC, C28x, and ARC architectures;
- Review designs and code developed by the other members of the team;
- Implement a new, reliable, and efficient test environment for the runtime tests;
- Collaborate in the OpenAMP Workgroup of the Multicore Association.
Create the lab project for the TEL136 course which guides the students in building a network analyzer:
- Use Quartus and Qsys to create a system based on the Nios II processor;
- Develop an abstraction library to ease the use of the Ethernet controller;
- Design tests that generate packets to validate the student’s application;
- Write the lab book and the evaluation grids.
- Drive the lab sessions, evaluate projects and review the reports for undergraduate level courses in software development, microprocessor architecture, and digital circuit design.
- Automate the characterization of evolutionary filters on FPGA : synthesis, place & route, evaluate required resources and power.
- Create tools in C# to simplify the tasks of the developers.
- Design a tool in Perl that generates an instruction disassembler in VHDL.
Skills & Proficiency
Assembly (ARC, ARM, C28x, C6x, eSi-RISC, MIPS, and x86), C, C++, GNU make, Java, LaTeX, Perl, Python, Shell scripting, Verilog, and VHDL
Altera Quartus and Qsys, ModelSim, Xilinx ISE and Vivado
GNU/Linux, Mac OS X, QNX, Windows, µC/OS-II, and µC/OS-III
git, svn, and cvs
Barebox, Buildroot, Docker, OpenWrt, U-Boot, and Yocto