3 days ago
Bengaluru, IndiaMid Level
Responsibilities
- Design, develop, test, and maintain embedded firmware in C.
- Develop RTOS-based systems and own firmware modules and features through production.
- Develop and integrate drivers for sensors and peripherals.
- Work with SPI, I²C, UART, GPIO, ADC, timers, and interrupts.
- Build sensor acquisition, processing, and buffering pipelines.
- Develop and debug Wi-Fi and BLE functionality.
- Implement device communication and cloud data upload workflows.
- Work with Flash, SD cards, NVS, and other storage systems.
- Implement error handling, watchdog, logging, recovery, bootloader, and firmware upgrade mechanisms.
- Write unit, integration, and hardware-level tests.
- Debug firmware and hardware issues and resolve problems found on field-deployed devices.
- Participate in firmware architecture, design, and code reviews.
- Improve firmware reliability, maintainability, performance, and observability.
Requirements
- At least 3 years of embedded firmware development experience.
- Strong programming skills in C and a good understanding of embedded systems and microcontrollers.
- Hands-on experience with an RTOS such as Zephyr, FreeRTOS, or similar.
- Understanding of tasks or threads, scheduling, interrupts, queues, mutexes, semaphores, synchronization, and concurrency.
- Experience with SPI, I²C, UART, GPIO, interrupts, and device-driver development or integration.
- Strong understanding of pointers, memory management, bit manipulation, and data structures.
- Ability to read datasheets, register maps, and hardware specifications.
- Experience debugging hardware and firmware issues.
- Comfort working in a Linux development environment and experience with Git/GitHub.
- Preferred experience includes Nordic nRF, ESP32, STM32, Zephyr RTOS, nRF Connect SDK, Wi-Fi, BLE, TCP/IP, HTTP/HTTPS, TLS, bootloaders, OTA/DFU updates, Device Tree, Kconfig, storage systems, high-rate sensor acquisition, ring buffers, FIFOs, CRC, packetization, low-power design, Python scripting, embedded device testing, and field-device debugging.
