Lead Software Developer - Yocto, C++, RUST [LCSF & BSys CoC]
Unit and team Overview
The Infotainment platform unit is responsible for developing, maintaining, and deploying the BMW infotainment platform. This platform is a Linux (Yocto) based SW platform that provides common automotive functions used by multiple automotive ECUs. The unit is also responsible for cross-cutting concerns of the platform, like architecture, security, stability, and performance. The platform is deployed into multiple infotainment domain ECUs, ranging from headunits and rear seat entertainment systems to telematics and audio ECUs.
Lifecycle & System Functions Center of Competence (CoC)
The CoC Lifecycle and System Functions is end-to-end responsible for the functionalities in their domains. This encompasses all aspects of diagnostics, flashing, RSU updates, and lifecycle functionalities related to system startup and shutdown, suspend-to-RAM functionality, and power management of the infotainment ECUs. We operate within a platform that includes generic solutions for multiple ECUs, as well as ECU-specific implementations and configurations. Therefore, close collaboration with both the BMW development team and external suppliers providing ECU-specific components that impact system functions and lifecycle functionality is essential.
Base system Center of Competence (CoC)
The teams area of responsibility is to maintain the Yocto meta layers for Linux based platform projects in connected cars. We are looking for a Lead Software Engineer who will be our connection to not just the consumers of the Linux distro that we package, but also the with the upstream open-source community. The responsibility includes maintaining OSS components hosted by Yocto, CVE scanning and fixing the OSS components based on the needs of the project and the platform. The engineer will be the part of the team that understands wide range usage of the opensource components in the context of the project and thus able advice on the correct usage of the components. A good background of automotive architecture is a plus.
Job Description
- Maintain, refactor, and extend our software components.
- Conduct systematic defect analysis and implement fixes.
- Participate in software design reviews to ensure 100% reliability and functionality.
- Contribute to cross-functional proof-of-concept implementations.
- Design and implementation of test code to reproduce issues and allow SW-component tests in isolated environment
- Engage in lifecycle functionality development, including hypervisor, container, Android, and hardware synchronization, along with all other system components.
- Maintain and enhance power management components to optimize system performance and longevity.
- Design, develop, and implement software for Input/Output Controller (IOC) systems, focusing on real-time data processing and control for automotive infotainment applications.
- Work with real-time operating systems (RTOS) to ensure timely and reliable execution of software tasks, optimizing for low-latency performance.
- Create and maintain detailed technical documentation, including design specifications, test plans, and user manuals.
- Implement and integrate identified CVEs bugfixes to old code basis.
- Building the platform and ECU projects and fixing build issues.
- Enable and configure new OSS components hosted through Yocto.
- Engage with upstream Yocto, OSS Security community and OSS opensource community.
- Maintain test suites for the open-source components.
As part of a dynamic and agile team, you will ensure robustness, performance, reliability, and security within the software design, impacting all BMW vehicles. Your efforts will result in high-quality software that becomes an integral part of BMWs products. You will work in a modern development environment utilizing tools such as C++17/20, RUST, Python, Yocto Linux, CMake, Git/GitHub EE, and Zuul CI. As a senior Software Developer guidance and technical leadership within the team is expected.
Qualifications
Basic requirements and Education
- Business fluent English
- University degree in computer science or a comparable field of study, ideally with a security focus
- Capability of designing own test coverage and mockups for better understanding of the SW components
- Willingness to train and share knowledge within the team as well as outside the CoC
- Being inherently passionate about coding
- Participation in OSS/GitHub project developments
Required Experience and Skills
- At least 5 years of practical software development experience.
- Very good coding skills in Modern C++, including good API design, object-oriented and functional programming, as well as component-level software architecture and unit testing.
- Very good coding skills in RUST, understanding the Pros/Cons between RUST and other languages
- Experience with real-time operating systems (RTOS)
- Very good proficiency in scripting languages
- Very good knowledge in Yocto, Bitbake, CMake, compiler toolchains (GCC, CLANG)
- Very good proficiency in multi-platform development, state-machines, event driven programming, remote procedure calls, hands on knowledge with Linux stack
- Very good analytic skills and hands on experience in debugging and design reviews.
- Self-driven teamplayer and able to work as member of a Scrum team.
- Coaching and teaching teaching skills to ramp-up and upskill junior developers
- Very good communication skills to be able to steer technical discussions and negotiate for solution options
Keywords
- Automotive Infotainment
- RTOS
- Software Updates, Diagnosis, LifeCycle, Power management
- CMake, C++, GDB, RUST
- Yocto / Linux
- Hackathon