Software Engineer (C++/Linux/Embedded) at Bell Integrator
40125 Bologna, Emilia-Romagna, Italy -
Full Time


Start Date

Immediate

Expiry Date

21 Aug, 25

Salary

0.0

Posted On

21 May, 25

Experience

0 year(s) or above

Remote Job

Yes

Telecommute

Yes

Sponsor Visa

No

Skills

Rest, Cmake, Software Development, Https, Electronics, Inheritance, Embedded Systems, Version Control, Code, Embedded Linux, Python, Linux, C++, Computer Engineering, Continuous Integration, Ipv6, Ftp, Documentation, Snmp, Design Principles, Linux Development

Industry

Computer Software/Engineering

Description

DETAILED PROJECT OVERVIEW:

  • Development and maintenance of an embedded Linux-based platform and related services for company devices.
  • Design, development, and support of applications for the embedded platform, including wireless communication, networking, file systems, raw GNSS data logging, device management APIs (command-line interface), integration of UHF/FH radios, CAN bus support, and more.
  • Requirements analysis, task clarification, effort estimation, and development of optimal solutions.
  • Creation and customization of system images using Yocto, configuration of device trees.
  • Toolchain maintenance, library updates, and continuous integration support.
  • Development of firmware update subsystems, including Over-the-Air (OTA) updates.
  • Troubleshooting and diagnosing issues in collaboration with hardware engineers, manufacturing engineers, testing teams, and product support teams.
  • Support for manufacturing and testing teams.
  • Collaboration with Linux system and driver developers to provide end-users with APIs and services for peripherals in accordance with technical requirements.

REQUIREMENTS FOR THE CANDIDATE

  • Understanding of satellite navigation or construction equipment automation.
  • Knowledge of key architectural design principles (coupling vs. cohesion, composition, inheritance) and object-oriented programming principles (SOLID).
  • Comprehensive understanding of methodologies and theories for developing object-oriented and service-oriented applications, network protocols, and principles.
  • Experience working in a team with low-level developers, driver developers, RTOS developers, and schematic designers.
  • Hands-on experience with low-level Linux development (kernel modules and drivers).
  • Experience configuring Linux for real-time requirements.
  • Proven experience building embedded Linux systems (Yocto, Buildroot).
  • Familiarity with bootloader functionality (U-Boot).
  • Experience with network protocols and functionalities, including REST, HTTPS, UDP, TCP, FTP, SNMP, and IPv6.
  • Knowledge of pppd, 4G cellular modems, and eSIM/LPA.
  • Experience with Bluetooth/BLE.
  • Experience implementing or developing data transmission protocols.
  • Proven track record in API development with documentation.
  • Proficiency in code optimization and troubleshooting software issues in embedded systems (debugging, profiling, memory leak detection).
  • Bachelor’s degree in Software Engineering, Electronics, Computer Engineering, or related fields.
  • Upper-intermediate or higher level of English proficiency.
  • Minimum of three years of software development experience.
  • Proven experience developing applications for Embedded Linux.
  • Familiarity with software development processes and tools (version control, issue tracking, continuous integration, refactoring, and code quality assurance).
  • Advanced knowledge of C++, including templates and the C++ Standard Library.
  • Experience developing multithreaded applications.
  • Knowledge of Python.
  • Proficiency with CMake.
  • Understanding of software development lifecycle processes.
Responsibilities
  • Develop and maintain an embedded Linux-based platform and related services for company devices.
  • Design, develop, and support applications for the embedded platform, including wireless communication, networking, file systems, raw GNSS data logging, device management APIs (command-line interface), integration of UHF/FH radios, CAN bus support, and more.
  • Analyze requirements, clarify tasks, estimate efforts, and develop optimal solutions.
  • Create and customize system images using Yocto, configure device trees.
  • Maintain toolchains, update libraries, and support continuous integration processes.
  • Develop firmware update subsystems, including Over-the-Air (OTA) updates.
  • Diagnose and troubleshoot issues in collaboration with hardware engineers, manufacturing engineers, testing teams, and product support teams.
  • Provide support to manufacturing and testing teams.
  • Collaborate with Linux system and driver developers to deliver APIs and services for peripherals to end-users in accordance with technical requirements.
    Job Type: Full-tim
Loading...