The Engineer Software III designs and develops software applications. The ESIII is capable of working on a project independently and resolving all software problems that come up. Performs coding, debugging, testing and troubleshooting throughout the application development process. The ESIII with work with other engineering and functional areas to obtain optimum utilization of equipment, machinery and resources. May direct junior level software engineers. This specific job entails developing and integrating software applications for our Navigation and Exploration sensor line. This entails understanding and utilizing ‘sensor fusion’ techniques to allow the sensor to maintain awareness of its orientation.
- Develop software modules using the C programming language for real time embedded systems.
- Develop test software modules using C, C++, Python, and/or Labview programming language.
- Develop build automation scripts using Python, Bash, and Windows batch files.
- Prepare and Participate in software, electronics and system design reviews.
- Test software using lab instrumentation such as oscilloscopes and signal generators.
- File bug reports for defects noticed during testing.
- Correct software bugs and resolve software bug reports.
- Support other software engineers in the software development process.
- Participate in product software failure analysis activities and compile test and failure analysis reports.
- Generate software design documentation and report data from tests.
- Keep accurate and complete records of engineering activities.
- May provide training and/or direction to technicians.
- May provide input to bid and proposal activities.
- May provide communications and/or presentations to customers, suppliers or vendors
- May require participation in product field tests requiring travel.
Education, Skills and Experience
- 4-year degree from an accredited university in BSCS, Engineering, or related field OR a combination of education and relevant experience.
- A minimum of 5 years of experience in software, 3 years in Sensor Fusion.
- Strong background in mathematics – vector and matrix math operations, complex variables, gradient-descent optimization, Quaternions, digital filters
- Understand how to read schematics and understand electronics designs.
- Experience with microprocessor components and peripherals (UART, SPI, I2C, DMA, interrupts, clock configuration, etc.). Also known as “Low Level” or “Bare metal”.
- Experience with peripherals, such as Analog to Digital Converters (ADCs), Digital to Analog Converters
- Experience with FreeRTOS, Micrium uC-OS products, or equivalent
- (Optional) Electrical/Electronic design experience – schematic capture and board layout.
- (Optional) Desktop and network software development experience a plus.
Required Qualifications (Job Specific)
- Digital signal processing algorithm modelling and implementation for sensor fusion applications in MATLAB.
- Experience porting MATLAB code to an embedded processor
- Multi-core or multi-processor data synchronization techniques
Required Qualifications (General)
- Understand concepts needed to create drivers for hardware interfaces.
- Good working knowledge of full software development lifecycle.
- Familiarity of software tools (requirements tracking, compilers, assemblers, debuggers, programmers, JTAG, etc.
- Working knowledge of data acquisition concepts, instrument control, test, measurement and implementation of control interfaces to hardware.
- Knowledge of software systems architecture for embedded real-time systems.
- ARM Cortex M Processor Architecture.
- (optional) Analog Devices Blackfin processors.
- (optional) Digital logic design using Field Programmable Gate Arrays (FPGA) and Complex Programmable Logic Devices (CPLDs) with Verilog and VHDL and verification with ModelSim.
- (optional) Familiarity with Intel (formerly Altera) Quartus, Xilinx Vivado design tools, Lattice iCEcube2 software.
- Practical skills for bench-level work, including the ability to configure test equipment to verify design.
- Ability to use original thinking and ingenuity to solve problems.
- Ability to write technical reports and contribute to presentations.
- Proficiency in MS Office Suite including Word, Excel, PowerPoint and Teams.
- Must show initiative and motivation, and have the ability to act independently to resolve technical issues.
Support and mentor other software engineers in the software development process.
The physical demands described here are representative of those that must be met by an employee to successfully perform the essential functions of the job.
While performing the duties of this job, the employee is frequently required to sit, stand, talk and communicate, use hands/finger, feel and reach with arms. This position requires the ability to lift, bend or stoop as necessary up to 20 lbs.
SPARTON provides equal employment opportunities to all employees and applicants for employment without regard to race, color, ancestry, national origin, gender, sexual orientation, marital status, religion, age, disability, gender identity, results of genetic testing, or service in the military. Equal employment opportunity applies to all terms and conditions of employment, including hiring, placement, promotion, termination, layoff, recall, transfer, leave of absence, compensation, and training.