Krom 0 27 июня, 2009 Опубликовано 27 июня, 2009 · Жалоба Есть необходимость использование типа 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, в чем может быть проблема, есть идеи? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 27 июня, 2009 Опубликовано 27 июня, 2009 · Жалоба Все собирал с опцией --enable-interwork, в чем может быть проблема, есть идеи? А зачем интерворк кортексу? У него нет Арм и Тамб режимов, только Тамб2. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amaora 24 27 июня, 2009 Опубликовано 27 июня, 2009 · Жалоба collect2: ld terminated with signal 11 [segmentation fault] Явно баг же. Хотя может toolchain плохо собран. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 1 27 июня, 2009 Опубликовано 27 июня, 2009 · Жалоба Не могу въехать, почему умножать умножает, а делить не хочет? Все собирал с опцией --enable-interwork, в чем может быть проблема, есть идеи? потому что умножение транслируется в команды, а для деления нужна библиотечная функция. У вас похоже не та библиотека используется. Как тут уже писали --enable-interwork на cortex-m3 не используется. А вы каким тулчаином пользуетесь? посмотрите в сторону codesourcery у них сборка gcc свободная и cortex поддерживает! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krom 0 28 июня, 2009 Опубликовано 28 июня, 2009 · Жалоба Тулчейн самосборный. Может, где и накосячил чего при его сборке, однако же все кроме этого работает... ПОпробую собрать че-ниь посвежее потому что умножение транслируется в команды, а для деления нужна библиотечная функция. :07: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AltemirX 0 30 июня, 2009 Опубликовано 30 июня, 2009 · Жалоба потому что умножение транслируется в команды, а для деления нужна библиотечная функция. У вас похоже не та библиотека используется. Эммм... Посмотрел даташит от 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? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться