Criptografía en Cortex-M: incompatibilidad de punto flotante

Fuentes: Problemas de compatibilidad de floating-point afectan a implementaciones criptográficas en Cortex-M

Desarrolladores que trabajan con microcontroladores (MCUs) Arm Cortex-M están encontrando problemas de compatibilidad al usar bibliotecas criptográficas, específicamente al integrar sistemas de seguridad como el TrustZone CryptoCell 310. El problema surge de la incompatibilidad entre las diferentes Application Binary Interfaces (ABIs) para operaciones de punto flotante definidas por Arm: 'soft', 'softfp' y 'hard'. La ABI 'hard' permite el uso de registros de punto flotante para pasar argumentos a subrutinas y usar instrucciones de punto flotante, mientras que 'soft' y 'softfp' tienen restricciones. La mezcla de bibliotecas compiladas con diferentes ABIs genera errores de enlazado. El artículo explica las diferencias entre estas ABIs y cómo el compilador controla su uso a través del flag -mfloat-abi. Para solucionar el problema, los desarrolladores deben asegurarse de que todas las bibliotecas y el código estén compilados con la misma ABI de punto flotante, o utilizar una emulación de software para las operaciones de punto flotante si no se dispone de hardware. Este problema resalta la importancia de comprender y gestionar las dependencias de compilación y las opciones de ABI al desarrollar aplicaciones embebidas.