Кратко
1. Программирование flash можно произвести через:
- JTAG
- SWD
- любой интерфейс, который поддерживается встроенным а ПЗУ STM32 бутлоадером. У разных семейств STM32 бутлоадеры и интерфейсы отличаются, UART есть у всех.
2. Отладчики программаторы:
- ST-Link - детище ST. Интерфейс USB. Поддерживает JTAG и SWD - подробности на сайте ST. Стоит оригинал около $50 Поддерживает только чипы ST - STM32 и STM8. Есть клоны, а также "стыренный" бутлоадер, что позволяет просто-запросто собрать свой, ничем не отличающийся от оригинала

-
Segger J-Link - целое семейство отладчиков. Также поддерживают JTAG и SWD в отличии от ST-Link умеют практически все известные ARM. Интерфейс USB, но есть и эзернет (J-Link Pro). Цена оригинала зависит от лицензии, и мягко говоря - не гуманна (до тысячи $). Имеются вполне работоспособные клоны и генераторы лицензий

-
ARM ULink - самый крутой отладчик от ARM. Умеет все. Цена не гуманна, как и у Segger.
- проект
Open OCD - программный отладчик поддерживающий целую кучу "железа". Название говорит само за себя - халява. Но, по сравнению с фирменными отладчиками - тормоз, хотя это не есть большая проблема. Подробнее - на сайте.
Мой совет - клон J-Link или ST-Link (если не планируете осваивать МК не от ST).
Лучший софт, особенно отладчик - Keil. Так считает много людей, и я с ними согласен.
Кокос - не пользовал, но народ много его пользует и не жалуется. ИАР (мое мнение) полное говно - обрыгался от интерфейса, тормоз и глюкало, постоянно вис в отладке, отправлен фтопку.
Цитата:
Если джтаг одтнаков то почему каждый программатор работает только со своей комплектной софтиной - avr-jtag только с мк avr и avr-studio, st-link только c st-link и софтом кот. его понимает
Это из-за жлобства. На самом деле JTAG - это интерфейс, а ядра все разные, соответственно наборы регистров другие. По идее JTAG адаптер может быть один, а вот софт уже под каждую платформу свой. Только хочется продавать софт и свои адаптеры. Жлобство оно и есть. Особенно продвинулись Atmel - 1000$ за их сраный AVR-One это просто нет слов... И это г-но только под AVR.
Что касается JTAG vs SWD. ARM Cortex имеет JTAG больше как дань стандартизации. SWD более быстрый и продвинутый, его и следует пользовать, к тому же требует всего 2 линии (не считая земли, конечно), а JTAG - 4, что для малоногих контроллеров может стать проблемой.
Будут еще вопросы - вэлкам, отвечу. У меня есть оригинальный ST-Link, его самодельный урезанный клон, клон J-Link Pro. Последний особенно удобен в удаленной отладке через сеть - часто пользуюсь.