Embedded Software Engineer
As a member of the software development group you will be part of a dynamic development team performing analysis, design and development of our next generation embedded software using C and C++
Essential Skills/Experience
- Experience with using Assembly, C and C++ in the development of embedded software.
- Experience with using object oriented programming techniques in the development of embedded software.
- Experience with RTOS and multi-tasking interrupt based embedded software development.
- Experience using ICE and debuggers in the development of embedded software.
- Solid understanding of Object Oriented methodologies and concepts in general.
- Able to understand and intelligently debug existing software.
- Solid understanding of general programming software technology.
- Understanding and appreciation of software development lifecycles.
- Knowledge of and understanding of software design patterns.
Desired Skills/Experience
- Experience with PLD/FPGAs and ABAL/VHDL.
- Familiarity with C, C++ and C# for Windows applications.
- Familiarity with system interfaces such as CAN, JTAG, I2C, OCDS, AUD, RTD, NBD and Ethernet.
- Experience with SAE, ISO and ASAM standards.
- Understanding of communication protocols such as CCP, XCP, J1939, TCP/IP ISO14229 and ISO15765.
- Familiarity with Assembly language programming.
- Ability to understand machine instructions.
Bonus Skills/Experience
- Experience with communication transport layers such as CAN, RS232, USB, Ethernet and Flexray.
- Knowledge of data acquisition concepts and systems.
- Knowledge of automobile and engine controls systems.
- Knowledge of wireless communication systems.
Essential Non-Technical Skills
- Positive proactive attitude and solid work ethic.
- Strong communication skills.
- Strong organizational skills.
- Experience with Microsoft Office applications.
- Detail-oriented and methodical coding mentality.
- Willingness to follow processes and procedures.
- Ability to work independently.
Responsibilities will include:
- Both new development and maintenance/enhancement to existing embedded software.
- Detailed technical design of system architecture and software components based on requirements.
- Development and execution of unit test procedures.
- Development and execution of system test procedures.
- Development and updating of documentation on work performed.