Position Name: Software Architect
- Design and develop software architectures for libraries tailored to meet the specific requirements of embedded systems, considering factors such as performance, memoryconstraints, 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 ensuremodularity, 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 architecture.
- Requirements:
- Bachelor's or Master's degree in Computer Science, Computer Engineering, or a related technical field and 3 - 8 years of relevance experience
- 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 environment.
- Technical 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.
- Power Management:
- Knowledge of power optimization techniques and low-power design principles for embedded systems.
- Testing and Debugging:
- Proficiency in unit testing, integration testing, and debugging techniques for embedded systems.
Knowledge of tools like JTAG probes and logic analyzers.
- Documentation:
- Ability to create comprehensive technical documentation for software architecture, design, and implementation.
- Version Control Systems:
- Experience with version control systems like Git for collaborative development.
- Continuous Integration/Continuous Deployment (CI/CD):
- Familiarity with CI/CD pipelines for automated testing and deployment.
- Domain-Specific Knowledge:
- Depending on the specific industry, knowledge of domain-specific standards and regulations (e.g., automotive standards like ISO 26262).
Job Types: Full-time, Permanent
Pay: 863,608.97 - 1,530,706.49 per year
Benefits:
Paid sick time Provident Fund
Schedule:
Supplemental pay types:
Experience:
- Software architecture: 3 years (Preferred)
Work Location: In person
+91 7709548757