← All jobs
Embedded Software Engineer
Ashburn, VA · Hybrid · Full Time · Engineering
Apply well, not just fast
Create a free account and upload your resume to get a match score, keyword gaps, a tailored resume, a cover letter and interview prep for this job.
About the role
AndroidLinux
Technology Advancement Group (TAG) is a veteran-owned systems integrator in Ashburn, Virginia. We design, build and integrate assured positioning, navigation and timing (PNT) hardware and software for the Department of Defense and the companies that build for it. Our products include anti-jam CRPA antennas, horizon-nulling antennas and a miniature M-code GPS receiver. All of them are shipping today, with test data behind them, and our engineers integrate them into the systems our customers already run.
We're hiring an Embedded Software Engineer to architect and build the software inside our next generation of PNT products. You'll report to our Technical Director and play a lead architecture and development role: evaluating and selecting processors and subsystems, writing embedded code for single-core and multi-core processors, and integrating civilian and military next-generation GNSS receivers, inertial measurement units (IMUs) and other state-of-the-art sensors. There's no large software organization behind you here, so you'll own decisions from processor selection to the code that ships, working side by side with our hardware, systems and test engineers. The role is based in Ashburn. We'd prefer you on-site, and a hybrid schedule is possible.
On the Android and Linux side, you'll customize and integrate Android OS for embedded devices and custom hardware. You'll work in the Linux kernel, device drivers, the hardware abstraction layer (HAL) and system services to get the performance, functionality and hardware compatibility our platforms need. You'll lead board bring-up and board support package (BSP) development, develop and optimize drivers for our peripherals, and debug low-level problems from bootloaders to kernel panics and driver failures. You'll analyze and tune performance and power consumption, and keep the platform secure with secure boot, SELinux and dm-verity.
On the microcontroller side, you'll write code and state machines for 32-bit microcontrollers on bare metal, an RTOS or Android. You'll work across SPI, I2C, UART, MIPI, CAN and USB interfaces, GPIOs and interrupts, and integrate wireless links including Bluetooth, Wi-Fi, LoRa and ISM-band radios. You'll manage power through power islands and power states, core switching and dynamic clocking.