Description
The OpportunityThe Firmware Engineer will join the firmware team, and become part of a multidisciplinary engineering team responsible for delivering high quality, high performance tools for the industrial bolting industry. You will design, develop and deploy innovative firmware solutions for the next generation of our products. You will contribute to both system level and firmware level (embedded software) design efforts. Positions are available for junior, intermediate and senior developers. Opportunities exist for senior developers to become technical lead for a firmware development team.
The Role and Responsibilities- Develop firmware for a range of products.
- Develop firmware for new products, sustaining efforts and custom solutions.
- Develop firmware as part of a multidiscipline project team.
- Review problem statements, customer requirements and engineering requirements.
- Propose engineering and firmware solutions in response to requirements.
- Provide analysis of, and estimates for, relevant development efforts.
- Decompose solutions from higher level architectures to lower level firmware components.
- Align development efforts across firmware and multidiscipline colleagues.
- Debug, troubleshoot and verify firmware and system implementations.
- Execute firmware development, adhering to NWT best practices and coding standards.
- Create and maintain design documentation (including UML, Doxygen).
- Maintain and continuously improve firmware development processes and best practices
- Manage work on multiple competing projects, aligning prioritization with stakeholders.
- Mentor peer and junior firmware developers (for senior developers).
- Ability to lift up to 50 lbs.
- Other duties as assigned.
Job Requirements
Qualifications:Education- Bachelor's degree in electronic or computer engineering or equivalent
- Professional engineer (P.Eng.) status or eligibility is an asset.
Experience- 0, 2, or 5+ years of firmware development experience for junior, intermediate, or senior roles.
- 2, 5, or 10+ years of C/C++ programming experience for junior, intermediate, or senior roles.
- Product development for manufacturing is an asset.
Skills Core Technical Skills
- Understanding of firmware development principles.
- C programming for embedded systems.
- Debugging and trouble shooting embedded systems.
- Object oriented design and programming.
- Understanding of real-time and concurrency design principles.
- Understanding of microcontroller architecture.
- Understanding of microcontroller / SoC peripherals (ADC, PWM, etc.)
- Understanding of communication protocols (I2C, SPI, UART, TCP/IP, etc.)
- Development of RTOS based systems (e.g. FreeRTOS).
- Development of Linux systems (e.g. Yocto).
- Implementation of firmware unit tests (black box and white box testing).
- Use of firmware development tools: debuggers, IDEs.
- Able to read and interpret electronic schematics.
- Use of laboratory equipment: oscilloscopes, logic analyzers, spectrum analyzers.
- Able to debug digital logic.
- Use of source code management tools (SVN, Git, etc.)
- Familiar with the full SDLC (requirements, design, implement, debug, test, release, support).
- Creation of effective design documentation (e.g. high level designs, UML, etc.)
Additional Skills (considered an asset)
- Firmware integration of Bluetooth and Wi-Fi modules.
- Boot loaders (bare metal, U-Boot, etc.).
- Digital signal processing, fixed point arithmetic, mathematical analysis.
- Motor control algorithms.
- FPGA / HDL development (Verilog, VHDL).
- Web technologies (Javascript, HTML, CSS, etc.).
- Agile / Scrum software development methods.
Soft Skills
- You have exceptional organizational and time-management skills.
- You have exceptional communication skills, written and verbal.
- You can easily communicate with technical and non-technical audiences.
- You are able to organize and lead complex projects through a full development life cycle.
- You are self-motivated, take ownership and are able to work with minimal supervision.
- You excel in a team environment that requires collaboration and communication.
- You provide and welcome constructive feedback.
- You are a strong advocate for quality, best practices and traceability.
After you apply, you may receive a call or message from our AI Talent Scout about this role or other opportunities that match your skills and preferences.
AI agent role is to help speed up your hiring process by answering questions, confirming basic information, and identifying whether there's a mutual fit.The call or chat may be recorded so that our recruiting team can review it - they make all final hiring decisions, while
AI agent simply helps move you forward faster. The best part?
They are available 24/7, so you can connect whenever it's convenient for you.Acara Solutions is committed to ensuring equal employment opportunities for applicants and employees. We are committed to filling open positions using balanced selection criteria to avoid unlawful discrimination against applicants on the basis of their age, colour, disability, marital status, national origin, gender, gender identity, genetic information, race or racial origin, religion, sexual orientation, or any other status protected or required by law.Acara Solutions welcomes and encourages applications from people with disabilities. Accommodations are available on request for candidates participating in all aspects of the selection process.