Не натыкайтесь на грабли при работе с флоатами в STM32!

Feb 11, 2022 22:16

Промучился два часа, пытаясь понять, почему у меня при попытке использования хардфлоатов на STM32F303 МК уходит в хардфолт. Оказалось, что проблема в том, что я в стартапе инициализирую переменные и тут же вызываю main(). А уже оттуда вызываю все настройки (и, собственно, разрешение работы FPU). А gcc тем временем, еще до вызова разрешения работы ( Read more... )

stm32

Leave a comment

Comments 4

ext_122116 February 11 2022, 19:31:16 UTC
Раньше надо включать. С -O3 последние версии gcc у тебя вот этот цикл так заоптимизируют, что fpu будет нужен:

for ( dst = &_sbss; dst < &_ebss; dst++ ) { *dst = 0; }

https://github.com/a-podshivalov/lectures2021/raw/master/hard-fault-example.pdf

Reply

eddy_em February 11 2022, 20:10:21 UTC
Жесть, однако! Спасибо, воткнул это в самое начало reset_handler.
Я-то уж сколько (минимум 20, наверное) лет на сях пишу, а gdb и valgrind пользоваться так и не научился.

Reply


redddis February 12 2022, 20:06:51 UTC
вот же грабли! сам додумался, или нагуглил?

Reply

eddy_em February 12 2022, 20:57:47 UTC
Долго гуглил и нагуглил. GDB - не путь пролетария ☺

Reply


Leave a comment

Up