Bell Integrator Europe S.R.L.Functional duties:· Work in an international (Germany, Italy, USA) team of developers on the firmware for geodetical-grade GNSS receivers with a rich functionality.· Working during normal CET working hours· Attending physical office will be required occasionally (the schedule is defined based on the local office policy and agreement with the technical team leader)· Requirement analysis, designing solutions, effort estimation, actual implementation· Program architecture development, support of existing implementation and adding new functionality· Work is on Linux· Depending on the skills and individual preference working on tasks ranging from business logic development to low level system programming, for example:o Extending programmable API intended for customers and external software developerso Collaboration with teams of our Linux system developers, RTOS developers, microcontrollers firmware developers on delivering functionalityo Supporting networking functionalityo Adding functionality to u-boot bootloader including device initializationo Working on firmware update feature in u-booto Work with HW teams on testing procedures for various HW subsystemso Development application-specific message exchange protocols (IMU, digital radio and others)o Development of internal messaging APIs to communicate with peripheral devices via SPI, i2c buses (like IMU).o Working on various runtime defects (work with stack traces, hardware breakpoints and hardware debuggers)o Performance optimizationo Providing help for engineers working on implementing the mathematical algorithms in codeRequirements:· Experience working in a team in a shared code ownership environment, responsibility and wide knowledge of the programming· Long term commitment to the work· Bachelor or Master's degree· Good English at least B1· Experience in C++ development from 3 years.· Experience with basic development tools and version control (git + pull requests), issue-tracking, continuous integration, continuous delivery, refactoring, and static and runtime code checking.· Ability to understand existing program architecture and existing source code· Experience with cmake· Static code analysis· Automated unit testingNice to haves:· Understanding GNSS· Experience with bare-metal and/or RTOS (FreeRTOS) development· Experience with microcontrollers programming· Interrupt-driven programming, understanding multitasking in microcontrollers and in RTOS, understanding how cashes workIngegnere Software (C++/Sistemi Real Time)Mansioni principali:
Collaborare con un team internazionale di sviluppatori (Germania, Italia, USA) allo sviluppo del firmware per ricevitori GNSS di precisione geodetica con funzionalità avanzate
Lavorare durante le normali ore di ufficio CET
Presenza fisica in ufficio occasionalmente richiesta (secondo il calendario definito dalla politica dell'ufficio locale e in accordo con il responsabile tecnico del team)
Analisi dei requisiti, progettazione di soluzioni, stima degli effort, implementazione effettiva
Sviluppo dell'architettura del programma, supporto all'implementazione esistente e aggiunta di nuove funzionalità
Lavoro su ambiente Linux
In base alle competenze e alle preferenze individuali, attività che spaziano dallo sviluppo della logica di business alla programmazione di sistema low-level, ad esempio:
o Estensione dell'API programmabile destinata a clienti e sviluppatori software esternio Collaborazione con i team di sviluppatori del nostro sistema Linux, sviluppatori RTOS e sviluppatori firmware per microcontrollori per il rilascio di funzionalitào Supporto alle funzionalità di reteo Aggiunta di funzionalità al bootloader u-boot inclusa l'inizializzazione dei dispositivio Lavoro sulla funzionalità di aggiornamento firmware in u-booto Collaborazione con i team HW sulle procedure di testing per vari sottosistemi hardwareo Sviluppo di protocolli di scambio messaggi specifici per applicazioni (IMU, radio digitale e altri)o Sviluppo di API di messaggistica interna per comunicare con dispositivi periferici tramite bus SPI, i2c (come IMU)o Risoluzione di vari difetti a runtime (lavoro con stack trace, breakpoint hardware e debugger hardware)o Ottimizzazione delle performanceo Supporto agli ingegneri che implementano gli algoritmi matematici in codiceRequisiti:
Esperienza nel lavorare in team in ambiente di proprietà del codice condivisa, senso di responsabilità e ampia conoscenza della programmazione
Impegno a lungo termine nel lavoro
Laurea triennale o magistrale
Buon livello di inglese almeno B1
Esperienza nello sviluppo C++ di almeno 3 anni
Esperienza con strumenti di sviluppo di base e controllo versione (git + pull request), issue-tracking, integrazione continua, consegna continua, refactoring, e verifica statica e runtime del codice
Capacità di comprendere l'architettura esistente del programma e il codice sorgente esistente
Esperienza con cmake
Analisi statica del codice
Testing unitario automatizzato
Requisiti preferenziali:
Conoscenza dei sistemi GNSS
Esperienza con sviluppo bare-metal e/o RTOS (FreeRTOS)
Esperienza nella programmazione di microcontrollori
Programmazione guidata da interrupt, comprensione del multitasking nei microcontrollori e negli RTOS, conoscenza del funzionamento delle cache
Settore: InformaticaRuolo: IT/TechnologyGestisce altre persone: NoTipo di occupazione: Contratto a tempo indeterminatoInquadramento: Impiegato