Embedded Systems Software Engineer
Role details
Job location
Tech stack
Job description
Responsibilities include design and implementation of networking protocols including, but not limited to: Internet Protocol version 4 (IPv4) Internet Protocol version 6 (IPv6) Address Resolution Protocol (ARP) Internet Control Message Protocol (ICMP) Internet Group Management Protocol (IGMP) Dynamic Host Configuration Protocol (DHCP) Transmission Control Protocol (TCP), User Datagram Protocol (UDP) Network Time Protocol (NTP)
Additional responsibilities include but are not limited to: Create detailed design and technical documentation, optimize existing applications, and implement new features. Validate and verify software designs in a diversity of system integration environments - from local desktop computer simulations to fully representative tests. Implement protocols and algorithms for resource-constrained environments and collaborate with the hardware team to enable communication between modules and applications. Ensure software robustness, resilience, and fail-safe operation for critical devices, and mitigate potential safety and security vulnerabilities. Define and execute engineering test, validation, and verification activities. All work products shall be reviewed by the Buyer for technical completeness and accuracy.
Requirements
A minimum of 10 years of experience in networking protocol development, with experience in detailed design and/or implementing protocols in software/firmware. Strong understanding of Layer 2 and Layer 3 networking concepts, including Ethernet, Virtual Local Area Network (VLAN) tagging where applicable, Familiarity with Neighbor Discovery (ND) in IPv6 is highly desirable. A minimum of 5 years of experience implementing or integrating Internet Protocol Security (IPsec) and Internet Key Exchange (IKE) (version 1 and/or version 2).
Embedded networking software experience Proficiency in Ada, C, C++, or equivalent languages Additional desired experience / background: Experience working in mission-critical industries (aerospace, automotive, defense, first responder, medical devices, etc.) and turning CONOPS, Specifications or Requirements into software design, code, test plans and execution Python language experience or equivalent scripting languages Experience with RTOS (Linux, FreeRTOS, QNX, VxWorks, etc.) and device drivers for complex systems using parallel processing, multi-threading, distributed processing, multi-core, SoM, board support package (BSP), device driver development, and / or application program interface (API) design Experience with embedded software testing, debugging, and integration on hardware using debuggers (gdb, lldb, etc.), test equipment (scopes, analyzers, multi-meters, etc.), and UARTs, JTAGs and oscilloscopes Experience with Git or equivalent versioning software Experience with model-based engineering tools such as Cameo
3.2 Resource Qualifications Bachelor's degree in Software Engineering or related STEM field U.S. Citizen Possesses an active US security clearance