ARM에서 부동소수점에 대한 printf 및 스택 정렬
기술노트 85413
아키텍처:
ARM
컴포넌트:
general
업데이트:
2021-05-28 오전 7:26
소개
부동소수점(%f)에 대한 printf가 가끔 동작하지 않는 경우가 있습니다.
해결방법
IAR C/C++ Compiler for ARM은 8 bytes로 정렬할 스텍포인터를 필요로 합니다. 8-byte 정렬은 AEABI(추가로, 일부 코어를 위한 컴파일러에서 생성된 일부 명령어)가 필요로 하기 때문입니다.
기본 cstartup 코드는 8-byte 정렬된 주소로 ARM 코어 스택(들)을 자동으로 초기화 합니다. 따라서 프로그램 및/또는 RTOS가 이 작업을 수행하도록 하시기 바랍니다.
배경
MQX 릴리즈 노트에 의하면, MQX 3.7에서는 스택 정렬이 보장되지 않습니다. MQX 3.8에서는 동작이 수정되었습니다. 다른 RTOS들 에서도 해당 문제점이 발견되었습니다.
모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.