HamburgerMenu
hirist

Embedded System Programmer - BSP/Linux/Device Driver

Mrshortlisted
Multiple Locations
3 - 5 Years

Posted on: 02/12/2025

Job Description

Job Description :


Roles & Responsibilities :


- The ideal candidate should possess a strong and well-rounded foundation in embedded systems engineering, with specific emphasis on Linux kernel-level development, board bring-up activities, and system-level debugging.


- A solid 3 to 5 years of hands-on experience in Linux device driver development is essential. This includes not just writing drivers from scratch, but also porting existing drivers across platforms, integrating them into various hardware environments, and validating their functionality through rigorous testing.


- The candidate must also be comfortable working across kernel space and user space, building middleware layers, and contributing to user-level applications that interact with low-level hardware modules.


- A deep understanding of driver frameworks, kernel subsystems, and the Linux build environment is highly desirable.

- In addition to driver development, the candidate must have practical expertise in board bring-up and bootloader development. This involves initializing new hardware platforms, configuring low-level system components, validating memory interfaces, and ensuring that the basic hardware-software interaction works seamlessly.


- Experience with bootloaders such as U-Boot, understanding of boot sequences, memory mapping, and early debugging techniques during system initialization will be a significant advantage.


- This role requires an engineer who can confidently handle newly designed boards, identify hardware-software mismatches quickly, and resolve boot issues efficiently.

- A strong command over C and C++ programming is fundamental. Since embedded systems rely heavily on low-level and performance-critical code, the candidate should be capable of writing optimized, maintainable, and hardware-aware programs.


- A high level of comfort with pointers, interrupts, memory management, data structures, and concurrency mechanisms is essential for success in this domain.

- The candidate must also be proficient in implementing, testing, and debugging various communication protocols, including but not limited to I2C, SPI, UART, USB, CAN, MIPI CSI/DSI, and PCIe. The role demands not only theoretical knowledge but also real-world experience in working with these protocols on actual hardware.


- Understanding protocol timing, electrical characteristics, bus arbitration, and error-handling mechanisms will enable the candidate to develop robust system components and identify issues quickly during development or integration phases.

- Expert-level debugging capabilities are a core requirement. The candidate should be skilled in using industry-standard hardware debugging tools such as JTAG, TRACE32, ICE, and ICD, and should also be able to work effectively with oscilloscopes, logic analyzers, and protocol analyzers.


- Embedded development often involves diagnosing hard-to-reproduce issues, system hang-ups, unexplained resets, memory corruption, and timing violations; therefore, strong analytical thinking and methodical debugging practices are essential.

- The ideal engineer should possess a thorough understanding of operating system concepts, including multi-threaded programming, synchronization mechanisms, parallel processing, interrupt handling, and inter-process communication (IPC). Knowledge of scheduling algorithms, memory management, and kernel-user interactions will help the candidate design and develop stable, efficient, and scalable embedded systems.

- Familiarity with ARM 32/64-bit architectures is required, as many embedded platforms rely on ARM-based SoCs. The candidate should understand processor modes, exception levels, caching mechanisms, MMU configurations, and architecture-specific optimizations.

- Strong debugging proficiency in kernel stability domains is another key expectation. The candidate must be able to analyze system crashes, understand kernel panic logs, identify deadlocks or race conditions, and interpret error traces to pinpoint root causes related to software or hardware failures.


- Experience with kernel crash dumps and recovery strategies is valuable.

- Competence in scripting languages, particularly Python and shell scripting, is important for automating build processes, creating test utilities, and simplifying repetitive tasks. Scripting knowledge helps improve productivity and supports DevOps workflows.

- A working knowledge of version control, code review, and CI/CD tools such as GIT, Perforce, Code Collaborator, Gerrit, JIRA, Confluence, and Jenkins is expected. These tools form the backbone of collaborative development and ensure smooth project execution across multiple teams.


- Additionally, strong analytical thinking, excellent problem-solving skills, effective communication, and a collaborative mindset are essential for succeeding in cross-functional engineering environments.

Educational Qualification : Bachelor's or Master's degree in Engineering with specialization in EEE, ECE, or CSE (B.Tech / M.Tech).

info-icon

Did you find something suspicious?