Job Description
Job Description
Position Title Embedded Software Engineer
Job LocationMossville, IL, USA Covered No
Bill Rate Range50 on C2C
Employment Type: Temporary
Estimated Duration (In Months)10 Work ModelOnsite
Must have Skills/AttributesDesign, Embedded C++, Linux, Software Development ShiftFirst Shift
Nice to have Skills/Attributes Right To RepresentDownload
Position Description
Required Education
• Minimum: Bachelor's degree in Computer Science, Software Engineering, Computer Engineering, or Electrical Engineering.
• Experience Level: 5-7 years of industry experience required.
• Note: A Master's degree in a relevant field with applicable internship/project experience may be considered toward the minimum requirements.
Technical Skills (Must-Have)
• Embedded Linux: Real-world experience implementing software for embedded Linux systems is the key requirement.
• Programming Languages: Proficiency in C, C++, and/or Rust.
• Low-Level Development: Experience with Linux kernel building and Linux device driver development.
• Hardware Knowledge: Ability to read schematics and data sheets for components.
• Debugging: Ability to troubleshoot issues and make system changes as needed to resolve problems.
Technical Skills (Desired/Plus)
• Control software design patterns and anti-patterns
• Software development process theory and practices such as Agile
• Experience designing embedded electronics controls, display, or telematics software
• Development of FPGA HDL & synthesis
• Peripheral interfacing (SPI, I2C)
• Hardware diagnostics
• Operating system configurations
• Non-volatile memory interfacing
• Board initialization and chip-level interfacing
• GIT configuration management tool
• Scripting using Python
• RTOS development (i.e., Free RTOS)
• Networking protocols: Ethernet, TCP/IP, WiFi
• Data link protocols: CAN, J1939
Soft Skills
• Verbal and written communication skills
• Problem solving skills
• Customer service and interpersonal skills
• Ability to research technical topics and learn new technologies and approaches
Job Responsibilities
• Design and implement software of embedded devices and systems from requirements to production and commercial deployment for product lines.
• Research, design, develop, and test the low-layer software, such as I/O drivers, IP/networking, Linux kernel builds, and boot software which interfaces with Caterpillar’s wide variety of displays and telematics
electronic hardware (ECU/ECMs).
• Write and code logical and physical database descriptions and specify identifiers of database to management system or direct others in coding descriptions.
• Analyze and enhance efficiency, stability and scalability of system resources.
• Review project requests describing database user needs to estimate time and cost required to accomplish project.
• Perform requirements analysis and decomposition.
• Evaluate new languages, development tools, or processes.
• Perform product maintenance.
• Manage the software lifecycle through version control and configuration management.
• Keep up to date on new technologies or develop new technologies.
• Communicate technical information to customers, team members, suppliers and other units.
• Support and advise other engineers, managers, marketing personnel, customers and suppliers.