Senior Embedded Systems Engineer (lo)
We are looking for a Senior Embedded Systems Engineer to take on developing primarily the hardware and firmware, and secondarily the embedded software for drone support systems. You will be responsible bare-metal firmware development, hardware/software systems integration, and some embedded software development for autonomous systems and platforms. You will assist in the architectural design, selection of parts and sensors, and will primarily do hardware and firmware development, and secondarily help with embedded software development for autonomous systems and platforms. You should be comfortable working in a continually moving environment, able to deal with problems on the fly and deliver thoughtfully designed highly-adaptable systems. You will be an integral part of the team designing autonomous drone systems.
Core Responsibilities:
- Work as a team member to design, build, test, and troubleshoot hardware, firmware, and embedded software for autonomous and semi-autonomous drones.
- Develop firmware, operating system code, and HDL for various systems and projects, including telemetry, flight control, hardware management systems, and primarily autonomous systems.
- Do hardware/software systems integration, and program firmware and embedded software for acquiring data from various sensors and devices for real-time control.
- Program OS level applications, as well as embedded processors.
- Develop bare-metal firmware for embedded processors and microcontrollers.
- Develop testing criteria and fixtures for design verification and production certification.
- Assist in protocol design, architectural design, parts selection and project trajectories for our hardware projects.
- Assist in the identification and implementation of process improvements.
- Collaborate with a strong team and our stakeholders.
Skills and Qualifications:
- Strong C/C++ firmware/software development skills in an embedded environment is required.
- Experience interfacing hardware and software and doing hardware/software systems integration is required.
- Experience interfacing various sensors, microcontrollers, and devices is required.
- Experience writing firmware for interfacing various sensors, microcontrollers, and devices and doing data acquisition is required.
- Expertise in writing space and time efficient embedded code.
- High level knowledge in electronic hardware and systems design is required.
- Knowledge of common communication buses such as I2C, CAN, Serial and SPI, and how to debug them is required.
- Experience with Oscilloscopes and/or Logic Analyzers is required.
- Experience programming for Linux platforms, including Embedded Linux is required.
- Experience implementing a soft-core processor or an ALU in an FPGA in a hardware description language such as Verilog or VHDL is a big plus.
- Experience with OpenCL and/or CUDA for FPGA/GPU is a big plus.
- Experience with or knowledge of Nvidia embedded GPU platforms is a plus.
- Familiarity with Nvidia development toolsets is a plus.
- Familiarity with RTOS (Nuttx), and real-time and priority scheduler implementation is a plus.
- Basic understanding of Machine Learning and parallelizable algorithms and implementing algorithms into parallel and embedded code is a plus.
- Good understanding of Computer Architecture, Datapath, Pipelining, Processor Design, etc. is a plus.
- Understanding of Computer Science fundamentals such as Data Structures and Algorithms complexity analysis is a plus.
- Soldering ability is a plus.
- Experience with ARM (STM32) microcontrollers is a plus.
- Experience with designing, debugging, and prototyping PCBs is a plus.
- Experience with FPGAs, CPLDs and a Hardware description language such as Verilog or VHDL is a plus.
- Candidates with UAV aircraft, robotics development experience and/or hobby drone experience will be given special consideration.
- Bachelor’s Degree in Electrical Engineering, Electronics Engineering, or Computer Engineering is required. Master’s Degree is a plus.