What we need
We are looking for a Senior Embedded Software Engineer to join our Safety Technologies Software team. Your job will be to design and develop software strategies for a real-time ARM-based platform that has functional safety requirements.
What we do
Symbotic is building safety-critical systems leveraging advanced computer vision, robotics, and 3D sensing that will transform warehouse automation. The Safety Technologies Software team is tasked with developing a high-performance multiprocessor computer vision system, an embedded application that interfaces with industrial robots for safety controls and monitoring, as well as an intuitive engineering application which is used to design and configure the system.
What youll do
-
Design and develop software strategies for real time ARM-based platform in C that has functional safety requirements.
-
Implement, document and maintain Linux and embedded real- time code and shell scripts (PERL, Bash, Python).
-
Analyze failure modes as well as design redundancy and fail-safe mechanisms into the software to ensure the system always results in a safe system.
-
Create C-based unit and integration tests that verify and validate the functionality of the embedded platform and ensure your code meets test coverage goals.
-
Support system testing of components and subsystems.
-
Collaborate with our hardware team, review schematics, and develop software to support peripherals on a custom hardware platform.
-
Troubleshoot system problems in production or design by investigating issues related to product performance or production difficulties, primarily through log analysis. Support board bring-up.
-
Participate in a rigorous review process (code and design) to ensure your software meets our quality bar. Use Git to ensure commits are well-organized and traceable to our requirement tracking system.
What youll need
-
At least 8 years of professional experience developing real time embedded software and device drivers. Familiarity with networking protocols and control systems.
-
A minimum of a Bachelor of Science in a related engineering discipline (i.e. Computer Science, Mathematics, Electrical Engineering, etc.).
-
Experience with software process and version control tools.
-
Strong background in Linux shell scripting (especially Python and bash), familiarity with grep, regex and parsing; and file system command line utilities.
-
In-depth knowledge of real time or embedded operating systems (e.g.,VxWorks, FreeRTOS, SafeRTOS) and threading and communication issues related to real time operating systems (for mobile robotics or control systems would be ideal).
-
POSIX multi-threading (thread priority, thread arbitration), synchronization mechanisms (mutexes, semaphores), shared memory, event and signal handling, and inter-process communications.
-
Low level communication protocols and sockets implementations, UDP, TCP/IP, TCP/NFS, and related alignment and packing issues.
-
Experience with programming and debugging for memory-constrained systems.
-
Experience in regulated environments such as functional safety or medical devices is a plus
Our Environment
-
Up to 10% travel may be required. Employees must have a valid drivers license and the ability to drive and/or fly to client and other customer locations.
-
The employee is responsible for owning a credit card and managing expenses personally to be reimbursed on a bi-weekly basis.
#LI-EJ1
#LI-Hybrid