Estoy trabajando en una implementación de AVR109, donde el cargador de arranque se apaga después de dos segundos si no se recibe una serie de bytes en el puerto serie, y luego inicia la aplicación principal usando un puntero de función para direccionar 0.
El cargador de arranque funciona bien y puedo programar el AVR a través del puerto serie. Pero cuando el AVR solo contiene el cargador de arranque, y la memoria flash en la ubicación 0 está vacía, se demoran dos segundos además del tiempo de espera del cargador de arranque cada vez que se reinicia el AVR. ¿Por qué no es esto instantáneo? ¿Por qué el AVR no se reinicia inmediatamente cuando el gestor de arranque establece el puntero en un área vacía en la memoria flash? ¿Es esto algo que puedo configurar?
EDITAR: Mi problema con el gestor de arranque realmente fue causado por PEBCAK . Un error en el bucle de tiempo inicial en el cargador de arranque causó el retraso adicional de dos segundos, y fue corregido. Al saltar al inicio de una memoria flash en blanco / borrada, en realidad solo tomó unos pocos milisegundos antes de que el cargador de arranque se iniciara de nuevo, es decir, no es un gran problema. Pero el mejor enfoque es verificar la ubicación de la memoria flash antes de saltar allí. Si se borra, simplemente reinicie el gestor de arranque en lugar de saltar al área vacía.