Es posible que su microcontrolador tenga algunos EEPROM, memoria OTP, bits de fusible de usuario, donde puede establecer una bandera.
No hay un "mejor método en C incrustado", escribir memoria no volátil es diferente en cada microcontrolador.
edit:
FLASH
Los contenidos de la memoria flash se borran al programar el dispositivo. Después de la programación, todos los bytes que no fueron escritos contienen 0xFF. Consulte la hoja de datos para encontrar un área que pueda programarse de manera segura desde el firmware en ejecución.
EEPROM
Aunque no está garantizado en las hojas de datos, todas las EEPROM que he visto hasta ahora contenían 0xFF: s cuando se envían desde la fábrica (excepto las preprogramadas con una dirección MAC única, pero eso está explícitamente documentado). Algunos dispositivos / software de programación también pueden borrar o programar contenidos EEPROM. Algunos pueden estar protegidos contra escritura, de forma permanente o reversible.
OTP
La memoria programable de una sola vez siempre contiene valores iniciales bien definidos, documentados en la hoja de datos.
Siempre es una buena idea incluir una buena suma de comprobación como CRC32 con los datos escritos, para proteger contra la corrupción de datos causada por piezas defectuosas, errores de transmisión, rayos cósmicos, lo que sea.