WHAT YOU WILL EXPERIENCE IN THIS POSITION:A new approach to embedded software development, building on your C++ experience, to create secure firmware for industrial control products.
- Research and Development: Create new products for global markets and refresh existing products.
- Agile Development: Join a Collaborative Agile Team to deliver cutting-edge digital solutions.
- Comprehensive Firmware Development: Supported by senior embedded firmware developers, engage in the complete embedded firmware software development lifecycle including:
- Refining software and testing requirements with Product Management
- Implementing requirements and tests in embedded firmware by programming in C, C++, or Rust.
- Participating in design and code reviews
- Debugging firmware using appropriate techniques and tools
- Troubleshooting: Diagnose the interaction of embedded firmware and hardware using JTAG, oscilloscopes, logic analyzers, etc.
- Testing: Draft test plans. Program unit tests, integration tests, and hardware in the loop tests.
- Documenting: Creating technical documentation for internal and external use.
- Share your embedded firmware knowledge: Advise other team members and present at technical seminars.
- Using GitLab, Jira, and Microsoft Teams to collaborate with team members
YOU HAVE:- Years of C++ experience with much of it in the embedded firmware space. You have the desire to grow beyond traditional C++ programming.
- Bachelor's degree in Electrical Engineering, Computer Engineering, Computer Science, Electronics, or equivalent experience
- Experience in developing and debugging embedded systems
- 5+ years of coding experience in C/C++ for embedded devices or Rust
- Ability to read and understand data sheets and review electronic schematics
- Strong electronics troubleshooting and embedded debugging experience (proficient with tools such as JTAG debuggers, logic analyzers, oscilloscopes, signal generators, digital multi-meters, etc)
- Proficient with multi-threaded/multi-tasking programming
- Experience with Git or similar version control
- Deep understanding of communication protocols such as RS-232, RS-485, IP, Modbus, or CAN bus is an asset
- Experience with bare metal and board bring up
- Experience with Real Time Operating Systems (RTOS), FreeRTOS, ARM, ESP32
- Experience with Object Orientated programming, software architecture, and design patterns
- Experience with scripting languages (Python, Powershell) is an asset
- Experience with Linux development, kernel development, U-boot, Snaps, or SnapCraft is an asset
- Motivated, energetic, a quick learner, able to work independently with minimal direction
- Skilled in creating and maintaining detailed technical documentation
- Excellent communication and collaboration skills