Per cliente multinazionale operante in ambito tecnologico siamo alla ricerca di un EMBEDDED SOFTWARE ENGINEER (livello Middle) da inserire nel team di progettazione software.
La preghiamo di verificare di possedere il livello di esperienza e le qualifiche adeguate leggendo la panoramica completa di questa opportunità qui sotto.
La risorsa si occuperà dello sviluppo "low-level" su piattaforme basate su architettura ARM, curando l'intero ciclo di vita del software: dalla fase di accensione del processore (Bootloader) fino alla configurazione dell'ambiente operativo Linux o RTOS e alla messa in sicurezza del sistema.
Responsabilità Tecniche
* Sviluppo Low-Level: Sviluppo e personalizzazione di First Stage Bootloaders e U-Boot.
* Secure Boot & Trust: Implementazione di Trusted Boot Chains, gestione della firma del firmware e integrazione di meccanismi di Root of Trust su architetture ARM.
* Linux Kernel & BSP: Configurazione, patching e ottimizzazione del Kernel Linux; sviluppo di driver e gestione dei Device Tree.
* Build Systems: Creazione e mantenimento di distribuzioni Linux custom tramite Yocto Project.
* Firmware Security: Implementazione di protocolli di sicurezza e gestione di ambienti di esecuzione isolati.
Requisiti Tecnici per Architettura
* ARMv7-A (32-bit): Ottimizzazione del boot e gestione della memoria su core single-core ad alta efficienza.
* ARMv8-A (64-bit): Gestione di sistemi multi-core complessi e interfacciamento con Trusted Firmware-A.
* ARMv7-M / ARMv8-M: Sviluppo di firmware per i co-processori real-time integrati nei SoC per la gestione di task critici e sicurezza.
Toolkit Tecnologico Previsto
* Ambiente: Linux e Windows come OS di sviluppo.
* Debug: JTAG, GDB, analizzatori di protocollo (UART, I2C, SPI).
* Istruzione: Laurea in Ingegneria Elettronica, Informatica, Telecomunicazioni o equivalente.
* Esperienza: Almeno 3 anni di esperienza nello sviluppo embedded su Linux o RTOS.
* Linguaggi: Ottima conoscenza del linguaggio C/C++ e dei puntatori.
* Sistemi Operativi: Conoscenza dei concetti base dei sistemi operativi (gestione memoria, scheduling, interrupt).
* Attitudine: Forte curiosità per l'architettura dei calcolatori e propensione al debug su hardware.
* Bootloader: Esperienza pratica nella modifica di sequenze di boot e gestione di partizioni ridondate.
* Yocto: Capacità di creare layer e ricette custom per il supporto di nuove schede (Board Support Package). xrdztoy
* Sicurezza: Conoscenza di base di crittografia (AES, RSA, hashing) applicata al firmware.