Product Engineering has an immediate opening for a Senior Embedded Linux Software Engineer
to join the Systems Engineering team. Successful candidates should understand and have past work experience with Linux development environment as well as architectures with several microprocessors/microcontrollers (such as PowerPC-based, ARM-based); have done formal software development and release in a reliable, sustainable and expandable manner by setting and maintaining the SW implementation and testing tool chains, documenting detailed requirements, design specifications and test reports.
A successful candidate will work well independently and with the existing engineering team members and have a desire to learn. Commitment to delivering high quality software following established processes, procedures and coding styles is a must and so is the flexibility to learn and set up new ones.Responsibilities:
• Heavily involved in the development of gateway and telemetry units, focusing on creating hardware/software requirements, developing software architecture, implementing customized Linux distribution, handling various communication interface/protocols (WiFi, LTE, Bluetooth, ethernet, USB, CAN, serial ports), conducting tests for both hardware and software.
• Develop requirements of gateway and telemetry functions, interface connection, compliance, and performance.
• Work on board level development (boot, drivers, etc) with strong embedded constraint and support package from suppliers.
• Implement embedded software for backend in C/C++, and web interface with Java script, CSS and HTML, or equivalent languages and tools.
• Establish and continuously improve embedded software development process by following internal and industry standards.
• Verify and validate software using debugger, emulator, test bench and actual system integration.
• Manage software version control and implement CI/CD testing/releasing methodology.
• Prepare technical documents, including component requirement and design documents, test plan/matrix and test report, and engage in the formal change management process.
• Maintain the existing data management framework, and work on establishing more advanced approach to efficiently capture and transmit data with flexible and scalable configuration.
• Under the direction of the Controls Engineering Manager, work within cross-functional teams with the implementation of systems engineering processes, which may include cross-functional reviews of requirements and documenting specifications.
• Other duties as occasionally required by management.Requirements:
• Bachelor's and Master's degree (preferred) in computer science/engineering, EE, or related field.
• A minimum of 8 years of experience in industrial-level embedded Linux software development.
• Experience with formal software version control (Git/SVN) and release/configuration management.
• In-depth understanding and work experience in Linux development environment and architecture.
• Work experience with software architecture, and best practices to implement reliable, scalable, and portable software.
• Intensive knowledge of Linux kernel, operating system, file system, memory and peripheral management.
• Experience commissioning, tuning, and troubleshooting embedded systems
• Commitment to delivering high quality software following established processes, procedures and coding styles
• Team player, self-motivated, have habit to document and communicate promptly on what is done. Have passion in engineering and doing things in a systematic wayDesired Traits:
• An engineering degree from an accredited Electrical, Electronics or Computer Science university/college/institutional program.
• Work experience with Agile development process and familiar with its work platform, such Jira, AzureDevOps.
• Experience with full software lifecycle and safety-critical software development, including requirements, design, integration, validation, and verification is strong asset.
• Knowledge and experience of IOT infrastructure and technology.
• Capability and experience on developing and troubleshooting real-time microprocessor/microcontroller.
• Good understand of electronic devices, such as measurement sensors, CAN-based electrical components, actuators for pneumatic and hydraulic systems.
• Extensive experience with CAN and communication protocols such as J1939, CANopen is a strong asset.
Listen & Deliver | Quality. Always. | Inspire Excellent | Row Together | Own It
Ballard values diversity in the workplace and is committed to Employment Equity. We encourage applications from all qualified candidates.