Skip to main content

Конференции

Просмотр конференции fido7.pushkin.rss.easyelectronics.ru:

Предыдущее Следующее

Дата: 03 Oct 2018, 21:00:12
От: RSS robot @ 2:5020/2140.2140
Кому: All
Тема: Cоздание минимального проекта под STM32 в Atollic True Studio


http://feedproxy.google.com/~r/easyelectronics/~3/vPJnIXGsZv4/cozdanie-minimalnogo-proekta-pod-stm32-v-atollic-true-studio.html

К моему глубокому сожалению и удивлению несмотря на популярность и развесистость либ, но CoIDE похоже приказала долго жить. Сайт сдох, разработчики молчат. Могли бы и в опенсорц податься, все
предпосылки к этому были, но… В общем, кто этих китайцев поймет. Дремучие они. А жаль, из бесплатных это была пожалуй наиболее юзерфрендли среда для создания проектов под STM32 где можно было
родить минимальный проект в три клика, причем реально минимальный. Только CMSIS и все. Никаких тебе монструозных кубов и прочей дичи. Выдающих портянки кода от одного только косого взгляда. Что
делать? Куда бежать? STM, говорят, прикупил Atollic True Studio, вышвырнул оттуда поддержку всех сторонних камней и дал нахаляву. Решил я попробовать это чудо. В конце концов чем оно отличаеться то
от CoIDE? Тот же Eclipse… Оказалось отличается, т.к. о поддержке STM там разве что заголовок в шапке говорит, да темплейты под самые популярные борды. И больше ничего, все придется делать
ручками. Чтож, онанизм так онанизм. Наши руки не для скуки! ▌Кач, кач, кач — качаем софт Качай эту студию с официального сайта и ставь. Также надо скачать файлы куба, если еще не скачал. CMSIS
свежий найти можно только там. У меня в примере будет контроллер STM32F103C8T6, поэтому нам нужен куб для F1 (гуглить stm32cubef1). ▌Создаем проект При запуске студия предложит указать рабочую
директорию, можно оставить по дефолту, а лучше перекинуть туда, где у тебя исходники разные лежат. У меня это D:\Coding\ARM\ Потом ,с чистого листа создаем проект: Выбираем С Project: Да, там можно
указать сразу CMSIS проект, но … это не работает. Т.е. никакой CMSIS не подключается, вообще ничего не происходит. Так что создаем пустой проект. А тулчейн выбираем Atollic ARM Tools: Дальше,
на выбор, предлагается два конфига. Дебаг и Релиз. Собственно это разные настройки среды для отладки и финальной сборки. Можно оставить два и переключаться между ними. Скажем в дебаге оставить
оптимизацию для дебага, а в релизе сделать Os — по размеру. Но не суть важно, я обычно оставляю только релиз. Так привык. Путаницы меньше. Снимаем лишние галочки и финиш. В нашей папке проекта
возникнет два сиротливых файла самого проекта. Пора накидать структуру и накидать первого мяса: Добавили папочки. В одном будет CMSIS файлы, в другом наш код, и еще под стартовые файлы папочку.
Многие делают внутри еще деление на inc и src, чтобы разделить инклюдники и сорцы. Я нет, мне так удобней. Теперь открываем наш архив в CubeF1 и лезем там в папку Drivers\CMSIS\Include и начинем
тащить в свою папку проекта CMSIS нужные файлы. Какие нужны? cmsis_gcc.h — Мы используем GCC компилятор. core_cm3.h — У нас ядро CortexM3 core_cmFunc.h — За каким то хреном в
последние три файла вынесли то, что раньше было в cm3, так что их тоже подключаем. core_cmInstr.h core_cmSimd.h Следом идем в CMSIS\Device\ST\STM32F1xx\Include\ и тащим оттуда файлы хидеров к
конкретно нашему камню. Какие нужны? stm32f1xx.h system_stm32f1xx.h stm32f103xb.h Но тут внимательней с stm32f103xb.h он зависит от размера камня. Как узнать какой из файлов нужен? На выбор для 103
серии там аж четыре варианта *x6, *xb, *xe, *xg. Какой выбрать для STM32F103C8? И почему именно stm32f103xb.h? Ответ будет в stm32f1xx.h. Если его открыть и найти дефайны контроллеров, то Сразу
станет понятно к какой подгруппе отнести наш камень. Его и выбираем. Осталось докинуть туда исходники и стартап. Идем в папку Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\ И копируем себе в
CMSIS папку system_stm32f1xx.c А себе в папочку Startup тащи файл startup_stm32f103xb.s (или другой, если у нас другой контроллер *xe или *x6, например) из папки
Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\gcc\ Там же можно поживиться и скриптом для линкера. Но его лучше взять из того, что сама студия предложит. О нем ниже. Добавили файлы, заходи в
свойства проекта в студии в раздел С/C++ Build -> Settings. Тут же он ругнется, что мол мы Target не указали,а для какого проца рожать то? И предложить выбрать камень: Бери какой у тебя там. У меня
это STM32F103C8 Он до кучи предложит и стартап скрипт подцепить. По умолчанию кинет в корень, но лучше направить его в папку Startup, порядку больше. Вот, кстати, тут видно, что стартап код для
конфигурации Release, могла бы и Debug быть до кучи. Следующим шагом надо добавить пути в проект. Идем в свойства проекта и в разделе C/C++ General ->Paths and Symbols, на вкладке Includes добавляем
пути: Если жать кнопочку Workplace то он возьмет их из текущей директории, только указать: Будет как то так: Кстати, видите там правее вкладка #Symbols? Туда можно вписать тактовую частоту внешнего
кварца, если он есть. Я добавил туда значение HSE_VALUE 12000000U — у меня кварц на 12мгц. И оно забьет дефолтное значение 8000000, которое прописано в CMSIS. Еще можно сделать генерацию hex
файла. Ну на всякий, вдруг пригодится. Это в разделе C/C++ Build -> Settings -> Tool Settings -> Other -> Output format Теперь надо раскомментировать наш контроллер в файле stm32f1xx.h. Помните, где
мы там справлялись какой файл брать? Вот открывай его и правь, не забыв сохранить: Или, лучше наверное, не править тут, а добавить в #Symbols еще и STM32F103xB на пару к HSE_VALUE Все, можно создать
в папке Code пару файлов main.c и main.h да родить примитивный скелетик проги который можно попробовать скомпилировать: #include "main.h" #include "stm32f1xx.h" int main(void) { volatile uint8_t i;
SystemInit(); // Фукнция CMSIS которая установит тактовую частоту // По умолчанию считает, что внешний кварц 8МГЦ, но можно добавить // в stm32f1xx.h #define HSE_VALUE 12000000U и переназначить
кварц. while(1) { i++; } return 0; } Программа должна скомпилироваться, а в папке Release (или Debug, смотря какую конфигурацию оставить) появится *.elf *.hex *.list *.map файлы. ▌Отладка Отладку
надо тоже настроить. По умолчанию там какая то лажа в настройках и мне пришлось долго гуглить, что за лажа и где копать. Итак, подключаем STLink к нашему контроллеру по SWD. Студия ставит тут же
дрова стлинка, так что завестись должно все из коробки. Разве что рекомендую обновить прошивку самого стлинка, через STLink Utility. Жми кнопку Debug, зеленую букашку такую в верхней панели
инструментов, и получишь диалог настройки отладчика: Во вкладке Main можно ничего не трогать. Главное проверить, чтобы в C/C++ Appliction был путь к нашему *.elf файлу. А в Project стоял наш проект.
Ну и выбрана конфигурация реальная. Во вкладке Debugger надо будет выбрать ST-Link и на этом все тут: Теперь надо настроить оптимизаци под дебаг. Если это не сделать, то при попытке выполнить код под
отладчиком получишь сообщение: No source available for «main() … И адрес последнего байта прошивки. Дебаг включится, но исходника не будет и шагать можно будет в лучшем случае по
ассемблерному тексту. Чтобы заработала отладка надо включить оптимизацию под нее. Идем в настройки проекта, в раздел С/С++ Build — Settings. Во вкладке Tool Settings ищем в дереве C Compiler
раздел Debugging и ставим там Debug Level в Maximum (-g3). Также можно основную оптимизацию переключить на оптимизацию под отладку. При этом при отладке не будут теряться строки программы, но
помните, что это уже будет другая программа и некоторые глюки могут на ней не проявляться, так что рекомендую оставить -Os. Искать эту опцию в вкладке Tool Settings ищем в дереве C Compiler раздел
Optimization параметр Optimizator level И отладка пошла, появился маркер текущей строки… Подключение SPL, HAL или LL уже тривиально. Накидываем их в папки, можно отдельную создать. Да добавляем
в проект. И пишем… Олдово, ручками и по хардкору :) В общем, вот такое вот ручное дрочево, часто весьма неочевидное и по куче менюшек надо лазать. И в каком месте оно специализированное под
STM32? Специализированное под это как в Keil или в CoIDE раз раз и проект готов, со всеми необходимыми файлами. А тут же практически настройка того же эклипса и гцц.

--- rss2mail.pl
Origin: RSS robot (2:5020/2140.2140)

Предыдущее Следующее

К списку сообщений
К списку конференций