Global Connect logo

Global Connect

Embedded Software Engineer.

Global Connect

📍 Iowa City, United States 🇺🇸

full-time
mid-level
hybrid
Posted —

Key Skills

LinuxBSPYoctoDockerCAN

Industry

Agriculture TechnologyAutomotive

Job Description

Job Title: Embedded Software Engineer

Location: iowa or ND

Duration: Long Term

Job Responsibilities

  • Embedded Linux / BSP and Middleware Engineer Autonomous Orchard Tractor
  • Support the Automation Core Software team on an autonomous orchard tractor program, contributing to embedded Linux, BSP, middleware, hardware abstraction, communication, integration, and validation activities.
  • Work in one of two primary technical tracks: Board Support Package (BSP) development or Middleware / middle-layer software development.
  • Develop, integrate, test, and document production-quality embedded software using Deere processes, tools, sprint cadence, and engineering standards.
  • Collaborate frequently with customer engineering teams, suppliers, and cross-functional stakeholders to resolve technical issues, clarify requirements, and deliver working software increments.
  • Support either remote middleware development or preferably on-site BSP development

BSP Track Key Responsibilities

  • Develop and maintain embedded Linux BSPs for target controller hardware.
  • Work with Yocto, recipes, layers, toolchains, root file systems, and Linux image builds.
  • Configure and debug bootloaders such as U-Boot, including board startup, clocks, memory, and pin configuration.
  • Configure and customize the Linux kernel, device tree, drivers, and board support files.
  • Bring up new hardware and debug boot, kernel, driver, and hardware/software integration issues.
  • Validate BSP functionality through unit, integration, regression, and release testing.
  • Support source control, branching, tagging, release notes, build instructions, and technical documentation.

Middleware Track Key Responsibilities

  • Design and develop middleware software that connects the BSP, hardware interfaces, and application layer.
  • Develop Hardware Abstraction Layer components to standardize hardware access and improve portability across platforms.
  • Build core middleware services such as IPC, configuration management, resource management, scheduling, and task coordination.
  • Support communication interfaces and protocols, including CAN, J1939, and Linux SocketCAN.
  • Support data handling, including serialization, deserialization, caching, persistence, and system-state management.
  • Define APIs, support application integration, and optimize deployable components such as Docker containers.
  • Develop unit and integration tests using the existing test framework and target controller hardware where needed.
  • Validate middleware performance, fault handling, recovery behavior, latency, throughput, memory usage, and resource utilization.

Required Qualifications

  • Bachelor s or Master s degree in Electrical Engineering, Computer Engineering, Software Engineering, Computer Science, or a related technical discipline.
  • 3+ years of professional embedded software experience; senior candidates with deeper BSP, middleware, Linux, or architecture experience are strongly encouraged.
  • Hands-on experience developing embedded software in C and/or C++ on Linux-based platforms.
  • Experience with embedded Linux development, debugging, integration, and testing in a hardware-dependent environment.
  • Working knowledge of Git-based version control, Agile/Scrum delivery, defect tracking, code reviews, and technical documentation.
  • Ability to work independently in the assigned engagement model: remote collaboration for Middleware roles and preferably on-site support for BSP roles involving board bring-up, hardware access, and integration/debug activities.
  • Strong written and verbal communication skills, including the ability to document requirements, design decisions, interfaces, test results, and technical issues.

Preferred / Nice-to-Have Experience

  • Yocto Project / OpenEmbedded, BitBake, custom recipes, layers, image generation, and build troubleshooting.
  • Linux kernel configuration, device tree, U-Boot, driver development, board bring-up, root filesystem generation, and hardware/software debug.
  • Middleware, HAL, API design, microservices, IPC, scheduling, resource management, configuration management, and service-oriented embedded architectures.
  • CAN, J1939, SocketCAN, Ethernet, sensor integration, machine communication networks, or autonomous/off-highway vehicle systems.
  • Docker or containerized embedded application deployment, including container size optimization and integration into embedded Linux targets.
  • CI/CD build automation, automated regression testing, hardware-in-the-loop testing, and release/configuration management.
  • Experience in agriculture, off-highway equipment, autonomous systems, robotics, automotive, industrial controls, or safety-/mission-critical embedded systems.