Билдим под stm32duino с помощью CMake (и отгребаем от линкера)

304804ba38ab01e2fe57fc0ef9d9987e.png

Комментарии (5)

  • 4 мая 2017 в 21:12

    0

    Здравствуйте, если у Вас исследовательский склад ума, гляньте на это:
    https://www.embitz.org Установил, проверил, работает, на большее пока не хватило времени.
    Мне нравится ADS1.2, применял ее для ARM9, Cortex-A8, а теперь еще и для ARM7 в составе MRE SDK для микросмартфона Vphone S8 на базе MT2502. Кстати, Mediatek на нем сделал платы LinkIt, а программируется все это на Eclipse с добавлением GCC.
    • 4 мая 2017 в 23:10

      0

      Спасибо за наводку
      уже качаю
  • 4 мая 2017 в 23:03 (комментарий был изменён)

    0

    С ключом -fno-threadsafe-statics можно еще несколько байт срезать (если, конечно, вы используете статические переменные).
    • 4 мая 2017 в 23:09

      0

      не, ничего не срезалось :(
      Статические переменные не использую. Когда-то попробовал синглтон Мейерса — прошивка увеличилась в 2 раза. С тех пор использую только (полу)ручное размещение объектов.
  • 5 мая 2017 в 04:08

    0

    Ужасает, когда инженеры пользуются методом тыка (и даже не скрывают этого, гордо называя это «шаманством»), вместо чтения документации и осознанного выбора правильного пути. Это приводит к дикостям в стиле культа карго. Как пример из данного текста: ключи -fno-unroll-loops -ffast-math -ftree-vectorize имеют свой собственный очень важный смысл (каждый свой) и использование их в роли уменьшителей размера кода — это приблизительно как выбирать между джипом и гоночным автомобилем по их цвету. И подобное встречается в данном тексте чуть ли не в каждом абзаце, и про stm32 с st-link и про компилятор (опции) и про компоновщик (weak связывание и скрипты) и про qtcreator и ещё много про что, даже с ходу трудно перечислить все непонимания. Собственно это моя единственная претензия к данной статье, но при этом глобальная — она относится практически ко всем её разделам, потому как почти везде автор демонстрировал непонимание происходящего и делал выбор по принципу «а вот в такой комбинации оно неожиданно заработало».

    Причём сразу скажу, что я не имею ничего против незнания человеком какой-то области — это абсолютно нормальное явление и я сам не разбираюсь очень много в чём. Но работа в этой новой области должна приводить к исправлению этой ситуации, а автор умудрился с помощью метода тыка (перебирая опции из чужих готовых настроек и т.п. «шаманством», вместо чтения документаций и вникания в механизмов работы) добиться кое-как работающей системы, без малейшего понимания реально происходящего внутри. Я считаю подобный подход недопустимым для инженеров…

    По самой теме. Меня крайне удивила итоговая система, полученная автором. Потому как на мой взгляд (и это мнение основано совсем не на методе тыка, а на знание) связка stm32+st-link+gcc+CMake (или другая сравнимая современная система сборки, например я предпочитаю waf)+QtCreator+STM32CubeMX (автоматически генерирующий код на базе HAL, а не убогих ардуино-библиотечек) — это практически идеальный выбор для профессионального разработчика, работающего с микроконтроллерами. И автор при таком своём подходе умудрился прийти практически к такому же решению — в его схеме не хватает только STM32CubeMX (который в принципе легко добавляется поверх) и имеются ненужные артефакты из мира ардуинки. Действительно чудо.)

    Да, и напоследок, чтобы текст моего комментария не казался просто пустой болтовнёй, приведу для примера параметры одного из проектов для МК под рукой (естественно построенного с помощью набора инструментов, перечисленных выше): нормальный C++14 код (с лямбдами, шаблонами и т.п.), активно работающий с UART, I2C, ADC, PWM, DMA без проблем умещается в 16 КиБ, причём с опцией -O2 (которая кстати не имеет никакого отношения к «дебажной конфигурации»). Причём собирается проект где-то за 0,5 секунды и естественно имеется полноценное автодополнение на базе Clang’a.

© Habrahabr.ru