Tengo un diseño con un STM32F105 . Mi solicitud escrita en C; utilizando Eclipse y gcc. He estado usando Eclipse (con OpenOCD y un programador ST-LINK / V2 ) para escribir el firmware a los dispositivos. Ahora necesito programar muchos dispositivos y estoy buscando un método más rápido.
El software Utilidad ST-LINK parece ser una buena opción. Puede apuntarlo a un archivo .hex y configurarlo en "modo automático". A continuación, detecta cuando un dispositivo está conectado al programador y lo escribe. Luego conectas otro dispositivo que se escribirá automáticamente. Muy suave.
Este es el problema: Parece que el firmware escrito en el dispositivo por Eclipse es realmente diferente al archivo hexadecimal generado por Eclipse .
Esto es lo que estoy viendo:
- Programo el Dispositivo # 1 a través de Eclipse. Quito el programador, reinicio el dispositivo y funciona bien.
- Encuentro el archivo .hex generado por Eclipse (... / Debug / application.hex).
- Programo el Dispositivo # 2 usando la utilidad ST_LINK y este archivo. Quito al programador. El código no se ejecuta , incluso después de reiniciar el dispositivo.
- Utilizo la utilidad ST-LINK para leer el código (en funcionamiento) directamente desde el Dispositivo # 1.
- Utilizo la utilidad ST-LINK para programar este código en el Dispositivo # 2. Ahora, Dispositivo # 2 funciona correctamente .
Bien, entonces el archivo .hex generado debe estar equivocado. Puedo usar la utilidad ST-LINK para comparar los dos archivos hexadecimales (de los pasos 2 y 4). Muestra que los archivos son idénticos hasta el final:
(haga clic para ampliar si es necesario)
Finalmente,mispreguntas:
¿Porquéelarchivo.hexgeneradoesincorrecto?¿QuizásEclipseusagccparacrearelhexyluegolomodificaenrutaaldispositivo?¿CómopuedohacerqueEclipsegenereunarchivohexquecoincidaconelcódigoqueprogramaenundispositivoreal?
Tengaencuentaqueestoyconstruyendolaconfiguración"Depurar". Cuando Eclipse se conecta al dispositivo de destino, programa el código y me permite depurar. Si quito el hardware del depurador, el dispositivo todavía funciona. Es decir, el código funciona bien sin el depurador adjunto.