Location: Hybrid in Phoenix, AZ is preferred. Remote within contiguous US is available.
Job Description:
We are seeking a talented and experienced embedded software engineer – BSP Developer to join our team. As a BSP Developer, you will be responsible for developing, customizing, and maintaining the Board Support Packages (BSPs) for hardware platforms on embedded systems. You will work closely with our software engineers and customers to ensure seamless integration of the operating system with the target hardware. If you have a strong background in low-level software development, and system architecture, along with a passion for mission critical embedded systems, we want to hear from you!
Responsibilities:
Develop and customize BSPs for hardware platforms, including system-on-chips (SoCs), microcontrollers, and embedded systems.
Collaborate with our customers and board manufacturers to understand the system architecture, peripheral interfaces, memory mapping, etc.
Design, develop, and maintain device drivers for various hardware components, such as network interfaces, storage devices, and peripherals
Develop requirements and design for BSPs.
Review the requirements, code, and/or tests of other engineers. Receive review feedback from others and integrate feedback into work product.
Implement and optimize boot loaders and boot-time initialization routines to ensure reliable system startup.
Perform hardware bring-up activities, including debugging and troubleshooting of hardware and software integration issues.
Conduct testing and verification of the BSP components, ensuring compatibility, stability, and performance.
Stay updated with the latest technologies, industry standards, and best practices related to BSP development.
Requirements:
Bachelor’s or Master’s degree in Computer Science, Computer Engineering, Electrical Engineering, or a related field.
Proven experience in BSP development, embedded systems, and/or low-level software development.
Knowledge of boot loaders, firmware, and real-time operating systems (RTOS).
Strong programming skills in C/C++ is required and familiarity with assembly languages (x86_64, ARM, AArch64, and PPC) is desired.
Solid understanding of system architecture, memory management, and peripheral interfaces.
Proficient in debugging and troubleshooting hardware and software integration issues.
Excellent problem-solving skills and ability to work independently as well as part of a distributed team.
Effective communication skills and the ability to collaborate with cross-functional teams.
US Citizen
To apply, please send your resume to engineering_jobs@ddci.com.