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

 
 
 
Reply to this topicStart new topic
> STM32, gcc, тип long long, ld ругается при сборке проекта
Krom
сообщение Jun 27 2009, 10:37
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Есть необходимость использование типа long long (64 бита). Возникает проблема при попытке деления (сложение, вычитание, умножение выполняются нормально), а при попытке использовать деление на этапе сборки проекта выдается следующее сообщение:

collect2: ld terminated with signal 11 [Segmentation fault]
/usr/local/arm/lib/gcc/arm-elf/4.3.1/../../../../arm-elf/bin/ld: /usr/local/arm/lib/gcc/arm-elf/4.3.1/libgcc.a(_divdi3.o)(__divdi3): warning: interworking not enabled.
first occurrence: main.o: thumb call to arm
/usr/local/arm/lib/gcc/arm-elf/4.3.1/../../../../arm-elf/bin/ld: BFD (GNU Binutils) 2.18.0.20080103 assertion fail /usr/local/arm/src/binutils-2.18.1/bfd/elf32-arm.c:6538
main.o: In function `main':
/home/user/Project/STM32/P150/main.c:171: dangerous relocation: make: *** [main.elf] Ошибка 1


Пробовал собирать с опцией -mthumb-interwork -результат тот же. И при использовании функции lldiv тоже самое. Не могу въехать, почему умножать умножает, а делить не хочет?
Все собирал с опцией --enable-interwork, в чем может быть проблема, есть идеи?
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 27 2009, 13:16
Сообщение #2


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Krom @ Jun 27 2009, 14:37) *
Все собирал с опцией --enable-interwork, в чем может быть проблема, есть идеи?

А зачем интерворк кортексу? У него нет Арм и Тамб режимов, только Тамб2.
Go to the top of the page
 
+Quote Post
amaora
сообщение Jun 27 2009, 15:44
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 421
Регистрация: 2-01-08
Пользователь №: 33 778



Цитата
collect2: ld terminated with signal 11 [Segmentation fault]

Явно баг же. Хотя может toolchain плохо собран.
Go to the top of the page
 
+Quote Post
KRS
сообщение Jun 27 2009, 19:01
Сообщение #4


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(Krom @ Jun 27 2009, 14:37) *
Не могу въехать, почему умножать умножает, а делить не хочет?
Все собирал с опцией --enable-interwork, в чем может быть проблема, есть идеи?

потому что умножение транслируется в команды, а для деления нужна библиотечная функция. У вас похоже не та библиотека используется.
Как тут уже писали --enable-interwork на cortex-m3 не используется.
А вы каким тулчаином пользуетесь?
посмотрите в сторону codesourcery у них сборка gcc свободная и cortex поддерживает!
Go to the top of the page
 
+Quote Post
Krom
сообщение Jun 28 2009, 21:03
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Тулчейн самосборный. Может, где и накосячил чего при его сборке, однако же все кроме этого работает... ПОпробую собрать че-ниь посвежее
Цитата(KRS @ Jun 27 2009, 23:01) *
потому что умножение транслируется в команды, а для деления нужна библиотечная функция.

07.gif
Go to the top of the page
 
+Quote Post
Altemir
сообщение Jun 30 2009, 20:53
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 249
Регистрация: 2-05-06
Из: Россия, Поволжье
Пользователь №: 16 686



Цитата(KRS @ Jun 27 2009, 23:01) *
потому что умножение транслируется в команды, а для деления нужна библиотечная функция. У вас похоже не та библиотека используется.

Эммм... Посмотрел даташит от ARM:
ARM DDI 0337G
Cortex-M3 Technical Reference Manual
26 June 2008 G Non-Confidential First Release for r2p0

На странице 2 написано:
Цитата
Hardware divide instructions, SDIV and UDIV (Thumb 32-bit instructions).


Но, применительно к long-long, думаю, всё-равно библиотека потребуется.
Может, я чего не то смотрю? Поправьте, пожалуйста.

То же самое касается и Тамб режима, о котором упоминал sonycman:
Цитата
A Thumb instruction set subset, defined in the ARMv7-M Architecture Reference Manual.


Или есть какая-то другая реализация ядра, используемая у STM?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 25th June 2025 - 20:32
Рейтинг@Mail.ru


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