Para responder al aspecto de su pregunta sobre el "firmware" en el MCU ATmega328p utilizado en la mayoría de las placas Arduino:
No hay firmware en el ATmega en absoluto aparte del gestor de arranque. Los programas que escribe se ejecutan directamente en el hardware.
Hay ciertas configuraciones de "fusible" que se establecen con un programador ISP . Sin embargo, solo hay 24 de ellos (tres bytes), y se relacionan en gran medida con la configuración de bajo nivel, y no son lo que creo que esté preguntando:
También está el Bootloader , que es un pequeño programa que se encuentra en un segmento separado de la memoria de programa de la MCU y le permite actualizarse al inicio (que es como se programan todos los arduinos). Sin embargo, solo se ejecuta durante un corto período de tiempo al inicio y se elimina por completo de la memoria después de que la MCU haya saltado al programa principal.
Por último, hay MCU auxiliares (ATmega16U2 / 8U2) en la mayoría de las placas arduino que se utilizan como interfaces serie USB, que se pueden actualizar para que se comporten de manera diferente (por ejemplo, emular un teclado / mouse), pero de nuevo, esto no es realmente un cambio al procesador central, por lo que si cuenta como "instalar un firmware diferente" depende de cómo defina el arduino.
Realmente, recomiendo leer la hoja de datos ATmega328P . Esta es la documentación para el MCU que básicamente forma el "Arduino". Debe abordar lo que parecen ser conceptos erróneos.