Решена проблема деления на STM32F042
Jan. 20th, 2017 12:02 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
В попытке выяснить, кто же виноват, и что с этим делать, я собрал в кучу заголовочные файлы от ST с инициализацией от opencm3 и сделал "безбиблиотечную" среду.
Для проверки деления набросал «мыргалку», которая либо равномерно мигает диодом с периодом 4 секунды (если надета перемычка между землей и PA12), либо морзянит "SOS".
arm-none-eabi-gcc, собираемый кроссдевом в генте на этом примере обломался: как только я снимал перемычку, микроконтроллер уходил в глубокие раздумья.
Гугол подсказал мне, что эта проблема возникала далеко не у меня одного. И решения ее стандартным gcc просто нет! Но есть пропатченные тулчейны. Отсюда я скачал тулчейн, распаковал директорию в /opt и попробовал.
Теперь в директории arm-none-eabi/lib/thumb появились раздельные библиотеки для разных архитектур ARM. Вот эта строчка Makefile
Жаль, что в генте так плохо с разработкой под микроконтроллеры!
Для проверки деления набросал «мыргалку», которая либо равномерно мигает диодом с периодом 4 секунды (если надета перемычка между землей и PA12), либо морзянит "SOS".
arm-none-eabi-gcc, собираемый кроссдевом в генте на этом примере обломался: как только я снимал перемычку, микроконтроллер уходил в глубокие раздумья.
Гугол подсказал мне, что эта проблема возникала далеко не у меня одного. И решения ее стандартным gcc просто нет! Но есть пропатченные тулчейны. Отсюда я скачал тулчейн, распаковал директорию в /opt и попробовал.
Теперь в директории arm-none-eabi/lib/thumb появились раздельные библиотеки для разных архитектур ARM. Вот эта строчка Makefile
LDLIBS += $(shell $(CC) $(CFLAGS) -print-libgcc-file-name)позволяет слинковаться с правильной библиотекой (v6-m/libgcc.a). В итоге деление работает без проблем!
Жаль, что в генте так плохо с разработкой под микроконтроллеры!
no subject
Date: 2017-01-20 01:32 pm (UTC)Кстати, "-D__thumb2__=1" используется один-единственный раз (выбор типа инструкций в CMSIS), "-D__CORTEX_M0" — скорее всего для твоей собственной обвязки, "-mtune=cortex-m0" никакой роли не играет (абсолютно одинаковый выхлоп получается что с ним, что без него).
no subject
Date: 2017-01-20 01:42 pm (UTC)