Взято из readme к тулчейну:
Код
|----------|--------------------------------------------|----------|
|Cortex-M4 | -mthumb -mcpu=cortex-m4 | armv7e-m |
|(No FP) |--------------------------------------------| |
| | -mthumb -march=armv7e-m | |
|----------|--------------------------------------------|----------|
|Cortex-M4 | -mthumb -mcpu=cortex-m4 -mfloat-abi=softfp | armv7e-m |
|(Soft FP) | -mfpu=fpv4-sp-d16 | /softfp |
| |--------------------------------------------| |
| | -mthumb -march=armv7e-m -mfloat-abi=softfp | |
| | -mfpu=fpv4-sp-d16 | |
|----------|--------------------------------------------|----------|
|Cortex-M4 | -mthumb -mcpu=cortex-m4 -mfloat-abi=hard | armv7e-m |
|(Hard FP) | -mfpu=fpv4-sp-d16 | /fpu |
| |--------------------------------------------| |
| | -mthumb -march=armv7e-m -mfloat-abi=hard | |
| | -mfpu=fpv4-sp-d16 | |
По поводу использования прекомпилированных библиотек: в зависимости от ключей из таблицы линкер должен сам подхватывать соответствующую стандартную библиотеку.
Аналогично, DSP библиотеки есть прекомпилированные - и надо просто подключать нужную.
arm_cortexM4l_math.lib - No FP
arm_cortexM4lf_math.lib - Soft FP
Если нужен Hard FP, то библиотеку надо компилировать самому из исходников (по крайней мере у меня нету под hard FP либы готовой).
По поводу использования soft/hard - вы не совсем верно понимаете. Под этими словами подразумевается способ обращения к регистрам FPU. Могу немного ошибаться в теории, но примерно это означает следующее: soft FP будет использовать регистры общего назначения для доступа к FPU, а hard FP - специально выделенные для этого регистры. В обсновном в интернете и в примерах почему-то используют soft FP, сравнения производительности я не делал между этими режимами, так что подробнее прокомментировать не смогу.