Responsibilities for a typical software/firmware engineer may include many of the following:
Work with customers and project lead to refine requirements
Assist with system architecture and high-level hardware design
Develop software, embedded software and firmware per requirements on a variety of platforms, from embedded systems, to Microsoft Windows, to Linux
Assist with hardware bring-up
Integrate software/firmware with customer's hardware platform(s)
Produce design release packages for delivery to customers, including external documentation of source code and protocol specifications
As required, meet with customer(s) to discuss project status and to resolve problems
The following is a list of skills and experiences that we find attractive in candidates.
BS in Computer Science, Computer Engineering, Electrical Engineering, or related engineering discipline, MS degree preferred
Minimum 7 years software/firmware development experience
Must be proficient in C/C++
Experience with hardware/software integration in embedded systems
Thorough understanding of networking protocols and techniques
Hands-on experience with logic analyzers, oscilloscopes, etc
Strong written and oral communications skills
Excellent troubleshooting/diagnostic capability
Experience with and discipline in using revision control systems
Because the skill sets needed for each project vary, we expect all candidates to be able to learn new skills and adapt to quickly-changing technology. If you have experience across a number of these technologies, we want to talk with you:
Processors
TI MSP430 microprocessors
Microchip PIC microprocessors
Freescale/Motorola Coldfire and PowerPC microprocessors
ARM 7/9 microprocessors
Intel x86 microprocessors
TI Power-efficient and high-performance DSPs
Operating Systems/Languages
Windows
Visual Studio 6.0 through 2013 (both MFC and .Net)