atmega32u4 reinicio, cargador de arranque y fusibles

0

Tengo un atmega32u4 de fábrica con dfu dentro. El HWB está desplegado y el pin RESET está levantado.

El primer conector USB, el programador dfu aparece en mi caja de Linux. Subo el firmware sin problema. Ahora, cada vez que conecto mi atmega a USB, la aplicación se ejecuta primero, en lugar de dfu. Pero, cuando se restablece el mcu por software, se ejecuta el código del cargador de arranque.

Según la hoja de datos, los fusibles predeterminados son: BOOTRST = 1 y HWBE = 0. Con estos fusibles y señales, el comportamiento esperado debe ser siempre el primero como se muestra en la imagen.

No sé por qué se reinicia con el software, se ejecuta el gestor de arranque.

    
pregunta andres7293

1 respuesta

0

Después de algunas pruebas, esto es lo que sucedió. El código de inicio es:

*. Al inicio, compruebe MCUSR. Si el reinicio se debió a watchdog, borre la bandera correspondiente.

*. Desactivar wdt.

*. Configure wdt con el tiempo de espera deseado.

*. Alimentar el wdt cuando sea necesario.

Se pueden iniciar dos aplicaciones con el programador dfu:

  1. Inicie la aplicación con un restablecimiento de hardware interno usando el watchdog.

  2. Un salto en la dirección 0x0000 sin restablecer.

Colgar mcu más tarde, si la aplicación se lanzó con la opción uno, las aplicaciones se iniciarán.

Usando la opción dos, por algún motivo, el cargador de arranque se ejecuta esta vez.

    
respondido por el andres7293

Lea otras preguntas en las etiquetas