Привет, коллеги-разработчики! Сегодня мы собираемся погрузиться в увлекательный мир проекта Yocto и изучить один из вариантов его набора инструментов под названием «SoftFP». Если вы работаете над кросс-компиляцией для встраиваемых систем, особенно для архитектуры ARM, понимание SoftFP может значительно улучшить ваши усилия по оптимизации. Итак, засучим рукава и начнем!
Что такое SoftFP?
Короче говоря, SoftFP означает «программное обеспечение с плавающей запятой». Это опция набора инструментов в проекте Yocto, которая позволяет вам выбирать, как будут обрабатываться операции с плавающей запятой во время кросс-компиляции. По умолчанию большинство архитектур ARM имеют аппаратную поддержку операций с плавающей запятой. Однако SoftFP предлагает альтернативный подход, который эмулирует вычисления с плавающей запятой с помощью программных библиотек вместо того, чтобы полагаться на аппаратные инструкции.
Зачем использовать SoftFP?
SoftFP предлагает несколько преимуществ в зависимости от вашего конкретного варианта использования. Это может помочь уменьшить размер двоичного файла, улучшить совместимость между различными архитектурами ARM и обеспечить лучшую оптимизацию для систем с ограниченными ресурсами. Кроме того, SoftFP может быть полезен, если вы хотите скомпилировать код, взаимодействующий с другими библиотеками или компонентами, созданными с использованием других параметров с плавающей запятой.
Методы включения SoftFP в Yocto:
- Добавление SoftFP в переменную MACHINE_FEATURES:
В вашем local.conf или файле конфигурации компьютера вы можете добавить флаг «softfp» в переменную MACHINE_FEATURES. Например:
MACHINE_FEATURES += "softfp"
- Изменение ABI с плавающей запятой в конфигурации цепочки инструментов:
Вы также можете изменить ABI с плавающей запятой (двоичный интерфейс приложения) в конфигурации цепочки инструментов. Это можно сделать, добавив следующую строку в файл local.conf или файл конфигурации компьютера:
PACKAGE_EXTRA_ARCHS_append = " softfp"
- Изменение переменной MACHINEOVERRIDES:
Если вы хотите включить SoftFP для конкретной машины, вы можете изменить переменную MACHINEOVERRIDES. Например, если вы нацелены на Raspberry Pi 4, вы можете добавить следующую строку в файл local.conf или файл конфигурации компьютера:
MACHINEOVERRIDES_append = ":softfp"
- Изменение параметров GCC:
Вы можете изменить параметры GCC напрямую, добавив следующие строки в файл local.conf или файл конфигурации компьютера:
TARGET_CC_ARCH += "-mfloat-abi=softfp"
TARGET_LD_ARCH += "-mfloat-abi=softfp"
Поздравляем! Теперь вы узнали о опции набора инструментов SoftFP проекта Yocto. Включив SoftFP в рабочий процесс кросс-компиляции, вы сможете оптимизировать свой код для архитектур ARM, уменьшить размер двоичного кода и улучшить совместимость. Поэкспериментируйте с этими методами и посмотрите, какой из них лучше всего подойдет для вашего проекта. Приятного кодирования!