Programación híbrida ARM integrada, lenguaje C de llamadas ensambladas, en línea, etc.
Intente agregar la directiva PRESERVE8 antes de la definición del segmento.
Acabo de ver la palabra clave PRESERVE8 utilizada en el código ensamblador ARM UCOS hace dos días (agregada antes de la definición del segmento. Nunca la había visto antes, así que fui a Baidu).
1. El código ensamblador no mantiene la alineación de la pila de 8 bytes y llama al código C o C.
2. Cuando el código bajo ADS se compila con RVDS2.2, incluso si está alineado con una pila de 8 bytes, el conector lo tratará como una alineación de pila que no es de 8 bytes.
Por lo tanto, debes especificarlo con una pseudoinstrucción.
El texto E no es bueno, por lo que se adjunta el texto original como referencia:
donde el código ensamblador (que no conserva la alineación de la pila de 8 bytes) llama al código C/C compilado (que requiere una alineación de pila de 8 bytes) y
cuando se intenta vincular objetos SDT/ADS heredados con objetos RVCT 2.x. Los objetos SDT/ADS heredados que no tienen estos atributos se tratan como '~. PRES8', incluso si realmente conservan la alineación de 8 bytes.