Software Engineer (Embedded Linux) at NAL Research (Manassas, VA)
Location: Manassas, VA
Type: Full Time
Created: 2021-06-18 05:01:24
NAL Research Corporation, Fredericksburg, VA location, is a leading developer and manufacturer of advanced military-grade Iridium satellite modems, tracking devices, and secure geolocation solutions for the defense, research, and commercial sectors. NAL’s products are the first choice for US and international government organizations for a wide range of applications including asset tracking, search and rescue, remote sensing, and command/control for personnel, land, maritime, and airborne platforms.
NAL is seeking a candidate who has embedded Linux experience with handheld, multimedia, smartphone, or tablet devices. The Embedded Linux Engineer is expected to maintain and develop NAL’s Linux based embedded systems software and firmware. Our development process is highly iterative and often requires low-volume production of prototypes for internal product testing and customer pilots. You'll solve challenging problems on a daily basis and work with the latest in Satellite and PNT technologies.
You will be focused on firmware development for modem, tablet, and smartphone devices, including board bring up, writing low-level device drivers, and delivering high quality, robust product firmware. This position is an exciting opportunity to be part of a growing team as we add value to our expanding product family.
The ideal candidate for this position is a self-manager, able to take direction from leadership and translate that into an effective plan of action.
Responsibilities and Duties
- Be excellent in C/C++ programming for low power mobile devices
- Design, develop, implement, debug and maintain embedded Linux based products
- Linux board support package development and board bring-up
- Work with the electrical team for hardware bring-up and verification of new designs
- Perform power consumption analysis and optimize firmware for low power battery operation
- Lead and participate in technical discussions across engineering and product teams
- Review product manuals and brochures for technical accuracy and participate in product definition activities such as feature analysis and system tradeoffs
- Assist design engineering as needed with component datasheet review and schematic design review
- Keep up with current technology in the field through reading, self-study, and seminars
- Other duties and tasks may be assigned
- Bachelor's degree in Computer Science, Computer Engineering, or related field
- 5+ years of experience working in embedded systems
- 3+ years of experience with embedded Linux
- Proficient in C and C++ and ability to develop clean, modular code
- Strong Experience in Linux kernel / OS development on ARM-based platforms including configuration management, build, deployment, secure boot, U-Boot, device tree, Linux device driver, and HAL layers
- Low-level programming of peripherals/interfaces (UART, SPI, I2C, I2S, USB)
- Must be persistent, possess strong problem-solving skills, and be willing to work with others to find solutions that avoid project stalls
- Must be responsible, self-motivated, creative, have a solid work ethic, and have a desire to produce a quality product
- Balance quality, quantity, and complexity in work output
- Know how to iterate quickly without sacrificing your passion for quality
- Strong written and verbal communication skills
- Linux system administration experience (e.g., systemd, udev services, bash scripting)
- Linux patching, field updates, and security hardening
- Linux media frameworks/APIs (ALSA, V4L2)
- Build systems experience (Yocto, Buildroot)
- Build server setup and administration
- Wireless technologies such as cellular and satellite modems, Wi-Fi, and Bluetooth
- Debugging hardware (use of an oscilloscope, multimeter, logic analyzer, JTAG/SWD debug adapters)
- Deep knowledge of electrical concepts and comfortable reading hardware schematics and debugging hardware at a board level
- Experience with mobile-class SoC (e.g. Qualcomm Snapdragon)
- Experience with NXP i.MX6
- Passion for mentorship and a strong desire to lead a technical team
- Familiarity or experience with Agile/Scrum methodology and practices
- Due to the nature of the work and the environment in which the work takes place, the candidate must be a U.S. citizen.
Please submit a cover letter with salary expectations, along with a resume.