HomeSearch › Job

Sr. Firmware Developer

CAN · senior

Description    AEM (Advanced Environmental Monitoring) is the global leader in innovative mission critical weather, wildfire and water monitoring and intelligence solutions. We aim to be the world’s essential source for environmental insights – enabling decisive action and positive outcomes for our customers and their constituents. Our family of innovators offers world-class hydrometeorological technologies and services, including sensors, dataloggers, telemetry, and advanced analytics and software.

Our technology and services empower the communities and organizations to survive – and thrive – in the face of escalating environmental risks.   AEM is seeking a Senior Firmware Developer with deep experience developing embedded products from architecture through production release and lifecycle support. This role is responsible for designing reliable, maintainable firmware for environmental monitoring products and for creating reusable architectures and components that can support multiple products and platforms where practical.

The ideal candidate combines strong embedded software fundamentals with hands-on hardware integration, system debugging, verification, and technical leadership. This is a hands-on product development role - not solely an architecture, research, or prototype-focused position. Job Responsibilities:   Embedded Firmware Architecture & System Design Lead firmware architecture for embedded products ranging from bare-metal systems to multi-threaded RTOS-based applications.

Translate product and system requirements into firmware designs, interfaces, task structures, state machines, and hardware abstraction layers. Evaluate design tradeoffs involving performance, memory, power, reliability, complexity, reuse, and long-term maintainability. Define modular and reusable firmware components that can be applied across product families and hardware platforms where appropriate.

Firmware Development & Implementation Design, implement, review, and maintain production embedded software in C/C++ for microcontroller-based products. Develop device drivers, board-support software, communications interfaces, control logic, data acquisition, storage, and scheduled transmission functions. Implement safe concurrency using RTOS tasks, queues, mutexes, semaphores, timers, and interrupt-driven designs.

Apply structured design, object-oriented design where appropriate, coding standards, defensive programming, and clear error-handling practices. Maintain build configurations, source control practices, technical documentation, and reproducible firmware build outputs. Hardware Integration & Product Bring-Up Partner with electronic designers to define processor, peripheral, memory, power-control, and communication requirements.

Read schematics and datasheets, bring up new boards, and validate interfaces such as UART, SPI, I2C, USB, Ethernet, Wi-Fi, Bluetooth/BLE, and cellular or satellite communications. Use oscilloscopes, logic analyzers, debuggers, protocol analyzers, and other laboratory tools to diagnose board- and system level issues. Troubleshoot interactions among firmware, PCBs, sensors, power supplies, communications modules, and electromechanical assemblies.

Verification, Reliability & Quality Develop unit, integration, hardware-in-the-loop, regression, fault-injection, and long-duration tests appropriate to embedded products. Review code and designs for correctness, concurrency hazards, resource use, error recovery, maintainability, and testability. Design for reliable operation through communication loss, peripheral faults, power interruptions, brownouts, watchdog resets, and other field conditions.

Work with QA and product validation teams to investigate defects, reproduce failures, and verify corrective actions. Product Release & Lifecycle Support Support firmware through prototype builds, formal qualification, production release, configuration control, and field deployment. Produce rel

Search all live jobs — free, no account →