Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: chibios разборка с makefile-ом
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
chelovekk
Дорогие форумчане, помогите разобраться с такой вот проблемкой. При компилляции васкакивает ошибка "arm-none-eabi-gcc: error: unrecognized argument in option '-mfloat-abi=yes' ". Сам параметр -mfloat-abi может быть равен только значениям hard, soft, softfp. В строке
Код
ifeq ($(USE_FPU),yes)
  USE_OPT += -mfloat-abi=softfp -mfpu=fpv4-sp-d16 -fsingle-precision-constant
Как раз этот параметр принимает значение softfp. Вот часть makefile:
Код
# Enables the use of FPU on Cortex-M4.
# Enable this if you really want to use the STM FWLib.
ifeq ($(USE_FPU),)
  USE_FPU = yes
endif
....
......
ifeq ($(USE_FPU),yes)
  USE_OPT += -mfloat-abi=softfp -mfpu=fpv4-sp-d16 -fsingle-precision-constant
  DDEFS += -DCORTEX_USE_FPU=TRUE
else
  DDEFS += -DCORTEX_USE_FPU=FALSE
endif

ifeq ($(USE_FWLIB),yes)
  include $(CHIBIOS)/ext/stm32lib/stm32lib.mk
  CSRC += $(STM32SRC)
  INCDIR += $(STM32INC)
  USE_OPT += -DUSE_STDPERIPH_DRIVER
endif

include $(CHIBIOS)/os/ports/GCC/ARMCMx/rules.mk

Здесь вроде как все в порядке USE_FPU = yes и значит USE_OPT += -mfloat-abi=softfp.
А вот в файле $(CHIBIOS)/os/ports/GCC/ARMCMx/rules.mk есть строка
Код
ifneq ($(USE_FPU),no)
  OPT += -mfloat-abi=$(USE_FPU) -mfpu=fpv4-sp-d16 -fsingle-precision-constant

которая видимо и приравнивает -mfloat-abi к значению yes.
Но файл rules.mk идет вместе с исходниками chibios
AHTOXA
Значит, нельзя yes. Можно
hard, soft, softfp и no.
По крайней мере, этого ожидает rules.mk из chibios.
Или поменяйте логику (сделайте как в rules.mk), или не используйте этот rules.mk.
chelovekk
Так если закомментировать include $(CHIBIOS)/os/ports/GCC/ARMCMx/rules.mk
то получаю ошибку
Код
make: *** Нет правила для сборки цели `all'.  Останов.
AHTOXA
Тогда исправьте свой makefile:
Код
ifeq ($(USE_FPU),)
  USE_FPU = softfp
endif
....
ifneq ($(USE_FPU),no)
  USE_OPT += -mfloat-abi=$(USE_FPU) -mfpu=fpv4-sp-d16 -fsingle-precision-constant
  DDEFS += -DCORTEX_USE_FPU=TRUE
else
  DDEFS += -DCORTEX_USE_FPU=FALSE
endif

Хотя, если ваши USE_OPT потом прибавляются к OPT из чибиосьного makefile, то строчку
Код
  USE_OPT += -mfloat-abi=$(USE_FPU) -mfpu=fpv4-sp-d16 -fsingle-precision-constant

можно убрать, чтобы не дублировалась.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.