Mark A. Sompel
Phone: 408-***-****
e-mail: **********@*****.***
LinkedIn: https://www.linkedin.com/in/mark-sompel-9946a6/
Professional Profile
Experienced Principal Firmware Engineer with a proven track record in developing high-performance real-time systems and firmware architectures across diverse industries. Skilled in team leadership, agile methodologies, and delivering innovative products to market. Strong expertise in embedded software/firmware, product development, and cross-functional collaboration.
Key Skills
●Real time embedded software/firmware. (Bare metal to app layer.)
●Embedded products, Linux and RTOS based, sensors, audio codecs, BLE, WiFi (WICED, TLS), HDDs, SSDs, storage controllers, SOC verification, medical devices, RFID.
●Agile methodologies, waterfall, team leadership (up to 8 individuals)
●Languages: C, C++, assembly language, Python, micro-coded engines.
●RTOSs/OSs: Zephyr RTOS, Linux, ThreadX, Nucleus Multicore, FreeRTOS, event driven taskers.
●Interfaces/sensors: BLE, SATA, SCSI, SERDES, I2C, SPI, RS-232, GPIO, A/D. D/A, 3-axis accelerometers, audio, GPS.
●Diagnostics, manufacturing tests, firmware tests, self-test
●Chip verification, hardware verification, C, C++, Python, VHDL
●Hardware: Scopes, analyzers, digital and analog design, PCB layout, Schematics, KiCad, Eagle.
Patents/Papers
Quantum Multiple Servo Sector Write with Self Verification for Disk Drives #5,553,086
Sandisk Adaptive Mode Address Mapping Based on Host Usage #7,631,138
Sandisk Adaptive Mode Switching of Flash Memory Address Mapping #8,301,826
Shotspotter Method for measuring AGC gain indirectly by measuring noise #10,637,424
IEEE Precision and accuracy of acoustic gunshot location in an urban environment
Professional Experience
Sr. Firmware Engineer – Medisens Wireless 1/2021 – present
●Modified and updated BLE sensors and BLE to WIFI aggregator which are used for nursing home patient management, monitoring of diaper soiling. Added functionality to the devices as the requirements changed, Infineon wiced, TLS, and renesas BLE devices.
●Designed a more robust code packet structure. Could withstand occasional BLE packet losses.
●Designed a new connector pattern to detect mis-registration of the diaper sensors.
●Designed a low voltage, low power potentiostat circuit for the H2S gas sensor that would run to 1.8V.
Firmware/Hardware Consultant – part time 1/2020 – 8/2023
●Designed a PCB using multiple Raspberry Pi units, ethernet, power supplies, for a laser strain gauge monitoring system. LTE used for communication. (Xerox Parc/Eloque)
●Setup the Linux base code for sensor code development. (Xerox Parc/Eloque)
●Converted a Linux driver to a Zephyr RTOS driver (Hantec VC8000e encoder/decoder chip). (Meta)
●Managed overseas USB power distribution firmware team. (Meta)
●Established FW requirements for external vendors, implementing code standards and reviews. (Meta)
●Created universal PDU spec (VDM) for Meta custom power commands for VR Peripherals. (Meta)
Principal Firmware Engineer/Lead – Zume - (Company folded) 6/2019 – 1/2020
●Lead a SW project that would guarantee proper food assembly and delivery to customers. Worked with the vision system group, SW, and HW engineers to design and implement the solution.
●Mentored junior engineers with debugging, design, and general SW issues.
●Wrote code for a Bluetooth low energy (BLE) sensor based on the Nordic nRF52840. Measures, temperature, 3 axis acceleration, light. Reports that information through BLE register protocol.
●Wrote SPI and flash drivers for a specific SPI flash chip to store sensor data.
●Wrote Nordic code that supported FCC part 15 testing, making it easy to run the tests.
Firmware Consultant 3/2019 – 6/2019
●Solved issues with the conversion of code from a single core processor to a multi-core processor, six axis robotics controllers. Converted code from ThreadX to Nucleus multicore. C/C++ (Omron)
●Set up U-boot to load code over the ethernet instead of using JTAG. 100X faster. (Omron)
●Hand tuned the system for asymmetric processing. Symmetric processing was not deterministic enough. (Omron)
●Solved issues with configuration and control of a remote robotics device that corrects chemistry in liquids. Samples of a fluid are taken, analyzed, and chemicals are added to the liquids as necessary. Gave recommendations for re-designing the firmware. Code was written in C and Python. (Stealth Startup – gone)
Principal Firmware Engineer – Shotspotter – Linux based gunshot sensor 7/2017 – 3/2019
●Improved sensor sensitivity. Modified hardware, mic cavity, and software for gunshot detector. Linux platform. 10dB signal to noise improvement under windy and rainy conditions.
●Debugged a TI Linux driver MMC issue in the Linux kernel.
●Modified sensor design for underwater use to detect bomb fishing, utilizing hydrophones, to detect ocean poaching.
●Solved memory space issues by replacing audio management and configuration Python code with C++.
●Solved non-linear hardware audio channel issues for blast fishing hydrophones. Corrected FET amplifier design.
●Audio channel utilized audio codecs with AGC. Implemented a method for measuring AGC indirectly since codecs do not typically allow access to the AGC circuit gain register.
Principal Firmware Engineer - Violin Memory – (Company folded) 1/2016 – 12/2016
●Embedded Linux with RTOS multicore controller.
●Helped a brilliant engineer with Asperger’s and ADHD to focus on one problem at a time. I patiently worked with this person after everyone else gave up.
●Solved a speed issue with multiple flash chips by designing a hardware queueing mechanism for handling the flash ready/busy bit and flash timeouts requiring minimal firmware overhead. Eliminates ready/busy bit polling.
●Architected new flash management system to get rid of hardware-based write/erase timeslots which improved performance and updated certain error recovery scenarios.
●Designed a method for scaling write performance 2X-4X over current design utilizing their managed RAID5 storage hardware in a different way.
Principal Firmware Engineer – Link-a-media/SKHynix 9/2013 - 1/2016
●Designed the firmware architecture and implemented the low-level NAND driver/sequencer, and error handler for a high-end enterprise storage SSD. Implemented the flash interface commands. It is an event driven state machine design which controls 64 Flash devices. Code was written in C and Microcode for the flash engine.
Senior Firmware Engineer - Samsung 5/2010 - 9/2013
●Designed and implemented the NAND flash and NAND controller portion of a NAND storage simulator. The simulator interfaces directly with the firmware. C++ on windows and Linux.
●Designed and implemented test and diagnostic code for SSDs, C++, Python.
●Worked on mobile phone platforms to implement EMMC interface code.
●Designed and implemented SAS/SCSI commands and self-test for enterprise SSD products. C++
Principal Firmware Architect – Tagent - (Company folded) 10/2005 – 5/2010
●Architected and implemented the firmware design and communication protocol for an RFID reader and power node network. The reader was Linux based. I brought up Linux on processor boards, Atmel SAM9G20, 9260, and OMAP 35x. Application code was written in C++. Read channel board firmware was written in C and communicated via USB to the Linux board.
●Wrote firmware that supported Tagent’s RFID chip bring up efforts, written in C/C++ for Atmel SAM9G20, ARM 7, and OMAP 35x processor.
●Debugged Microwave circuitry to 6.8 GHz.
Firmware Consultant 1/2004 – 12/2010
●Designed and implemented a new seek profile used to increase track density on disk drive. C++ - Toshiba
●Designed and implemented hardware and firmware for magnetometers which utilized a mesh network for communications. Military contract. - BDS
●Designed and implemented code for a hand-held exercise device. It utilized USB for the host communications, and had touch sliders, buttons, and a small LCD screen for the UI. Coded in C.
●Designed, implemented, and documented the firmware for a Guglielmi Detachable Coil Power Supply, used to neutralize saccular aneurysms in the brain. Code was written in 8051 assembly. - Siemens
●Team Lead, Western Digital, Disk drive manufacturing test system. Solved the manufacturing issue of having the ability to test drives with different interfaces on one test system. Architected, designed, and implemented a real time multi-threaded application and hardware drivers used in the disk drive manufacturing test process. Implemented PATA/SATA drivers, and WD proprietary internal drive commands. Nucleus was the RTOS used. Code was written in C++. UML was used to hash out the design. System diagnostics were implemented to debug drive manufacturing hardware on failures. System utilized motor control and sensors to detect and move test units around the system. Western Digital
●Mentored engineers in C++, OOD techniques, and code debugging. – Western Digital
Firmware/Chip Verification Engineer - Sierra Logic Roseville, CA – (Company closed) 3/2002 to 1/2004
●Designed and implemented software, firmware, and Verilog code to perform chip verification. I was responsible for the SATA stack and I2C.
●Code was written in Verilog, C, C++, and ARM 7 assembly language.
Principal Software/Firmware Engineer/Architect Xyratex - San Jose 1/2001 to 3/2002
(Layoffs due to post 9/11 economy crash)
●Architected a fully redundant Fiber channel to serial ATA RAID controller.
●Designed and implemented configuration management, RAID caching algorithms, LBA mapping, and logical volume management. Code was written in C++.
Principal Engineer/Architect SanDisk Sunnyvale, CA 1/2000 to 1/2001
●Designed and implemented a Flash Card Simulator used to hash out flash memory algorithms. C++
●Designed and implemented flash storage algorithms which improved flash performance. C++
●Designed the software architecture for the next generation of flash products. UML
●ThreadX was the OS used.
Sr. Advisory Engineer/Architect - Fujitsu - San Jose, CA (Disk operations shut down) 1998-1/2000
●Architected, designed, and implemented disk drive RW firmware used across the disk drive lines which contained defect management, formatting, servo correction, and RW error handling. The designs were object oriented and focused on code reusability and hardware independence.
●The firmware development cycle time was reduced 60%. Code design – UML. Code written in C++.
●Product costs went down 7% per drive by exchanging hardware-supported functions with software.
Principal Engineer/Architect - Seagate Technologies San Jose, CA (Company moved to CO) 1996 to 1998
●Developed and implemented algorithms and code for disk drive read/write, thermal asperity recovery, defect scanning, PRML channel and MR head tuning. Code was written in TI DSP assembly.
●Architected common modular drive firmware that supported multiple host interfaces, power management, and multiple configurations.
●Developed cache management, command re-ordering, read on arrival algorithms.
Firmware Engineer III - Quantum Corporation, Milpitas, CA 1988 to 1996
●Created and developed Quantum’s manufacturing self-tests and diagnostics designed and implemented channel and head tuning, servo burst correction, run out correction, and defect scanning algorithms.
●Developed unique servo writer algorithms which reduced servo writer time 90% and increased servo writer yields from 83% to 98%.
●Led the effort to standardize code across product lines, reducing development time, saving money, and reducing time to market.
●Developed servo correction algorithms, improving the error margins for reading and writing data by an order of magnitude. The manufacturing yields subsequently increased by 7-12%.
●Designed and implemented SCSI and ATA commands, read/write code, defect management, channel and zone management, read/write sequencer microcode, servo runout measurements and correction, read/write head and channel tuning, read/write error recovery, thermal asperity recovery and power management. All code was written in assembly language for NEC K series processors.
●Wrote read/write channel sequencer microcode that controlled the layout of the data on the disk surface.
Software/Hardware Engineer, Matrix Imaging Palo Alto, CA 1985 to 1988
(Great place to work. The company was purchased and shut down by Kodak.)
●Worked on the image capture and image processing microcode for a digital radiography system that utilized AMD bit slice processors.
●Solved analog noise problems in the digitizer. No noise in the images.
●Designed and implemented the A/D portions of the design.
●Designed and implemented hardware and software components for system diagnostics.
●System redesign, a two-year project, was completed 6 months ahead of schedule. Controller code was written in C, image-processing code was implemented in the bit-slice processors as microcode. System sequencer microcode was implemented as macros.
●
Engineer Resonex Imaging Sunnyvale, CA 1983 to 1985 (Company shut down.)
●Designed and developed the sequencer code which drove the imaging processes for an MRI machine.
●Wrote system test software for self-diagnostics.
Education
Penn Technical Institute, ASEE GPA 4.0
Accomplishments
Eagle Scout
Side Projects
●Anti-Poaching Non-profit - Involved with supplying technology for detecting and deterring poaching on land and sea using Shotspotter’s infrastructure with modified sensors designed for the rural and underwater environments.
●Designed a modular, battery backed, solar system to use on my house to disconnect from the grid. I built one for my truck to supply energy to electronics and a refrigerator, independent of the engine.
●Designed and built modules for a modular synthesizer. Designed the PCBs. Two modules are strictly analog, other modules are DSP driven utilizing a 192 kHz sample rate.
●Speech synthesizer based on the Intel 2920 DSP - 1980
●Digital Light board for a disco. Contained 64 channel digital faders, strobes, switches, and strobes triggered via the music. The trigger generator was tunable to the music. - 1976, 1985
●Highly sensitive magnetometer - 2009 - Redesign 100x previous sensitivity - 2012