Autor Tema: STM32 - Recompilar para otro micro  (Leído 765 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 17727
    • MicroPIC
STM32 - Recompilar para otro micro
« en: 25 de Marzo de 2019, 06:01:01 »
Buenos días, hace tiempo que intento resolver un problema y no consigo una solución limpia.
Se trata de que a veces encuentro algún ejemplo interesante para STM32 en Internet, pero está diseñado para una familia distinta al que yo estoy usando.
Si quiero recompilar el ejemplo adaptándolo para mi micro, me toca copiar nuevas librerías y cambiar todas las referencias. A menudo se me complica tanto que no lo consigo.
¿No hay una forma automática o sencilla de hacer ese cambio?
Uso Atollic True Studio y STM32F103

Gracias
Un saludo desde Sevilla, España.
Visita MicroPIC                                                                                        ɔ!doɹɔ!ɯ ɐʇ!s!ʌ

Desconectado cristian_elect

  • PIC18
  • ****
  • Mensajes: 452
Re:STM32 - Recompilar para otro micro
« Respuesta #1 en: 26 de Marzo de 2019, 01:15:01 »
Usando stm32 cortex M3 a M0 no tenia problemas pero del M4 al M0 eso si tenia que modificar mas.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re:STM32 - Recompilar para otro micro
« Respuesta #2 en: 28 de Marzo de 2019, 07:49:30 »
 
No se me dió el caso nunca, digo "se me dió" en pasado, porque hace tiempo que ya no trabajo con los STM32, me pasé a los Kinetis y recientemente a los i.MX de NXP. Con los STM32 siempre usé el 407, o el 405 que es el mismo sin Ethernet, y todo lo hice con Cube, no usé nunca fuentes hechos para micros de otras familias.

Las diferencias entre familias para adaptar fuentes, pueden estar en la configuración del reloj, en el linker script para la compilación (tamaño y dirección de inicio de la flash y la RAM) y que el fuente esté usando un periférico o un puerto que no tenga el nuevo micro. 

Debe de haber un include a un archivo que define las direcciones de todos los periféricos del micro, eso hay que cambiarlo y poner el correspondiente al nuevo micro o aunque tenga los mismos periféricos podrían estar en direcciones distintas. El problema puede estar en que no se hayan hecho los defines siguiendo el mismo estandard en el fuente original y en el nuevo archivo que pongamos para definir las direcciones de los periféricos, en ese caso el compilador echará un chorro de errores, algo así me ocurrió al compilar algo de utasker para los STM32, si no recuerdo mal.

No se me ocurren más cosas. Si en el fuente hay defines que condicionen el funcionamiento según el micro, también lo tendrías que revisar.

Que yo sepa no hay ningún sistema automático para hacer todos esos cambios, hay que hacerlos a mano.

Aunque la portabilidad en el mundo ARM, en teoría debería de ser sencilla, en la práctica se complica cuando los autores de librerías no siguen el mismo estandard con los defines de los periféricos. 
Desgraciadamente, parece bastante común esa falta de entendimiento, cada uno va a su bola y que arree el que venga detrás. Dependiendo de cuantos periféricos se estén usando, acondicionarlo todo puede ser sencillo o la obra del Escorial.
« Última modificación: 28 de Marzo de 2019, 08:30:59 por planeta9999 »

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 17727
    • MicroPIC
Re:STM32 - Recompilar para otro micro
« Respuesta #3 en: 28 de Marzo de 2019, 14:34:03 »
Muchas gracias, seguiré peleando entonces.
Un saludo desde Sevilla, España.
Visita MicroPIC                                                                                        ɔ!doɹɔ!ɯ ɐʇ!s!ʌ

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re:STM32 - Recompilar para otro micro
« Respuesta #4 en: 28 de Marzo de 2019, 18:04:50 »

Puedes postear los errores que te da el compilador, de que micros se trata (original y nuevo), y que librerias son las conflictivas, para determinar el problema. Pero estoy casi seguro de que todo viene del archivo que define las direcciones de los perifericos.

Tambien hay que considerar el linker script, aunque eso si esta mal, probablemente te compile pero luego puede no funcionar, lo mismo para la configuracion del reloj.

Para eso supongo que se crearon las CMSIS en el mundo ARM, para mantener un estandard entre fabricantes, y dentro del fabricante entre familias. El problema es que luego quien crea librerias, realmente puede hacer lo que quiera, y eso desgraciadamente ocurre mucho.