STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
akl
Друг Кота
Сообщения: 4445
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: STM32 новичку в ARM что к чему

Сообщение akl »

Можно не трогать JTAGEN-FUSE, а просто взвести в 1 JTD-бит в MCUCSR. Извините за влезание в эту тему. Просто почитываю её.
Реклама
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Re: STM32 новичку в ARM что к чему

Сообщение Ярослав555 »

отлаживал Хмеги (они тоже 8 битные) через PDI. Разница с стлинком - нельзя онлайн поставить точку остановки и нет лив-вотча. А так особой разницы не увидел. Зато в иаре у ст-линка бывают приколы что он неверно отображает значение переменной. Лечится перезалитием прошивки. может и ресет помогает, не пробовал.
Реклама
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: STM32 новичку в ARM что к чему

Сообщение СКАЗОЧНИК »

afz писал(а):Да, а начинать проект в Кейле ты научился? В смысле, накидал в Manage Run-Time Enviroment всё, что нужно, а далее просто включил в начало своей программы
Код:
#include "RTE_Components.h"
#include "stm32f10x.h"
и вперед! Так?
Нет. Я первые пару раз в Кейле начинал проект из кучи разных источников. Более или менее разобрался как вообще его запустить. И сделать так, чтобы он мне компилировать начал без ошибок и предупреждений.
Один раз через КубМХ запустил. Но что-то пока не очень понравилось.
А теперь вот дали ссылку на форум, где расписано, как запускать проект новый (создавать), чтобы к нему CMSYS и тому подобное.
Manage Run-Time Enviroment это штука пока неизвестна мне. :) Видел такую штучку, но что-то там очень много галочек. Один раз понаставил и завалился всяким хламом...

Что говорить, я Си то по новой недавно начал изучать, т.к. лет 10 его не вспоминал даже. И еще путаюсь в понятиях, указателях, смене типов, объединяниях и т.д.
Станислав
Аватара пользователя
afz
Опытный кот
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Re: STM32 новичку в ARM что к чему

Сообщение afz »

Мурик писал(а):У нее статус Active.
Да. Для F103. А для новых камешков она есть?
Мурик писал(а):требуют его включения через фьюзы. Это не очень удобно.
Это очень неудобно. Кроме того, JTAG есть только на "больших" МК с 40+ ногами, начиная с 16-й Меги. Основная и наиболее часто используемая Мега8 в пролёте. К тому же JTAG отъедает 4 ноги, которые выпадают из числа доступных. В общем, ерунда этот JTAG на АВР-ках...
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: STM32 новичку в ARM что к чему

Сообщение СКАЗОЧНИК »

Чет нету у меня в Pack Inctaller кроме выбора микроконтроллера или готовой платы ничего. А откуда тогда CMSYS выбрать?
После установки вылезет окно Pack Installer , если устанавливается с нуля необходимо установить паки CMSIS , ARM compiler и паки на линейки что будем использовать, наша STM2F4 series.
Это отсюда:
http://mcu.goodboard.ru/viewtopic.php?id=15

Добавлено after 2 minutes 45 seconds:
А.. справа вообще то что-то есть. И вроде установлено. что это я тогда их в папках не могу найти...

Добавлено after 2 minutes 48 seconds:
Все. Вроде нашел. Простите, разобрался. )) :oops: :oops: :oops:
Станислав
Реклама
Аватара пользователя
Грендайзер
Мучитель микросхем
Сообщения: 479
Зарегистрирован: Вт июн 02, 2009 22:38:40
Откуда: Город-герой Москва

Re: STM32 новичку в ARM что к чему

Сообщение Грендайзер »

Добрый день. Тут вот понадобилось запрограммировать AVR ку... Если честно опыта в контроллерах не очень... Но когда то вроде разбирался, вот и начал вспоминать... Сначала стал читать про ассемблер.. вроде что то вспомнил, ну и быстренько перешёл на си... И тут вот возник вопрос: в ассемблере мы в явном виде указываем на размер стека, а при программировании на си нет. Ну где то слышал, что мол там компилятор сам всё разрулит и поймёт. Но вот в Cube для stm32 есть настройка minimum heap size и minimum steck size. Зачем они нужны? Т.е. компилятор в случае чего сам увеличит это значение или как? Какие там числа то ставить и на что они влияют?
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: STM32 новичку в ARM что к чему

Сообщение VladislavS »

[uquote="Грендайзер",url="/forum/viewtopic.php?p=3554688#p3554688"]Тут вот понадобилось запрограммировать AVR ку...[/uquote][uquote="Грендайзер",url="/forum/viewtopic.php?p=3554688#p3554688"]Но вот в Cube для stm32 есть настройка minimum heap size и minimum steck size.[/uquote]Что-то у меня когнитивный диссонанс от этих двух утверждений.

[uquote="Грендайзер",url="/forum/viewtopic.php?p=3554688#p3554688"]Зачем они нужны?[/uquote]Чтобы точно задать размер стэка и кучи.

[uquote="Грендайзер",url="/forum/viewtopic.php?p=3554688#p3554688"]Какие там числа то ставить и на что они влияют?[/uquote]Какие нужны для твоего приложения. Это только тебе знать.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32 новичку в ARM что к чему

Сообщение Мурик »

ARV писал(а):требуют выключения. по умолчанию он всегда включен.
Я имел в виду что требует включения на время отладки.
Ярослав555 писал(а):Зато в иаре у ст-линка бывают приколы что он неверно отображает значение переменной.
Это проблема IAR, а не ST-Link.
В других средах такого нет.
Грендайзер писал(а):а при программировании на си нет.
Размер стека и кучи задается в конфигурации проекта в IDE.
СпойлерИзображение
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Re: STM32 новичку в ARM что к чему

Сообщение Ярослав555 »

[uquote="Грендайзер",url="/forum/viewtopic.php?p=3554688#p3554688"]Т.е. компилятор в случае чего сам увеличит это значение или как? Какие там числа то ставить и на что они влияют?[/uquote]
нет, не увеличит. Насколько мне известно, в памяти обьекты размещает линковщик, а не компилятор. И потом линковщик знает размер только статических объектов в области глобальной видимости. У меня (в иаре) идет сверху куча, ниже стек, а все остальное область глобальной видимости (ну я так называю, по сути тоже куча). И вот если все глобальные переменные не влезут в эту область, то получим ошибку на этапе сборки. А если переменные вывалятся из стека то можно получить все что угодно - от хардфолта до непонятного изменения каких-то других переменных. Кубовская куча у меня отвечает за динамическое выделение. Если попытаться выделить больше чем указано - хард фолт.
Аватара пользователя
Грендайзер
Мучитель микросхем
Сообщения: 479
Зарегистрирован: Вт июн 02, 2009 22:38:40
Откуда: Город-герой Москва

Re: STM32 новичку в ARM что к чему

Сообщение Грендайзер »

Если попытаться выделить больше чем указано - хард фолт
А что значит указано? В атмел студио или в эклипс я ведь вершину стека то не задавал. Там выходит компилятор сам догадывался, а у arm, выходит не умеет? И что будит если я в качестве размера стека задам значение размера оперативной памяти (ну и про кучу то же не забуду)?
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Re: STM32 новичку в ARM что к чему

Сообщение Ярослав555 »

[uquote="Грендайзер",url="/forum/viewtopic.php?p=3554843#p3554843"]
Если попытаться выделить больше чем указано - хард фолт
А что значит указано? В атмел студио или в эклипс я ведь вершину стека то не задавал. Там выходит компилятор сам догадывался, а у arm, выходит не умеет? И что будит если я в качестве размера стека задам значение размера оперативной памяти (ну и про кучу то же не забуду)?[/uquote]
Я в ИАРе в АВР версии все указываю - и стек, и кучу. Как он может догадаться о размере стека, если он не анализирует никак очередность вызовов функций? если сделать рекурсию вызовов то можно любой стек положить. Вам просто всегда хватало стека по умолчанию.
Аватара пользователя
afz
Опытный кот
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

Re: STM32 новичку в ARM что к чему

Сообщение afz »

Грендайзер писал(а):А что значит указано? В атмел студио или в эклипс я ведь вершину стека то не задавал.
Угу. Студия отдает под стек и кучу всю свободную оперативку.
Грендайзер писал(а):Там выходит компилятор сам догадывался, а у arm, выходит не умеет?
Догадываться не надо, линкер знает, сколько оперативки есть у камешка, под который идет сборка, компилятор занял сколько-то этой памяти под статическую область, остальное - стек и куча.

А вот для АРМов сделали по-другому, а именно - потребовали, чтобы программист сам указывал размеры стека и кучи. Зачем это сделали - непонятно, вероятно, так исторически сложилось. Впрочем, не везде. Какая-то из систем программирования - не помню, не то Coocox, не то EmBitz таки отдает под стек и кучу всю свободную оперативку.

А может так и правильно. Ведь у АРМ-ов могут быть разные виды оперативки, в разных областях. Даже и к STM32, которые посолидней, можно прицепить дополнительную SRAM, а к особо продвинутым STM-кам и SDRAM. Так, что, может быть, и не зря нас заставляют контролировать всю оперативку, включая стек и кучу...

Ну, и (для простых камешков, естественно, без всяких дополнительных оперативок) никто не мешает поправить скрипт линкера и уговорить его таки отдать всю имеющуюся оперативку под стек с кучей. Я в эти дела, правда, не вникал, но, теоретически, там ничего военного...
Грендайзер писал(а):И что будит если я в качестве размера стека задам значение размера оперативной памяти (ну и про кучу то же не забуду)?
Да без вопросов. Просто не забудь впоследствии исправить эти цифры, когда заведешь несколько новых статических переменных или массивов, иначе получишь ошибку.

Добавлено after 4 hours 39 minutes 55 seconds:
СКАЗОЧНИК писал(а):Manage Run-Time Enviroment это штука пока неизвестна мне. :) Видел такую штучку, но что-то там очень много галочек. Один раз понаставил и завалился всяким хламом...
Да там, собственно, ничего сложного. Запускаешь Кейл, давишь "проект", выбираешь New uVision project, в появившемся окошке Select Device for Target заходишь в STMicroelectronics (давишь на нем плюсик), находишь свой STM32F103C8, давишь ОК и кейл открывает окно Manage Run-Time Enviroment. В нем раскрываешь CMSIS, ставишь галочку на CORE, далее раскрываешь Device, ставишь галочку на Startup, раскрываешь StdPeriph Drivers и ставишь обязательные галочки Framework и RCC, а также галочки на то оборудование, с которым собираешься работать. Например, на GPIO. И все, дави ОК.

Далее, в дереве проекта раскрываешь Target1, давишь правой кнопкой на Source Group 1 и выбираешь Add New Item to Group..., далее давишь кнопу C file (c), пишешь свежепридуманное название для первого .с-файла твоего проекта, и вперед!

Откроется пустой файл. В нем пишешь

Код: Выделить всё

#include "RTE_Components.h"
#include "stm32f10x.h"
int main(void)
{
    while(1)
    {
    }
}
и пробуешь собрать проект. Должно быть чисто, если ты не забудешь Enter после последней фигурной скобки. :)

Теперь расрываешь в дереве проекта Device, находишь и дважды щелкаешь startup_stm32f10x_md.s и RTE_Device.h, внутри им смотреть необязательно, выберешь под текстом закладку Configuration Wizard и конфигурируй. На первой прдкрути, если надо, размер стека и кучи, на второй обязательно подкрути клоки - дефолтно там стоит High-speed External Clock 25 МГц, а у тебя кварц 8 МГц. Ну, может еще что подкрутить надо, по используемому оборудованию. Затем сохрани все это, пересобери еще раз, убедись, что все ОК и все, можешь творить!

Да, Target 1 и Source Group 1 можешь переименовать, как тебе нравится. Если не лень, конечно. Мне, например, лень...
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: STM32 новичку в ARM что к чему

Сообщение СКАЗОЧНИК »

afz писал(а):Должно быть чисто, если ты не забудешь Enter после последней фигурной скобки.
Ага. С этим уже разобрался. Если после последней строки не поставить еще одну, то он Ворнинг выдает. Это было не сложно. Только там для F40xxx

А вот в том форуме, который выше мне сказали почитать, там описано создание проекта с нуля, практически тоже самое только без Run-Time Enviroment, но там все эти библиотеки добавлялись вручную. И по папкам раскладывались. Я их все нашел у себя и добавил.
Все работает и собирается.
И со своим МК разобрался STM32F103C8T6, что он медиум (или как там его, ну короче, не самый первый) и воткнул startup_stm32f10x_md.s
Когда открыл этот файл то внизу окна увидел эту вкладку с настройками, но пока ничего не стал там трогать. (где-то про это было уже описано тоже, там в файле какие-то специальные теги есть, по которым IDE типа Кейла может создать такого помощника для настройки.
Частоты его правил в свойствах проекта.
Таргет и СурсГруп переименовал. Мне не было лень. :)

Про стек еще более или менее понятно, а вот что такое Куча? Где почитать доступно?

Вообще, проекты у меня собираются хорошо (начальные пустые) без ошибок и предупреждений.

З.Ы. afz, даже не знаю, как Вас благодарить. :beer: Помощь, которая идет с Вашей стороны одна из самых своевременных и актуальных на данный момент. dosikus тоже помогает. :beer:
Да, вообще, всем спасибо, что наводите на путь истинный.
Станислав
Аватара пользователя
Грендайзер
Мучитель микросхем
Сообщения: 479
Зарегистрирован: Вт июн 02, 2009 22:38:40
Откуда: Город-герой Москва

Re: STM32 новичку в ARM что к чему

Сообщение Грендайзер »

Теперь всё понял. Всем большое спасибо за помощь. afz, отдельное спасибо за обстоятельный и развёрнутый ответ :beer:
Аватара пользователя
prinv
Вымогатель припоя
Сообщения: 677
Зарегистрирован: Чт янв 20, 2011 09:07:08
Откуда: Пермь
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение prinv »

Для информации: получил blue-pill с Ali. Оказалось, что там вкрячен не STM32F103, а SC32F103.
Так вот, Keil c st-link v2 это китайское чудо прошивает нормально, а вот Atollic отказывается.
Никакая контра не уйдёт от нас
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32 новичку в ARM что к чему

Сообщение Мурик »

afz писал(а):Студия отдает под стек и кучу всю свободную оперативку.
Стек и куча не могут быть в одной области памяти. Откуда студия знает сколько из свободной памяти нужно выделить под стек, а сколько под кучу?
afz писал(а):чтобы программист сам указывал размеры стека и кучи.
И это правильно. Потому что если куча не используется, то для нее можно не выделять память. Явно заданные размеры стека и кучи, позволят определить что переменные дошли до кучи со стеком.
В скрипте линкера есть такая проверка.

Код: Выделить всё

	/* Set stack top to end of RAM, and stack limit move down by
	 * size of stack_dummy section */
	__StackTop = ORIGIN(RAM) + LENGTH(RAM);
	__StackLimit = __StackTop - SIZEOF(.stack_dummy);
	PROVIDE(__stack = __StackTop);

	/* Check if data + heap + stack exceeds RAM limit */
	ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
prinv писал(а):Оказалось, что там не STM32F103, а SC32F103.
Ссылку на продавца можно?
Аватара пользователя
prinv
Вымогатель припоя
Сообщения: 677
Зарегистрирован: Чт янв 20, 2011 09:07:08
Откуда: Пермь
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение prinv »

[uquote="Мурик",url="/forum/viewtopic.php?p=3555110#p3555110"]Ссылку на продавца можно?[/uquote]
Ссылка
Никакая контра не уйдёт от нас
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32 новичку в ARM что к чему

Сообщение Мурик »

В заголовке и описании упоминается что на плате SC32F103C8T6. Так что продавец предупредил об этом.
В МК 128 КБ флеша как в STM32?
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: STM32 новичку в ARM что к чему

Сообщение СКАЗОЧНИК »

У меня тоже блюпилл, но там стоит настоящий СТМ32. Однако для С8Т6 вроде как заявлено 64 кБ флеша, а мой СТ-Линк в Кейле показал его как 128 кБ.
Станислав
Аватара пользователя
prinv
Вымогатель припоя
Сообщения: 677
Зарегистрирован: Чт янв 20, 2011 09:07:08
Откуда: Пермь
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение prinv »

[uquote="Мурик",url="/forum/viewtopic.php?p=3555119#p3555119"]В заголовке и описании упоминается что на плате SC32F103C8T6. Так что продавец предупредил об этом.
В МК 128 КБ флеша как в STM32?[/uquote]
Это понятно, что в тексте упоминается, но сначала-то идёт STM32
Да пофиг, за 100 рублей :)

В МК 64KB - это же C8, а не CB

Добавлено after 8 minutes 54 seconds:
[uquote="СКАЗОЧНИК",url="/forum/viewtopic.php?p=3555126#p3555126"]У меня тоже блюпилл, но там стоит настоящий СТМ32. Однако для С8Т6 вроде как заявлено 64 кБ флеша, а мой СТ-Линк в Кейле показал его как 128 кБ.[/uquote]
Блин, и у меня Кейл показывает 128К, а ST-Link Utility - 64K.
Думаю, что Кейл гонит.
Никакая контра не уйдёт от нас
Ответить

Вернуться в «ARM»