Job Description :
- Design and develop software architectures for libraries tailored to meet the specific requirements of embedded systems, considering factors such as performance, memory constraints, and real-time processing.
- Collaborate with cross-functional teams, including software engineers, hardware engineers, and product managers, to understand system specifications and requirements for the embedded systems.
- Define the overall structure, components, and interfaces of the software library to ensure modularity, reusability, and maintainability.
- Evaluate and select appropriate programming languages, frameworks, and technologies that align with the constraints and capabilities of the embedded systems.
- Implement best practices for code optimization, data management, and resource utilization to enhance the overall efficiency and performance of the software library.
- Conduct thorough testing and validation of the software library to ensure its compatibility, reliability, and functionality across different embedded systems.
- Provide technical guidance and support to the development team during the implementation and integration of the software library into the embedded systems.
- Document the software architecture, design decisions, and technical specifications to facilitate communication and knowledge sharing within the organization.
- Stay updated with the latest advancements in embedded systems, software development practices, and industry standards to incorporate relevant technologies and methodologies into the software :
- Bachelor's or Master's degree in Computer Science, Computer Engineering, or a related technical field and 10-15 years of relevance experience including experience of handling a team of 5-10 peoples.
- Proven experience in designing and implementing software architectures for embedded systems, preferably with a focus on developing libraries or frameworks.
- In-depth knowledge of embedded software development, including programming languages like C, C++, and assembly language, as well as familiarity with embedded operating systems.
- Experience with various software development tools, version control systems, and build automation tools commonly used in the development of embedded systems.
- Familiarity with hardware components and interfaces commonly used in embedded systems, such as microcontrollers, sensors, and communication protocols.
- Strong analytical and problem-solving skills to address complex technical challenges and optimize software performance for resource-constrained environments.
- Excellent communication and collaboration skills to effectively work with cross-functional teams and stakeholders.
- Ability to prioritize tasks, meet deadlines, and manage multiple projects simultaneously in a dynamic and fast-paced Skill
Programming Languages :
Proficiency in C and C++ : These languages are commonly used in embedded systems programming due to their low-level capabilities and efficiency.Assembly Language : Understanding assembly language is crucial for optimizing code and interfacing with hardware at a low level.Real-Time Operating Systems (RTOS) :
Knowledge of RTOS concepts and experience with popular RTOS platforms such as FreeRTOS, VxWorks, or Micrium.Embedded Systems Architecture :
Understanding of microcontroller and microprocessor architectures.Familiarity with various embedded system architectures (ARM, MIPS, AVR, etc.).Communication Protocols :
Expertise in communication protocols like UART, SPI, I2C, CAN, Ethernet, and USB.Experience with wireless protocols such as Bluetooth, Zigbee, and Wi-Fi.Device Drivers :
Ability to develop and optimize device drivers for peripherals such as sensors, actuators, and communication interfaces.Hardware Interaction :
Proficient in interfacing software with hardware components.Knowledge of memory mapped I / O and peripheral register access.Software Development Tools :
Familiarity with integrated development environments (IDEs) such as Keil, IAR, Eclipse, or MPLAB.Experience with debugging tools and techniques, such as JTAG debugging.Modelling and Simulation :
Experience with modelling languages and tools like UML (Unified Modelling Language) for system design.Simulation tools for testing and validating embedded systems before hardware is available.Security Knowledge :
Understanding of security considerations in embedded systems, including secure boot, encryption, and secure communication protocols.ref : hirist.tech)