Key Responsibilities :
- Design, develop, and maintain high-performance C++ software for embedded Linux platforms.
- Participate in the architecture, design, implementation, testing, and deployment of image and video processing applications.
- Develop software components for real-time multimedia processing systems with a strong focus on performance, scalability, and reliability.
- Design and implement object-oriented software using modern C++ standards and design patterns.
- Develop multithreaded applications to maximize system performance and efficient resource utilization.
- Collaborate with hardware engineers to integrate software with embedded processors, peripherals, and custom hardware platforms.
- Develop software solutions for ARM-based embedded platforms and Linux operating systems.
- Optimize software for low latency, high throughput, and efficient memory utilization.
- Participate in debugging complex software and hardware integration issues.
- Develop and maintain Linux-based embedded applications and supporting software components.
- Contribute to software architecture discussions and technical design reviews.
- Perform root cause analysis and resolve complex software defects.
- Write unit tests, integration tests, and support system validation activities.
- Participate in code reviews and ensure adherence to coding standards and software engineering best practices.
- Support software release management, build automation, and continuous integration processes.
- Work closely with cross-functional teams including Product Management, QA, Hardware Engineering, and Manufacturing.
- Document software designs, technical specifications, APIs, and implementation details.
- Mentor junior engineers by providing technical guidance and knowledge sharing.
- Stay updated with advancements in embedded software, multimedia technologies, Linux kernel development, and modern C++ programming.
Required Technical Skills :
1. Programming Languages :
- C++
- Modern C++ (C++11/14/17/20)
- C
2. Core Technologies :
- Object-Oriented Programming (OOP)
- Object-Oriented Design (OOD)
- Design Patterns
- STL
- Boost Libraries
- Multithreading
- Concurrent Programming
- Memory Management
- Performance Optimization
3. Embedded Systems :
- Embedded Linux
- ARM Architecture
- Embedded Software Development
- Cross Compilation
- Real-Time Systems
- Firmware Integration
4. Linux Development :
- Linux System Programming
- POSIX APIs
- Shell Scripting
- Linux Kernel Concepts
- Process & Thread Management
- IPC Mechanisms
5. Multimedia & Image Processing :
- Image Processing
- Video Processing
- Audio Processing
- OpenCV
- GStreamer
- Media Processing APIs
- Video Rendering
- Image Enhancement
- Computer Vision (Preferred)
6. Device & Driver Development :
- Linux Device Driver Development
- Kernel Modules
- Device Tree
- Hardware Abstraction Layer (HAL)
- Hardware Interfaces (PCIe, USB, SPI, I2C, UART, Ethernet)
7. Networking :
- TCP/IP
- UDP
- Socket Programming
- Network Streaming
8. Graphics & GPU :
- GPU Programming
- OpenGL (Preferred)
- CUDA/OpenCL (Preferred)
- Hardware Acceleration
9. Software Development Tools :
- Git
- SVN
- CMake
- Makefiles
- Jenkins
- Build Automation
- Continuous Integration
- GDB
- Valgrind
Qualifications :
- Bachelor's degree in Computer Science, Software Engineering, Electronics, Electrical Engineering, or a related discipline.
- Master's degree is an added advantage.
Experience :
- 1012 years of experience in Embedded Software Development.
- Strong experience developing C++ applications on Linux platforms.
- Proven expertise in embedded multimedia or image processing applications.
- Experience working on ARM-based embedded platforms.
- Hands-on experience with multithreaded programming and performance optimization.
- Experience developing software for video processing, broadcasting, multimedia, or embedded display products is highly preferred.
(ref:hirist.tech)