Mover código de un ARM M0 + a un ARM M4, ¿qué cambia?

4

Digamos que tengo un programa muy simple que funciona perfectamente bien en un procesador ARM Cortex M0 +. ¿Cuánto necesitaré cambiar para que funcione en un procesador ARM Cortex M4, asumiendo que ambos están hechos por la misma compañía y que he importado el nuevo encabezado de los núcleos?

Simplemente no puedo pensar en ninguna razón por la que no funcionaría. Utilizan un conjunto de instrucciones similar. Me refiero a que el M4 tiene un conjunto de instrucciones Thumb-2 mucho más expandido sobre el M0 +. En mi experiencia, las empresas mantienen el mismo esquema de denominación cuando crean los encabezados de sus dispositivos ARM.

    
pregunta Funkyguy

2 respuestas

5

La CPU no debería darle ningún problema, ya que dice que el conjunto de instrucciones de un M4 es un superconjunto del conjunto de instrucciones M0 / M0 +. Tenga en cuenta que la sincronización puede ser diferente, por lo que la sincronización basada en la espera-ocupado podría no funcionar igual.

Los periféricos pueden ser un PITA, no asumiría que son los mismos a menos que las hojas de datos lean lo mismo.

    
respondido por el Wouter van Ooijen
0

Si su software está en formato ASM / compilado, funcionará (ya que Cortex M4 es un superconjunto de Cortex M0), pero será subóptimo.

Si su software está en C / C ++ (esencialmente se puede compilar), tendrá que elegir:

  • compile para M0 (y no use instrucciones más potentes),
  • compile para M4 y asegúrese de que otros componentes lo admitan (por ejemplo, RTOS debe guardar el estado de la FPU en el contexto del cambio de contexto si se utiliza la FPU),

Sin embargo, tenga en cuenta que los periféricos pueden no ser totalmente compatibles, especialmente si el proveedor no se preocupa por dicha compatibilidad. Evento si el proveedor se preocupa y su software cambia los bits reservados de los valores de restablecimiento, los periféricos pueden no funcionar como se espera.

    
respondido por el kwesolowski

Lea otras preguntas en las etiquetas