Версия FPU для микроконтроллеров Cortex-M - PullRequest
0 голосов
/ 29 апреля 2019

Из простого поиска в Google я обнаружил, что fpu-версия для Tiva C Launchpad - это fpv4-sp-d16, но в каком документе указана fpu-версия различных микроконтроллеров (tm4c123gh6pm, stm32f407, stm32f446re и т. Д.)?

arm-none-eabi-gcc --print-multi-lib

предоставляет информацию об архитектуре и abi, но версия fpu не упоминается для конкретного архитектуата.

Ответы [ 2 ]

4 голосов
/ 29 апреля 2019

FPU определяется ARM, поэтому вам нужно взглянуть на определения ядра ARM. Обратите внимание, что FPU не является обязательным для ядер, поэтому вам необходимо проверить документацию поставщиков кремния на предмет того, включают ли они FPU.

Для Cortex-M4 дополнительный FPU является 32-разрядным, то есть FP с одинарной точностью. Обратите внимание, что это означает, что двойная точность (то есть 64-битная FP) выполняется без использования FPU.

Определение Cortex-M7 включает в себя дополнительный 64-разрядный FPU и может выполнять инструкции FP как одинарной, так и двойной точности.

Ортогонально используемому FPU - это соглашение о вызовах , которое использует ваша программа. Что касается FP. в основном это означает, передавать ли аргументы функции в регистры FP в нормальные регистры ARM.

0 голосов
/ 29 апреля 2019

Сообщество вооруженных сил предложило следующий ответ

«Техническое справочное руководство по процессору ARM Cortex ‑ M4» содержит эту информацию

ARM Cortex-M4 TRM

Раздел 7.1 о fpu гласит: «FPU Cortex-M4 является реализацией варианта ARMv7-M с плавающей запятой (FPv4-SP) с одинарной точностью»

Также 32 регистра одинарной точности можно объединить в 16 регистров двойной точности (d16), следовательно, fpv4-sp-d16

...