Bachelor/Master degree in Electrical Engineering or Computer Engineering
Experience with ARM-based embedded processors
Experience developing C/C++ applications for Linux platforms
Able to read and analyze electrical schematics
Knowledge/Experience with power systems and signal processing is a plus
Hands-on experience with AI-assisted development tools (e.g., GitHub Copilot)
Proactive attitude towards improving AI tool usage efficiency
Responsibilities
Design and develop software functionalities for energy metering products
Implement software in C/C++ for ARM-based Linux
Document system analysis, software designs and test plans
Optimize software for memory management and performance
Configure build systems using CMake and GCC for embedded systems
Develop and debug communication interfaces for embedded communication
Design and maintain RESTful APIs for integration with external systems
Benefits
Work in a cutting-edge technology environment focused on energy metering
Opportunities for professional development and skill enhancement with AI tools
Contribute to innovative projects in the embedded systems domain
Collaborate with a skilled team dedicated to product excellence
Potential for future growth and evolving responsibilities as the company expands
Full Job Description
Duties and Responsibilities:
Design and develop software functionalities for energy metering products and communication modules
Implement in C/C++ for ARM-based Linux
Document system analysis, software designs and test plans
Develop and debug embedded software using C/C++ in a Linux environment.
Configure and maintain build systems using CMake and GCC cross-compilation tools for embedded targets.
Design and optimize software for ARM-based embedded systems, focusing on threading, memory management, and performance optimization.
Utilize version control systems effectively, following best practices in Git for software development and collaboration.
Implement and integrate communication protocols such as Modbus RTU/TCP, TCP/IP, BACnet/IP, SNMP, DNP, IEC61850, EtherNet/IP, MQTT, and Profinet.
Develop and debug communication interfaces including SPI, I2C, UART, and RS485 for embedded system communication.
Design and maintain RESTful APIs for seamless integration with external systems.
Manage embedded database operations using SQLite for efficient data storage and retrieval.
Write and maintain Shell scripts for automation, system configuration, and debugging.
Apply object-oriented programming principles to design scalable, maintainable, and modular software solutions.
Utilize AI-assisted coding tools (e.g., GitHub Copilot, Claude, Cursor) to accelerate development cycles, generate boilerplate code, and improve overall coding efficiency; critically review and validate all AI-generated outputs before integration.
Apply AI-driven approaches to code review, automated testing, and debugging to reduce defect rates and shorten validation cycles in embedded product releases.
Track and report AI tool usage and productivity gains on a regular basis as part of the team's AI performance evaluation process.
Support and assist the product verification team in developing and executing test plans, validation procedures, and debugging activities.
Other duties as assigned
Ensure Occupational Health and Safety compliance with health and safety laws and regulations.
Follow all procedures in compliance of Accuenergy (Canada) Inc standard policy and operation regulations.
Any other operation-related responsibilities may be added as company continues to grow.
Qualifications:
Bachelor/Master degree in Electrical Engineering or Computer Engineering
Experience with ARM-based embedded processors
Experience developing C/C++ applications for Linux platforms
Able to read, interpret and analyze electrical schematics
Knowledge/Experience with power system and signal processing is a plus
Hands-on experience with AI-assisted development tools such as GitHub Copilot, Claude, or Cursor; ability to integrate AI tools effectively into the embedded software development workflow
Demonstrated ability to evaluate, report, and continuously improve personal AI tool usage efficiency; proactive mindset toward adopting emerging AI coding practice