Principal Embedded Software Engineer
Designs, modifies, develops, writes and implements embedded software for products developed by the Toro Company. This position will be responsible for developing software for embedded products for new product concepts related to Electrification, Automation, Connectivity and Control.
DUTIES & RESPONSIBILITIES:
Develops modular, structured software that meet product design requirements. Write code including “C” and “C++” language that is easily understood and maintained by others. May also create code from models using tools such as Matlab.
Work with microcontroller and microprocessor based systems. Write low level code to integrate the micro with peripheral devices. Write higher level code to control the machine application.
Evaluate performance behavior of modular pieces of code under development by taking appropriate measurements while the software module is operating in the embedded product.
Works with design teams to negotiate and finalize clearly defined product software requirements.
Develops clear software development plans.
Develops software specification and design documents ensuring the designs meet the product, safety, and applicable industry standards or requirements.
On embedded control applications, works closely with product engineering and marketing to ensure that the electromechanical control optimizes the performance of the product.
Work with test team to resolve validation issues resulting from HIL (hardware in loop) testing as required.
All other tasks and projects as assigned.
Closely interact with software design team to design software for machine control, subsystems, and devices implemented on new development products.
Moderate interaction with software, hardware and test engineers while learning design methods and while learning the product application.
Bachelor's or Master’s degree in Electrical, Electronics, Computer, Mechanical, Mechatronics, Agricultural or Aeronautical Engineering from an ABET accredited university.
Minimum of 8+ years of experience in a product development environment.
Strong C and C++ programming skills and ability to create understandable, supportable code.
Software development experience with 8 and 32-bit microcontrollers.
Demonstrated ability to fully develop an embedded product from initial concept to production.
Knowledgeable with functional safety software methods and designs.
Demonstrated skills and ability to define product requirements. Proven to be actively involved in the definition and documentation of project requirements as it relates to or affects software design.
Proficient at using IDE debugger, oscilloscope, logic analyzer tools to take performance measurements of working code or to evaluate software behavior while debugging code.
Excellent communication and teaming skills. Demonstrated leadership ability
Preferred experience in one or more of the following:
Experience with ADC, CAN, i2c, SPI, FLASH, interrupts
Exposure to ARM, ATMEL, MICROCHIP, STMicro, or TI micros
Software development experience with 64-bit microcontrollers
Experience with low-level embedded technology, including UART, Ethernet, and CAN.
Experience working with embedded systems and real-time operating systems (RTOS) like FreeRTOS. Desired experience with embedded Linux.
Familiarity with model-based design and testing - MATLAB/Simulink or similar.
Ability to test software and analyze system performance, leveraging system integration, simulation, and platform tests.
Familiarity with SVN, GIT, or other version control tools, working in a structured, revision-controlled software development environment.
Experience integrating multiple sensors and actuators on an embedded platform.
Motor control experience
Experience with automotive or off-road equipment
Experience with IEC 60335 software safety requirements desired.
We are proud to be an Equal Opportunity Employer. We celebrate diversity and are committed to creating an inclusive environment for all employees.