ROLE PURPOSE
Pickering Interfaces is an established company developing next-generation test and measurement products for the automotive, aerospace, energy, and semiconductor industries. Pickering has a world-wide presence with design centers in the UK, Czech Republic and the US. We are currently looking for engineers for our US-based design center.
The Software Design Engineer will be involved in many aspects of the Software development life cycle: software architecture and product design, embedded processor software, writing test protocols, writing test software (python), verification on prototype hardware, and documentation. Experience in microcontrollers, embedded operating systems, and data acquisition is desirable.
Essential Functions:
Key responsibilities may include, but are not limited to:
- Writing Software functions in a well-documented, modular style with debug capability and proper error handling
- Participate in the development of system architecture and detailed software design
- Documentation of Software requirements and architecture, block diagramming of code
- Writing Test Software in Python for testing a complex hardware electronic system using off-the-shelf test equipment such as DMMs and oscilloscopes.
- Experience using Visual Studio
- Development or configuration of software drivers for communication protocols (USB, I2C, SPI, UART, etc.) in an FPGA embedded processing environment
- Working knowledge of scripting languages such as Python or BASH.
- Writing build scripts, makefiles and linker scripts for tools such as gcc
- Working knowledge of integrated development environments such as Eclipse Troubleshooting, Xilinx Vivado/Vitis, and experience with logic analyzers, oscilloscopes, microprocessor debuggers, communication protocol analyzers
- Experience writing “bare metal” Software for 16- and 32-bit microcontrollers.
- Ability to understand electrical schematics for mixed-signal systems
- Assist in the failure mode analysis of the hardware/Software device.
- Participation in design reviews
- Collaborate effectively with other engineers, sales, quality, purchasing, mechanical, system test, and manufacturing departments to assist in manufacturing transfer efforts.
Education and Skills
- Bachelor’s Degree (or equivalent in experience) in Electrical/Software Engineering or Computer Science.
- Experience should include extensive use of Python, BASH, or similar interpreted language
- Developing software drivers for peripherals, and troubleshooting communications protocols such as USB, I2C, and SPI.
- Excellent IT/computer skills and a willingness to learn new tools as they become relevant
- Flexibility and ability to self-start on new challenges, problem-solving with minimal supervision
- Ability to work efficiently on multiple tasks with deadlines
- Ability to work in a diverse team with members of varying education and experience levels
- Creative/innovative, able to rapidly problem-solve and work well given typical project schedules
- Good organizational and multi-tasking skills as well as strong written and verbal communication skills
- Proficiency with functional analysis and cascading down from user level to subsystem/ component level of customer requirements
- Capability of using automated software testing tools
- Strong analytical skills and interest in understanding relevant concepts in measurement science
-