Software Engineer
- Richmond, BC, Canada
$80,000 to $135,000 CAD / year · Full-time
Applications open in a new tab.
Job details
- Pay
- $80,000 to $135,000 CAD / year
- Job type
- Full-time
- Apply by
- Education
- High school diploma
- Experience
- Experience 2 – 5 years in similar positions
- Posting language
- English
- Posted
Original job description
Responsibilities:
- Independently handle middle-difficulty and combined tasks for the software development and maintenance of assigned customer projects.
- Independently support customers in developing complex SW features, debug bugs reported by customers and test teams on software releases, maintain the software stack, and enhance demo applications.
- Implement and optimize low-level hardware drivers, firmware, and communication protocols (including the LTE modem software protocol stack) independently.
- Independently conduct unit testing and integration testing to verify software functionality and performance.
- Lead and manage middle-complexity sub-projects within the software department, while collaborating with cross-functional and overseas R&D teams (including the platform team, hardware engineers, Field Application Engineers, and QA).
- Maintain, create, and update software documentation, high-level and low-level design specifications, technical analysis reports, and knowledge articles.
- Perform other tasks as required by the chain of reporting and business needs based on a similar task level.
Educational and Skill Requirements
- High school diploma is required.
- Experience 2 – 5 years in similar positions
- Medium-strong experience in C & C++ programming, microcontroller/microprocessor architecture and firmware programming.
- Fluent in application development on FreeRTOS/ThreadX/Linux based IOT module.
- Familiarity with embedded software development life cycle.
- Medium-strong experience in various communication bus protocols i.e., I2C, SPI, UART, USB, I2S and peripheral interfacing.
- Fluent in reading schematics and debugging board level issues.
- Fluent on debugging peripheral driver integration and board configuration.
- Medium-strong knowledge of hardware/software integration and debugging techniques.
- Medium-strong analytical and troubleshooting skills with fluency in English language.
- Fluent in application and modem log analysis.
- Flexibility to collaborate across different time zones; the role may require occasional travel.
- Fluent English, both written and spoken.
More about this job
Responsibilities
Develop and maintain customer software projects, implement and optimize drivers, firmware, and communication protocols, and debug customer-reported issues and software releases. Lead medium-complexity sub-projects, test software functionality and performance, collaborate with cross-functional teams, and maintain technical documentation.
Requirements
A high school diploma and 2–5 years of experience in a similar role are required. Candidates should have strong C/C++ and embedded firmware experience, familiarity with RTOS and Linux-based IoT modules, communication protocols, board-level debugging, hardware/software integration, and fluent written and spoken English.
Skills
- C
- C++
- Microcontroller Architecture
- Microprocessor Architecture
- Firmware Programming
- FreeRTOS
- ThreadX
- Linux
- Embedded Software Development
- I2C
- SPI
- UART
- USB
- I2S
- Peripheral Interfacing
- Hardware/Software Integration
Visa sponsorship
Not detected in the job text
Categories
- Software
- Technology
- Engineering
- Management & Leadership
Keywords
- C
- C++
- Microcontrollers
- Microprocessors
- Firmware
- FreeRTOS
- ThreadX
- Linux
- IoT Modules
- I2C
- SPI
- UART
- USB
- I2S
- Peripheral Drivers
- LTE Modem
- Communication Protocols
- Unit Testing
- Integration Testing
- Schematic Reading
- Board-Level Debugging
- Hardware/Software Integration
- Application Log Analysis
- Modem Log Analysis
- Software Maintenance
- Technical Documentation
- Cross-Functional Collaboration
- Wireless Services
- Telecommunications