Демистификация инструмента Yocto Toolchain: SoftFP

Привет, коллеги-разработчики! Сегодня мы собираемся погрузиться в увлекательный мир проекта Yocto и изучить один из вариантов его набора инструментов под названием «SoftFP». Если вы работаете над кросс-компиляцией для встраиваемых систем, особенно для архитектуры ARM, понимание SoftFP может значительно улучшить ваши усилия по оптимизации. Итак, засучим рукава и начнем!

Что такое SoftFP?

Короче говоря, SoftFP означает «программное обеспечение с плавающей запятой». Это опция набора инструментов в проекте Yocto, которая позволяет вам выбирать, как будут обрабатываться операции с плавающей запятой во время кросс-компиляции. По умолчанию большинство архитектур ARM имеют аппаратную поддержку операций с плавающей запятой. Однако SoftFP предлагает альтернативный подход, который эмулирует вычисления с плавающей запятой с помощью программных библиотек вместо того, чтобы полагаться на аппаратные инструкции.

Зачем использовать SoftFP?

SoftFP предлагает несколько преимуществ в зависимости от вашего конкретного варианта использования. Это может помочь уменьшить размер двоичного файла, улучшить совместимость между различными архитектурами ARM и обеспечить лучшую оптимизацию для систем с ограниченными ресурсами. Кроме того, SoftFP может быть полезен, если вы хотите скомпилировать код, взаимодействующий с другими библиотеками или компонентами, созданными с использованием других параметров с плавающей запятой.

Методы включения SoftFP в Yocto:

  1. Добавление SoftFP в переменную MACHINE_FEATURES:

В вашем local.conf или файле конфигурации компьютера вы можете добавить флаг «softfp» в переменную MACHINE_FEATURES. Например:

MACHINE_FEATURES += "softfp"
  1. Изменение ABI с плавающей запятой в конфигурации цепочки инструментов:

Вы также можете изменить ABI с плавающей запятой (двоичный интерфейс приложения) в конфигурации цепочки инструментов. Это можно сделать, добавив следующую строку в файл local.conf или файл конфигурации компьютера:

PACKAGE_EXTRA_ARCHS_append = " softfp"
  1. Изменение переменной MACHINEOVERRIDES:

Если вы хотите включить SoftFP для конкретной машины, вы можете изменить переменную MACHINEOVERRIDES. Например, если вы нацелены на Raspberry Pi 4, вы можете добавить следующую строку в файл local.conf или файл конфигурации компьютера:

MACHINEOVERRIDES_append = ":softfp"
  1. Изменение параметров GCC:

Вы можете изменить параметры GCC напрямую, добавив следующие строки в файл local.conf или файл конфигурации компьютера:

TARGET_CC_ARCH += "-mfloat-abi=softfp"
TARGET_LD_ARCH += "-mfloat-abi=softfp"

Поздравляем! Теперь вы узнали о опции набора инструментов SoftFP проекта Yocto. Включив SoftFP в рабочий процесс кросс-компиляции, вы сможете оптимизировать свой код для архитектур ARM, уменьшить размер двоичного кода и улучшить совместимость. Поэкспериментируйте с этими методами и посмотрите, какой из них лучше всего подойдет для вашего проекта. Приятного кодирования!