• A good understanding of digital and small signal analog electronics.
• Working with hexadecimal numbers and hexadecimal math.
• A very good understanding of boolean math (logic).
• Ability to read and understand schematics.
• Ability to effectively use a multi-meter meter, Oscilloscope and associated tools
• Ability to perform at least basic electronics debugging/troubleshooting.
• Competency in at least one assembly language.
• Competency in the ‘C’ or ‘C++’ programming language with proven working experience in software engineering.
• A good understanding of microprocessor internals (mostly the registers).
• An understanding of memory regions, and their uses (heap, stack, Interrupt Vector Table-IVT, code).
• An understanding of the different kinds of memory (RAM, ROM, Flash), the differences between them and how they are read, written, accessed.
• An excellent knowledge of what interrupts are and how they work in code.
• How to develop and debug code for peripherals such as UARTs, A/D & D/A converters, timers, PWM generation from a timer, real-time clocks, etc.
• How to develop and debug code for communications using Parallel data ports (Matrix Keypad. LCDs, Graphical Displays), RS-232 (and it’s variants), SPI, I2C, CAN, LIN and Flexray....
Working Knowledge of different modules like Ethernet, WiFi (ESP8266, CC3200), RF, ZigBee, BLE, Sub-1GHz, GSM, GPS, 4G -LTE, NB-IoT, LoRa....
• An understanding of multi-tasking
• Ability to use a debugger to perform at least simple operations such as setting breakpoints, single stepping, examining variable values, examining memory, examining registers - and understanding the when to enable and disable interrupts when single stepping using a debugger.
• Ability to debug multi-tasking code.
• The ability to read and understand datasheets of components, and produce driver code for a given device based on the information contained in its datasheet.
• How to develop and debug code with stacks, queues, linked-lists, and other common data constructs.
• A good understanding of DMA (Direct Memory Access), and how to implement it for systems which have DMA capability.
• Understanding the advantages & disadvantages of using a foreground loop with interrupts vs. using a multi-tasking kernel.
• Developing code to run under an RTOS (Real Time Operating System), and how to use semaphores, mutexes, queues, inter-task communications.
• Designing and implementing software of embedded devices and systems
• Designing, developing, coding, testing and debugging system software
• Analyzing and enhancing efficiency, stability and scalability of system resources
• Design and implement software of embedded devices and systems from requirements to production and commercial deployment
• Working knowledge to follow complete embedded software development lifecycle
• Support software QA and optimize I/O performance
• Provide post production support
• Strong documentation and writing skills as well as verbal communication in English.
Ability to deal with different types of customers with passion for client service.
Proficiency in Internet research for collecting data from net and updated knowledge in latest ICs, Modules and products.
Sample Job Profile/ Task List For Embedded Software Engineer - REBI
Understanding the high level requirements and break down to low level software requirements.
To conduct impact analysis on software due to the high level requirements. Preparation of change request and Re-routing of tasks as per the defined process.
Defining unit and Functional test cases and conducting tests as per defined process.
Design and Development of embedded SW in e-drive ECU used in Hybrid and Electrical Vehicles.
Debug the software and fix the issues.
Required Skills:
Very good knowledge in Embedded C (Mandatory).
Design Software components in AUTOSAR environment.
Experience in implementing communication protocols like CAN, LIN, Flex Ray. Experience in embedded SW development & Complex driver development like EEPROM/ Flash Memory/DMA,Timers etc.
Experience in Model based development. (ASCET/MATLAB).
Hands on Experience with Debugger Tools and good debugging skills. Experience in any SCM tools (RTC, ALM, etc) and Testing tools (RTRT, TPT etc). Familiar with Software Development Life Cycle process.
Tools - CAN tools such as Vector CANoe, CANalyzer.
Working knowledge in closed and/or open LabCar /HIL testing.
Preferred skills:
Knowledge on IBM Doors requirement tools.
CAPL scripting knowhow would be an added advantage.
Knowledge on scripting languages like Perl, Python will be an added advantage. ASPICE compliance knowhow would be an added advantage.
Knowledge on Power electronics & Drives domain
System overview of Electric and hybrid Vehicles.
Experience in SW Development in conformance with ISO26262 would be an added advantage.
German language proficiency.(A1/A2)