LINUX.ORG.RU

stm32 фейлится при использовании double и uint64_t

 


0

2

stm32f103c8t6

Попытка вычислений с использованием как double так и uint64_t приводит к, видимо, исключению, т.к. выполнение программы останавливается.

Использую arm-none-eabi-gcc 6.3.1. Указываю mcpu=cortex-m3 и флаг soft-float

В какую сторону имеет смысл копать?

★★★★★

Последнее исправление: cvs-255 (всего исправлений: 2)

Я бы посмотрел в отладчике что за исключение и на каких командах оно вылетает.

DuMOHsmol
()

В какую сторону имеет смысл копать?

В сторону забора.

anonymous
()
Ответ на: комментарий от anonymous

Заниматься всякими выравниваниями должен компилятор, не? Как я тебе из C выравнивания переменных делать буду?

cvs-255 ★★★★★
() автор топика
Ответ на: комментарий от anonymous

А кто тебе сказал, что я обращался?

В моем коде там вообще указатели не использовались. Там просто перемножение и деление нескольких чисел. В int32_t работает, в int64_t и double - нет

cvs-255 ★★★★★
() автор топика
Последнее исправление: cvs-255 (всего исправлений: 1)
Ответ на: комментарий от cvs-255

Раз, два

Наша пiсня гарна, нова, ми зломали double знову!

Возьми рач и потыкай 8-й GCC, авось опять поломали починили.

timdorohin ★★★★
()
Последнее исправление: timdorohin (всего исправлений: 1)

Разверни gcc с армовского сайта. У меня были косяки при работе с STM32F0: как только встречается деление, камень уходил в hardfault. Попробовал тулчейн с сайта - все заработало. Видимо, криво в генте собрали тулчейн, что софтовое деление не работало.

А вообще, как-то неправильно использовать на камне без аппаратной поддержки double эти самые double...

anonymous
()

Похоже проблема в тех функциях, которые вызываются для вычислений в int64_t и double

cvs-255 ★★★★★
() автор топика
Ответ на: комментарий от anonymous

ну как раз int64 и хотел использовать для fixed point вычислений. Но деление int64 тоже глючит

cvs-255 ★★★★★
() автор топика

Все, я просто невнимательный, забыл линковщику указать что з микроконтроллер

По крайней мере, hard fault прекратился

cvs-255 ★★★★★
() автор топика
Последнее исправление: cvs-255 (всего исправлений: 1)
Ответ на: комментарий от anonymous

Не обращаться к int по указателю+нечётное_число, например.

а ничего, что сам int чётный размер имеет (на ARM-е, должен иметь, можно делать такое предположение)

Harald ★★★★★
()
Ответ на: комментарий от anonymous

И он всегда таким будет, что бы ты к нему не прибавлял в С. Прибавляемое умножается на размер типа.

Harald ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.