Вот так STM32 в Аrduino. пользую для самого начала знакомства с STM3/
И сколько раз за это время использовали DMA? Или таймеры в режиме ШИМ захвата? Или классику - аппаратный запуск АЦП событием таймера и сбор данных оцифровки с помощью DMA?
Андрей Осипов писал(а):
Чтобы был UART и COM порт для отладки
В STM32 отладка осуществляется через JTAG/SWD. Вывод текста в USART это не отладка.
Вот так STM32 в Аrduino. пользую для самого начала знакомства с STM3/
И сколько раз за это время использовали DMA? Или таймеры в режиме ШИМ захвата? Или классику - аппаратный запуск АЦП событием таймера и сбор данных оцифровки с помощью DMA?
Андрей Осипов писал(а):
Чтобы был UART и COM порт для отладки
В STM32 отладка осуществляется через JTAG/SWD. Вывод текста в USART это не отладка.
Мурик, мне пока сложно, хотя бы начать, познакомиться.. Это я потом обращусь, как SEGGEROM Кейлом emIDE Cube пользоваться.. Но там этот GPIO ... ужос сколько читать! SEGGR пока завел - семь потов сошло.. все усы в узелки позавязывались.. Ужос..
Мне пока только Ардуино и NUCKLEO F103RB или Ардуино и ST-Link+USB UART на СН340G...
Жуть-то какая! У меня тут студент пытался недавно на STM32F103C4T6 при помощи калокуба развернуть простенькую прошивочку (USB-CDC, работа с АЦП ну и немного всякого разного). Оно его послало куда подальше с аргументом, мол, флеша не хватает! Я ему показал, что очень даже флеша хватает, если всяким дерьмищем не пользоваться (ну и голову включать: зачем использовать printf, флоаты и аллокаторы на МК, который не имеет ни MMU, ни аппаратных флоатов? а что до флоатов, то в его случае там fixed point вообще за глаза хватало).
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
зачем использовать printf, флоаты и аллокаторы на МК, который не имеет ни MMU, ни аппаратных флоатов? а что до флоатов, то в его случае там fixed point вообще за глаза хватало).
fixed-point тоже не всегда спасает. Совсем недавно делал USB-(CDC + MSD) с АЦП и всем остальным. MSD использовался в том числе для калибровки: платка прикидывается флешкой, на которой есть файлик. Пользователь туда вписывает пары "реальное значение" - "показания АЦП", а контроллер потом аппроксимирует прямой линией. Вот аппроксимацию мне без float'ов сделать не удалось. Впрочем, они используются в единственном месте, где скорость не критична. А объем - его там еще немеряно: вся прошивка менее 20 кБ занимает с учетом readme файла, который тоже виден на "флешке".
Eddy_Em писал(а):
STM32F103C4T6 при помощи калокуба развернуть простенькую прошивочку (USB-CDC, работа с АЦП ну и немного всякого разного). Оно его послало куда подальше с аргументом, мол, флеша не хватает!
У C4 конечно всего 16 кБ памяти, но ведь студенту только CDC надо было. Это ж один из простейших протоколов, сам по себе оно где-то 4 кБ займет, а то и меньше. Под что ушло остальное?
COKPOWEHEU, Да я без понятия, что он там "наворотил", но калокуб его послал лесом, мол, не хватит ни флеша, ни оперативы. А что до флоатов - да, иной раз бывают остро необходимы. Но в случае абдуринщиков… Эти ж их пихают вообще везде!
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Китайский ST-Link прекрасно работает. Не нужно ничего настраивать. Подключили ST-Link и целевым МК и запускаете в IDE отладку или прошивку.
Да, спасибо, ST-Link V2 работает... Но я пока только готовым проектом в Кейле пользуюсь..
С GPIO еще можно было бы разобраться, ладно.. Но я пытался открыть новый проект для STN32 в Кейле - ничего не получается.. Как набивать файлы в эти папки проекта в Кейл и где их создавать в Кейле для STM32??
В Ардуино все на порядок проще было, раз и готово..... А к IAR ARM я даже не подходил.. Запустил только Кейл для ARM, CoIDE STM32 и 32 emIDE с примерами.....
И как этот проект в Кейл для STM 32создавать?... От этих трудностей уже лапы ломит и хвост отваливается...
Наконец нормально подключил китайский J-Link SEGGER к STM32....
Только берите буферированный.. Чтобы кроме одной большой микросхемы стояла пара поменьше, перед кабелем на 20 пинов..
Вот такой
Бывает без буферных микросзхем..
Так вот, к CoIDE STM32 и emIDE даже напрямую SEGGER J-Link подключался только через сервер, как удаленная микросхема.. Никаких других вариантов я не нашел.. Натерпелся я с этими серверами...
Потом поставил Keil и все сразу заработало... Выбрал в Flash Propertis -> Dounload и Debagger вариант J-LINK/J-TRACE Cortex ... И все встало на мсвои места..
Только я сначала подключался к плате на STM32F103C8T6 с разъемом 20 pin JTAG/SWD Который подходит к 20 пиновому кабелю SEGGERа
Он подошел к вот такой плате на STM32F103C8T6 с разъемом 20 pin
Там с обратной стороны все названия выводов подробно расписаны!
Все запело и заиграло.. Питания подается прямо с SEGGER не нужно внешнего питания..
Если что сбору 4 штырька, на которые GND - TXD - RTХ - 5 вольт. Очень удобно.
Если в наборе с SEGGERом купить переходник
То маленький 4 пина белый разьем можно подключать прямо к плате BLUE PILL
Все работает в Keil.
До этого использовал ST-Link V2
Вот такой
и вот такой, подешевле...
в Кейле они также выбираются и подключаются как ST-Link.. Даже в Arduino эти ST-Link V2 - работают с STM32...
Но SEGGER в Кейл позволяет отлаживаться как по SWD так и по JTAG...
Применительно к STM32 какое преимущество дал JTAG по сравнению с SWD? Больше проводов? Разве это преимущество?
Больше проводов - это круче, можно с экрана любые команды давать.. И проходит быстрее.
Я читал, что JTAG использовался для проверки самих микросхем... И что он как-то сильно круче. Но, насколько понимаю, он уже устаревает... И насколько круче, мне точно неизвестно. Я не настольуо продвинут..
Я тут вообще, как-то разочаровавшись и устав от SEGGERа когда использовал его без Кейла с его localhost-ами даже прикупил китайский ULINK 2, он только по JTAG отлаживает и загружает.. Хотел поотлаживать.. Да уж..
Но все оказалось не очень хорошо.. 1 - он реально медленее грузит по JTAG чем китайский SEGGER... Оочень медленно отлаживает... И иногда не слишком стабильно...
SEGGER отлаживает и грузит одинаково быстро как по SWD так и по JTAG.. Насколько я понимаю, про JTAG мне можно не думать... И даже про отладку по SWD....
Да, SWD бывает двух типов.. с 4 проводами и с 6 проводами. В ST-Link V2 используется SWD -4 4 провода..
В SEGGER можно использовать и 6 и 4.. Вон, на фото два белых - это как раз SWD-4 (ST-Link V2) и SWD-6...
с обратной стороны видны названия контактов, там SWD-6 вверху и SWD-4 внизу..
Насколько я понимаю, SWD-6 прочти также крут как и JTAG...
Хотя в JTAG - 9 - девять проводов... Наверно таки серьезнее...
Но для меня пока для отладки программ вообще достаточно UARTа, а для аппаратной части - светодиодов и осциллографа..
Мне эти регистры и ассемблер 32й пока мало что дают.. Если бы была символьная отладка для программ... Но где ее искать?
Пока только только printff() и вывод на терминал PUTTY через USB-COM порт(на СН340) через РА9 (это выход UARTа на STM32F103C8T6 ) ..
Если хочешь поиграться с отладкой по SWD и JTAG то купи китайскийJ-Link SEGGER и вот эту
20 пиновую плату
Можно SEGGER и к BLUE PILL подключить, но я часто провода путаю.. Сожгу нафиг.. И перепроверять контакты по много раз...
Если хочется поотлаживать, то лучше купить китайскийJ-Link SEGGER
Вот схемы подключения к SEGGER по JTAG и SWD-6. (но можно и по SWD-4 )
Хотя мне очень нравится работать с NUCLEO-F103RB STM32F103RBT6 и Arduino STM32
У нее там все есть через один USB Даже окно UART1 открывается в Arduinо, вывод UART через Sprintf1 (). Можно и вводить через клаву , но я не пробовал. Осваивать и знакомиться с STM32 в Arduino очень удобно. Не мучают жуткие GPIO...
Какие команды вы передавали по JTAG которые нельзя передать по SWD?
Андрей Осипов писал(а):
И проходит быстрее.
Что в JTAG, что в SWD последовательный метод передачи данных. Большинство проводов это общий провод.
Андрей Осипов писал(а):
Я читал, что JTAG использовался для проверки самих микросхем...И что он как-то сильно круче.
Ну и где ссылки на статьи? А то знаете написать можно все что угодно.Спойлер
Цитата:
- Правда, что академик Акопян выиграл "Волгу" в лотерею? - Правда. Только не Акопян, а Айвазян, и не "Волгу", а "Запорожец", и не в лотерею, а в преферанс, и не выиграл, а проиграл.
Андрей Осипов писал(а):
Да, SWD бывает двух типов..с 4 проводами и с 6 проводами. В ST-Link V2 используется SWD -4 4 провода
Данные по SWD передаются по двум проводам - SWDIO и SWCLK. Остальные провода это питание, сброс и др. Необходимый минимум это 3 провода - SWDIO SWCLK и общий провод.
Андрей Осипов писал(а):
Насколько я понимаю, SWD-6 прочти также крут как и JTAG
По названиям контактов разве не ясно для чего они? Сразу должно быть понятно в чем отличие 4-ех и 6-ти выводного разъема. Если не понятно, то вы точно не заметите разницы между JTAG и SWD.
Андрей Осипов писал(а):
Если бы была символьная отладка для программ...Но где ее искать?
В STM32 нормальная отладка. Спойлер
Андрей Осипов писал(а):
Если хочешь поиграться с отладкой по SWD и JTAG то купи китайскийJ-Link SEGGER и вот эту
Смысл если точно также можно поиграться с китайским st-link и платой с STM32F103C6T6 BKB STM32F103C8T6? Выйдет дешевле, а результат тот же. В плане STM32 st-link ничем не хуже j-link.
Насколько я понял, это про SEGGER J-Link, а не про ST Link V2 (свисток). А какой SEGGER? SEGGER J-Link V9 пойдет? И какой Кейл? у меня Кейл 4.7 на ХР... На STM32F103C8T6 пойдет RTT? Или это только на старших моделях STM32?
Да, RTT - это мой любимый виртуальный UART с printf() от SEGGER J-Link.. SEGGER_RTT_printf(0, "Текст = %s \ r \ n", текст); Только гораздо быстрее и удобнее.. Но мне сложновато пока будет. Я пока пользуюсь стандартным UARTом и Putty.
Андрей Осипов, да не надо так из-за убогого RTT расстраиваться! Ну какая там частота SWD? 4МГц? RTT фактически означает, что поллится состояние некоего флага. Как только он ==1, считывается буфер (можно флагом сделать длину данных в буфере, тогда еще лучше будет). Считали буфер - обнулили флаг, поллим снова. Если же просто взять UART, настроить на 3МГц и при помощи DMA слать буфер по достижению "\n", будет примерно то же самое. Но без необходимости полезные ноги тратить на уродский SWD!
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Сейчас этот форум просматривают: Google [Bot] и гости: 23
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения