реклама на сайте
подробности

 
 
> chibios разборка с makefile-ом
chelovekk
сообщение Nov 4 2014, 09:42
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 23-12-08
Пользователь №: 42 695



Дорогие форумчане, помогите разобраться с такой вот проблемкой. При компилляции васкакивает ошибка "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
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
AHTOXA
сообщение Nov 4 2014, 09:54
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Значит, нельзя yes. Можно
hard, soft, softfp и no.
По крайней мере, этого ожидает rules.mk из chibios.
Или поменяйте логику (сделайте как в rules.mk), или не используйте этот rules.mk.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
chelovekk
сообщение Nov 4 2014, 09:59
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 23-12-08
Пользователь №: 42 695



Так если закомментировать include $(CHIBIOS)/os/ports/GCC/ARMCMx/rules.mk
то получаю ошибку
Код
make: *** Нет правила для сборки цели `all'.  Останов.


Сообщение отредактировал chelovekk - Nov 4 2014, 09:59
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 4 2014, 10:50
Сообщение #4


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Тогда исправьте свой 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

можно убрать, чтобы не дублировалась.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 23:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.01422 секунд с 7
ELECTRONIX ©2004-2016