0% found this document useful (0 votes)
178 views6 pages

Mychaela Falconia (She/her) 760 787 0545: Core Skill Areas

Mychaela Falconia is an expert in embedded systems and firmware with over 30 years of experience. Their skills include system programming, embedded Linux, digital hardware design, and technical writing. Recent projects involved developing and maintaining heterogeneous Linux and RTOS environments on ARM and MicroBlaze systems for telecommunications applications with strict real-time constraints. Core areas of expertise are embedded Linux, general embedded systems, digital hardware, and general programming.

Uploaded by

Kritika Shukla
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
178 views6 pages

Mychaela Falconia (She/her) 760 787 0545: Core Skill Areas

Mychaela Falconia is an expert in embedded systems and firmware with over 30 years of experience. Their skills include system programming, embedded Linux, digital hardware design, and technical writing. Recent projects involved developing and maintaining heterogeneous Linux and RTOS environments on ARM and MicroBlaze systems for telecommunications applications with strict real-time constraints. Core areas of expertise are embedded Linux, general embedded systems, digital hardware, and general programming.

Uploaded by

Kritika Shukla
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 6

Mychaela Falconia (she/her)

760 787 0545


[email protected]
• System programming (operating system kernels, drivers, etc.)
• Firmware (SW/HW interface, board bring•up, etc.)
• Digital hardware (ASICs, FPGAs, SoCs, etc.)

Core skill areas:

Embedded Linux:
• Worked on ARM (TI OMAP, Atmel AT91, Faraday), PowerPC (Freescale MPC8xx, IBM
PPC44x/46x, ‘‘classic’’ 6xx/7xx/74xx) and x86 processors.
• Brought up embedded Linux kernels starting from both standard kernel.org sources and
vendor drops.
• Worked on BSPs and drivers, including ports to new processors, SoCs and SBCs.
• Kernel code: familiar with all essential good practices of writing code for the Linux kernel,
including portability, use of standardized abstractions and APIs, concurrency,
synchronization, interrupt handlers and bottom halves, kernel threads, SMP safety.
• Bootloaders: U•Boot, processor vendor•specific mini•bootloaders, my own StarMON
bootloader family.
• Embedded Ethernet, USB, serial, I2C, SPI and GPIO peripherals.
• NOR and NAND flash hardware, Linux MTD subsystem, JFFS2, UBI/UBIFS.
• Root file system builds: Linux From Scratch, Cross•LFS, Timesys, Buildroot, Wind River
Linux.
• Implemented several strategies for fail•safe field firmware updates and product life cycle
support.
• Intricacies of timekeeping in embedded systems: time zones, leap seconds, NTP, RTC chips.

General embedded systems:


• Wrote and maintained ‘‘OS•less’’ code (running on bare metal) for M68K, PowerPC and
ARM processors.
• Bare metal code includes bootloaders, hardware verification and validation tools, and those
end applications that are intended to run ‘‘OS•less’’.
• Very familiar with cross•compiler toolchains, ABIs, linker scripts, compiler internals, build
process fine•tuning and debugging in the bare metal environment.
• I enjoy looking over schematics and HDL code, working alongside with hardware
engineers, and bringing a board or a whole system up from zero.
• Been doing this for a long time: I wrote my first ROM monitor, mini•OS and integrated
development environment for a PDP•11 clone when I was 11.

General programming:
• C and assembly on all processors listed above.
• Standard TCP/IP protocols and socket programming.
• POSIX threads.

Page 1 of 5
• Very experienced in hand•holding application programmers (C++, Java, etc) when they need
to interface with the lower level system code that I am responsible for, debugging issues
alongside with them.
• Tools: Makefiles, shell scripts, version control (git, Mercurial, SVN, CVS, Perforce),
automated builds and continuous integration (Hudson, Jenkins), Agile processes.
• Cryptography basics.

Digital hardware:
• I’ve never held the title of a hardware engineer, but I know hardware, from SSI/MSI to
FPGAs and ASICs.
• Have designed my own digital HW of moderate complexity: DSL modems, GSM cellphone
development boards, USB gadgets, some miscellany.
• I can read schematics and HW design documentation with a solid understanding of the
underlying physics that real hardware is based on.
• Worked with Xilinx Virtex 7 FPGAs (Vivado) most recently, previously worked with Altera
FPGAs and CPLDs and Quartus II development tools.
• My primary HDL is Verilog.
• Right at home in front of an oscilloscope or logic analyzer.

Technical writing: I’ve written a lot of specs and technical documentation.

Email Write-up from candidate:


I have never worked with VxWorks in a job capacity, but I have played a good bit with a VxWorks-based
system made by Nokia: it was the D50 DSLAM, originally by Diamond Lane, later acquired by Nokia.
An industry contact gave me a DEMI board for connecting directly to individual cards in a D50 system, and I
played a good bit with their VxWorks environment. I realize that this type of experience doesn't amount to
much, but given my extensive knowledge in the more general domain of embedded systems and RTOS
environments, I am very confident that I will easily pick up VxWorks if given a chance.

Recent major projects:

March 2013 — present


CarrierComm (Encinitas, Carlsbad and Rancho Bernardo, CA)
Embedded Linux and RTOS Consultant
• I developed and maintained a heterogeneous Linux+RTOS environment on CarrierComm’s
custom ASIC with 4 ARMv5TE processor cores from Faraday. CarrierComm’s main
product based on this ASIC is now widely deployed in the field, and all of my low•level
code has been a critical component all along.
• My involvement in the project spanned both pre•silicon and post•silicon phases. In the pre•
silicon phase I worked on a Virtex 7 FPGA board that served as an emulation platform,
debugged and troubleshot innumerable issues with this FPGA platform and the vendors’ IP
cores, wrote several pieces of Verilog RTL to work around some of these issues, and got as
far as Linux booting on CPU 0 (with NAND flash and Ethernet), then running a home•
grown RTOS on CPU 1.
• In the post•silicon, real•hardware phase of the project, I continued maintaining the Linux
environment (including the kernel and all device drivers) running on CPU 0, plus 3 highly
ad hoc RTOS or ‘‘OS•less’’ environments running on the other 3 CPU cores.
• The ASIC has my code in the silicon: the initial boot ROM. This boot ROM code was
Page 2 of 5
developed in the pre•silicon environment, tested both in simulation and on the FPGA board,
extensively commented, documented and reviewed prior to tapeout, and when the ASIC and
the board arrived, all boot functions worked as designed.

Page 3 of 5
• Since 2020, my work at CarrierComm expanded into a new platform using large FPGAs
instead of the now•mature ASIC. On this new platform the processor for real•time
functions is Xilinx MicroBlaze instead of ARM, the new RTOS is FreeRTOS, and all real•
time software has been rewritten from scratch by me for ultra•low latency operation.
• The end application is terrestrial microwave communication. Over the years of maintaining
low•level software for CarrierComm’s two principal hardware platforms and endless
variants, I got involved with the theory of modem and framer operation, processing of I&Q
sample streams, ADCs and DACs, and I integrated a DPD (digital predistortion) code blob
from Systems4Silicon.
• Many of the software components I had to work on operate under extremely tight real time
constraints: some processing is done on timer interrupts which fire every millisecond, and
this processing had to be as fast as possible.

March—December 2012
PRIMA Cinema (Carlsbad, CA)
Embedded Linux Specialist
• Supported an embedded Linux system based on the Wind River Linux platform.
• Debugged a specialized driver for a high•performance PCIe DMA device, identified defects
in the areas of synchronization and SMP support, and wrote a superior replacement.
• Debugged BIOS and Linux kernel issues on a semi•custom special•purpose x86 platform.
• Pin•pointed hardware problems, such as disk data corruption by a hardware encryption
device which couldn’t be detected by the RAID or file system layers.
• Diagnosed and resolved an incompatibility between the vendor•supplied Linux kernel
version and a specialized USB device controlled by specialized software from another
vendor (a USB flash drive with biometric access control).
• Implemented an FPGA field update mechanism on a platform that was limited to JTAG bit•
banging via GPIO; my implementation reduced the reprogramming process from hours to
minutes.
• Did some refactoring of the WRL•based platform build process for better maintainability.

February—November 2011
Fresenius Medical Care North America (Orange County, CA)
Linux support contractor
• Put together a custom embedded Linux distribution (NAND flash•based) for the AM3517
ARM•based processor from TI, including a GUI stack.
• Put together a fully automated scripted build system for the custom versions of U•Boot, the
Linux kernel and a root file system based on the Linux From Scratch approach.
• Made many customizations to Linux and U•Boot in support of the customer’s application.
• Diagnosed and fixed bugs in the processor vendor’s versions of U•Boot and Linux.
• Built Java Run•time Environment (JRE) support for the customer’s application, using GNU
Classpath and JamVM.
• Provided support for several different 4•wire and 8•wire analog resistive touch screen
controllers, involving hardware evaluation, evaluation of existing drivers, writing some new
driver code, testing, and writing a bit of custom Verilog for an FPGA to work around a
design defect in one of the controller chips.
• Designed and built a bit of custom hardware (small PCBs) to support software development
ahead of the real product hardware.

Page 4 of 5
June 2010 — January 2011
Google Inc. (Santa Monica, CA)
Site Reliability Engineer
• Studied C++ and Google’s internal programming languages.
• Wrote specialized data analysis tools for Google’s production monitoring infrastructure.
• Participated in the upkeeping of some of Google’s smaller services.
• Handled emergency on•call responsibilities for my team’s services.

April 2006 — May 2010


Aristos Logic Corporation / Adaptec (Orange County, CA)
Consulting Software Engineer (long•term contract)
• Brought up PowerPC 440 embedded boards and created board ports of the U•Boot and
StarMON ROM monitors.
• Assisted with integration of PPC405 and PPC464 cores into a custom ASIC design, worked
with on•chip buses (PLB, OPB, DCR) and created some bus wrapper logic in Verilog.
• Ported Linux kernel modules from 2.4 to 2.6 kernel series.
• Developed a Linux SCSI driver for an in•house RAID system.
• Extended standard Linux I2C drivers.
• Implemented extended crash dump handling in embedded Linux.
• Implemented extended hardware error handling in Linux and U•Boot.
• Brought up a NAND flash subsystem under Linux using IBM NDFC core.
• Maintained and supported an embedded Linux•based product through its entire life cycle.

(Several minor gigs omitted for brevity.)

September 2003 — May 2004


Dot Hill Systems Corp. (Carlsbad, CA)
Software Engineer
• Developed a ROM boot and diagnostic monitor for a new RAID controller design based on
the IBM PowerPC 750FX processor and Marvell MV64360 system controller.
• Reviewed and improved the hardware design of the flash memory interface in the
abovementioned RAID controller.
• Studied Fibre Channel architecture.

February 2001 — February 2002


SBS Technologies, Inc. (Carlsbad, CA)
PowerPC Consulting Specialist
• Developed and maintained ports of Linux to several PowerPC boards.
• Developed and maintained a sophisticated ROM monitor, console, and diagnostic tool for
PowerPC boards allowing board bring•up with absolutely minimal resources, supporting
hardware validation, debugging, and production testing, and supporting bootstrap of Linux
or any other full•scale OS from the same ROM monitor.
• Worked extensively with IBM CPC700, IBM CPC710, and Marvell/Galileo GT•64260
system controllers, developed ROM monitor and Linux code for all of them.

Page 5 of 5
July 1999 — February 2001
Manzara Wireless Electronics, Inc. (Tashkent, Uzbekistan)
Software Engineer
• Developed wireless communication software for connecting PalmOS devices to the world
via wireless phones and pagers.
• Studied the standards and developed software for GSM phones and ReFLEX 2•way pagers.
• Made major enhancements for Motorola 68xxx family processors in the GNU software
development toolchain (GCC, Binutils, and GDB).
• Developed UNIX software in C for special•purpose application servers.

(Several minor gigs omitted for brevity.)

1988—1995
Medical•Technical Center Medincom (Moscow, Russia).
• Developed from scratch a real time OS for PDP•11•compatible computers with our own
control of all hardware, including the memory management unit, drivers for all devices, and
encoding and decoding the bitstream for magnetic storage entirely in software in real time
(bit•banging).
• Provided full underlying RTOS support for embedded medical applications.
• Developed PC system software and utilities.

Page 6 of 5

You might also like