LINUX.ORG.RU

Программатор для ARM


1

1

Наигрался с AVR, хочу изучить ARM-микроконтроллеры. Заказал минималистичную плату с STM32F103C8, теперь выбираю программатор. С одной стороны было бы не плохо, если бы он был универсальным (то есть поддерживать не только STM), с другой без проблем завестись под онтопиком.

Присмотрелся к такому: http://www.aliexpress.com/item/ARM-Emualtor-supports-ARM7-ARM-ARM9-ARM11-Cort....

В списке поддерживаемых ОС в описании товара Linux нет, однако на официальном сайте JLink есть deb-пакет, однако для загрузки требуется указать серийный номер программатора.

Ну а теперь вопрос: получится ли так сделать? Вопрос к знающим людям:

1) Насколько легко заводится JLink под Linux

2) Является ли вышеуказанный JLink официальным и имеющим серийный номер или же это клон. Если клон, то подойдёт ли серийный номер (на фотографии товара фрагмент коруса замазан, возможно, там серийный номер) для загрузки драйвера с оф. сайта

3) Если на оба вопроса ответы отрицательные, то что тогда можете посоветовать для прошивки ARM под онтопиком (не дорогое)?

4) И вообще, нет ли полностью универсальных USB-JTAG адаптеров? Вроде, что у AVR, что у ARM, что у FPGA линии JTAG одинаковые (земля, 4 линии данных, опционально питание). Различаются только команды, которые по этому интерфейсу передаются. Что мешает базу микроконтроллеров и ПЛИС вынести в софт программирования на ПК, а адаптер сделать тупой передавалкой указанных байтиков по JTAG? С одной стороны это должно удешивить программатор (программа для микроконтроллера программатора элементарная, мощность тоже большая не требуется), позволит купить его только один раз, а не для каждого семейства чипов, с другой поддержка новых чипов будет добавляться обновлением софта на ПК, а не покупкой нового программатора или обновлением его прошивки.

UPD: Прочитал, что OpenOCD поддерживает JLink и не только. А ещё, что можно в качестве адаптера использовать FT232 и шить всё подряд (ПЛИС, AVR, ARM). Но всё равно хотелось бы услышать мнение знающих людей.

★★★★★

на официальном сайте JLink есть deb-пакет, однако для загрузки требуется указать серийный номер программатора.

Не покупай эту дрянь. Сам напоролся: жополинк в линуксе работает только официальный (который кучу денег стоит), а китайские подделки просто стираются прошивальщиком (он пишет, что нашел старый жополинк, обновляет — стирает прошивку и тишина).

Либо купи нормальный ST-link (~1500р), либо рискни с клоном st-link'а (у меня клон работает для прошивки STM8, но я не пробовал STM32 прошивать по SWD). Еще надежный вариант — bootloader, он точно сработает. Тебе понадобится лишь баксовый переходник USB<->TTL.

У меня в ЖЖшке немного по поводу этих МК было.

В общем, про JTag точно забудь: это — говнище для вантузятников.

OpenOCD

Не нужно. Для прошивки есть утилита st-flash. И вообще, Jtag по-хорошему нужен лишь для отладки, а шить можно и через бутлодыря. Лично я для отладки printf-подобные сообщения использую (по USB), поэтому вообще не парюсь. И gdb изучать не собираюсь. Не нужно оно мне.

Eddy_Em ☆☆☆☆☆ ()

Про эмулятор st-link. Про Jlink, к сожалению, я в жжшке не писал. Скажу лишь, что прошивал его раз 30 разными прошивками, но ни с одной утилитка с сеггеровского сайта работать не захотела. Да и вообще, как-то мне пользоваться хрен знает чем, огороженным анально, совершенно не хочется.

А по цене почему-то жополинк значительно дороже стлинка. Хрен знает что! И с стлинком работает свободная прошивалка, она же работает с клонами стлинка.

Для загрузки через бутлодыря есть stm32flash. Говорят, работает хорошо. Не пробовал ни разу. Такой вот я лодырь.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Eddy_Em

Свободная прошивалка это st-flash?

ни с одной утилитка с сеггеровского сайта работать не захотела

А OpenOCD тоже не работает?

KivApple ★★★★★ ()
Последнее исправление: KivApple (всего исправлений: 1)
Ответ на: комментарий от Eddy_Em

А что можешь сказать насчёт прошивки через FT232?

KivApple ★★★★★ ()
Ответ на: комментарий от KivApple

Да, свободная — это st-flash.

А OpenOCD тоже не работает?

Без понятия — оно мне не нужно. Но логика подсказывает, что тоже не будет работать.

А что можешь сказать насчёт прошивки через FT232?

Это и есть прошивка при помощи bootloader'а. Переходничок USB<->TTL стоит 1 доллар. Готовый, ничего паять не надо.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от KivApple

А OpenOCD тоже не работает?

работает, не слушай ты этого укурка

registrant ★★★★★ ()
Ответ на: комментарий от registrant

Что лучше заведется? FTDI в режиме bitbang или этот JLink?

Можно ли через JLink с OpenOCD прошивать не ARM (AVR, ПЛИС через FTDI должны прошиваться)?

KivApple ★★★★★ ()

Заказал минималистичную плату с STM32F103C8, теперь выбираю программатор.

заказал бы за 10 баксов любой дискавери (с подходящим контроллером) и имел бы уже встроенный программатор (в линуксе прошивалка уже работает).

yax123 ★★★★ ()
Ответ на: комментарий от yax123

Я привык сам навешивать переферию, если что-то уже будет лишнее неотсоединяемое на плате, то это будет меня раздражать.

KivApple ★★★★★ ()
Последнее исправление: KivApple (всего исправлений: 1)
Ответ на: комментарий от KivApple

нормальный программатор для плис стоит 50$ (с развязкой по питанию и т.п.), а для арма ниже тебе правильный совет дали. сначала на дискавери лампочки позажигаешь, потом можешь ее как программатор использовать

registrant ★★★★★ ()
Ответ на: комментарий от registrant

Я уже заказал для ПЛИС (которая скоро мне придёт) USB Blaster за примерно 300 рублей. Мне не требуются супер средства отладки, развяка по питанию (хватит диода, чтобы не спалить USB при дополнительном питании целевой схемы), лишь бы оно прошивало всё подряд. И тут FTDI должна подойти, но вопрос в софте для ПК, всё нормально с этим сейчас под Linux или нет.

KivApple ★★★★★ ()

jlink с openocd работает ок. местами странности присутствуют, особенно с mips, но в остальном нормально.

по ссылке - адовая китайщина. не может нормальный jlink стоить 10 баксов. И да, почти всё из программаторов за 10 баксов - лютое говно.

можешь colinkEx потыкать, оно опенсорсное ко всему прочему, можно bus blaster(не путать с альтеровским) - тоже неплохая штука

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Dark_SavanT

И да, почти всё из программаторов за 10 баксов - лютое говно.

А если взять FTDI?

KivApple ★★★★★ ()
Ответ на: комментарий от KivApple

Я уже заказал для ПЛИС (которая скоро мне придёт) USB Blaster за примерно 300 рублей

тоже нормально, но у него скорее всего буферы по питанию не развязаны. я в свое время пытался использовать бластер как jtag-адаптер для мипса - не подошел, там одной ноги не хватает (какой-то из двух ресетов). у арма по-моему такой же jtag, как у мипса

registrant ★★★★★ ()
Ответ на: комментарий от registrant

Не надо врать! OpenOCD работает только с "настоящим" жополинком, который баксов 100 стоит, а не с китайской подделкой за 10!

Eddy_Em ☆☆☆☆☆ ()

А если у меня есть уже mt-link (клон jlink'а) и плата stm32f407, то как быстрее всего добиться того, чтобы она хотя бы диодом моргнула, а то на диске рабочие примеры только под IAR, а эклипсовский хоть и есть в примерах, но завязан на винду по уши. Попробовал просто эклипс из реп арча поставить и поверх натянуть arm debuger плагин вместе с openocd, но получаю вот эту ошибку.

Info : stm32f4x.cpu: hardware has 0 breakpoints, 4 watchpoints
Info : accepting 'gdb' connection from 3333                                                                                                                               
Info : device id = 0x00000000
Warn : Cannot identify target as a STM32 family.
Error: auto_probe failed
Error: Connect failed. Consider setting up a gdb-attach event for the target to prepare target for GDB connect, or use 'gdb_memory_map disable'.
Error: attempted 'gdb' connection rejected

Gorthauer ★★★★★ ()
Ответ на: комментарий от KivApple

А что, такое бывает? И что за софт это умеет делать? Сильно сомневаюсь, что такой в природе есть!

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от registrant

Я запросил у продавца схему платы с ARM. Там на разъём программирования выведено 6 ножек МК помимо питания (таки да, там 2 ресета). Значит USB Blaster не подойдёт (но я и не думал, что он подойдёт). А вот у FTDI ножек должно хватить. Ты не знаешь, OpenOCD нормально прошивает через JTAG из FTDI?

KivApple ★★★★★ ()
Ответ на: комментарий от Gorthauer

Возьми у меня какой-нибудь примерчик на сосфорже (есть под 103 и под 407). Там никакого эклипсовского говна не нужно: собираешь при помощи make (gcc), прошиваешь при помощи make load (st-flash).

Только я про mt-link первый раз слышу и вообще не представляю, есть ли софт, который с ним работает.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от KivApple

Я привык сам навешивать переферию

у дискавери вся переферия - два светодиода и кнопка. Не у всех конечно, но выбрать можно.

yax123 ★★★★ ()
Ответ на: комментарий от Eddy_Em

OpenOCD нужен не только и не столько для прошивки. Это ещё и gdb для отладки «на живую». В некоторых случаях очень полезно и ускоряет процесс.

Плюс не армами едиными... openocd умеет практически все популярные архитектуры, я им с jlink даже на mips чипе отлаживаться умудрялся.

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Eddy_Em

В документации по OpenOCD заявлена поддержка FTDI.

А вот даже чья-то статья, как он заставил это работать.

http://balau82.wordpress.com/2013/08/04/jtag-connection-with-openocd-and-ftdi...

Но интересно услышать мнение местных любителей ARM, а так вариант с FTDI мне кажется самым правильным (какой вообще смысл в специализированных программаторах, кроме заработка их производителей. Развязку по питанию и буфер можно и FTDI приделать при желании).

KivApple ★★★★★ ()
Ответ на: комментарий от Gorthauer

тебе ж английским по терминалу сказали, что deviceid вычитать не шмогли. смотри что не так подключил.

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от KivApple

так на ftdi несколько программаторов есть, которые openocd поддерживаются. надо смотреть на ноги, м.б. тайминги покрутить. посмотри конфиги в установленном openocd

registrant ★★★★★ ()
Ответ на: комментарий от Eddy_Em

и с тем и с другим, главное чтоб клон был хоть как-то похож на оригинал. Кактус ел.

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Eddy_Em

эдик, ты хоть читай, на что отвечаешь. ст-линки работают с openocd. а жополинк в сраку себе засунь, знать даже не хочу, что это такое

registrant ★★★★★ ()
Ответ на: комментарий от KivApple

Вроде работает, у меня где-то валяется программатор на нём, который с бордой шёл. Работает.

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Dark_SavanT

OpenOCD нужен не только и не столько для прошивки

Поэтому лично я его не использую.

В документации по OpenOCD заявлена поддержка FTDI.

А вот даже чья-то статья, как он заставил это работать.

Занятно. Может, кому-нибудь да пригодится. А вообще, надо бы уже освоить загрузку через bootloader и не париться больше! Тогда можно сразу печатки разводить с разъемчиком для подключения Rx/Tx. Правда, придется с UART1 тогда распрощаться (во всяком случае, никаких подтяжек и всякой нагрузки на него уже повесить нельзя будет, либо придется кнопочки/перемычечки городить).

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от registrant

Вопрос был про китайскую копию сеггеровского жополинка. Я и сказал, что это говно не работает.

st-link, понятное дело, будет работать. Только openocd в сраку себе засунь ☺

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Dark_SavanT

AVR, ARM, FPGA поддерживаются?

Извиняюсь за глупые вопросы. Я несколько путаюсь и хочу услышать явное подтверждение утверждению «Можно купить FTDI-переходник и с помощью его и OpenOCD прошивать и отлаживать по JTAG AVR, ARM и FPGA».

Ещё меня несколько смущает то, что практически в каждой статье про OpenOCD, которые я находил, пишут конфиг. Это нужно сделать один раз или под каждый прошиваемый чип, куря даташит? Есть ли стандартные конфиги для вышеуказанного ARM и Atmega1284 (хочу попробовать как можно работать с AVR по JTAG, а у меня как раз завалялся данный чип).

KivApple ★★★★★ ()
Ответ на: комментарий от Dark_SavanT

Кактус ел.

Как давно? Сеггер уже заменил на сайте старые линуксовые прошивалки. Теперь ни хрена не работает! Нужно либо где-то найти очень старую, либо мастдайку использовать. Второе — понятное дело — сразу отметается, первое у меня не получилось сделать (таки варез).

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Eddy_Em

bootloader не у всех вменяем, а jtag - таки стандарт(если не вспоминать про msp430)

Поэтому лично я его не использую.

тогда и не выпячивай своё ненужно. openocd - это та штука, которая в сложных ситуациях может сильно выручить. Я сейчас таки не про микроконтроллеры, а про отладку всякой злобной херни типа инициализации ram контроллера или ещё хуже - клоков процессора, когда у тебя терминалом ещё даже и не пахнет, а узнать что за хурма происходит надо уже сейчас.

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Dark_SavanT

Понятно. Ну думаю для начала мне скорости хватит, прошивки будут не очень большие, а отладку я особо не юзаю, хотя интересно попробовать. Если не устроит скорость уже подумаю о чём-то более специфическом, а пока хочу самый универсальный вариант, который прошьёт всё, что угодно. Меня только волнует, чтобы оно вообще заработало. Причём желательно без километровых конфигов под каждый чип.

KivApple ★★★★★ ()
Последнее исправление: KivApple (всего исправлений: 2)
Ответ на: комментарий от Dark_SavanT

jtag - таки стандарт

Свой у каждого производителя, поэтому-то и не существует универсального jtag-программатора.

про отладку всякой злобной херни

Понятно. Я это методом научного тыка делаю. Если не получается — читаю даташит.

А вот по поводу программаторов — да, жаль, что все так уныло. Главное — не заикаться про это на "радиолюбительских" форумах. Там ~100% контингента — вантузятники. Не понимают они, зачем вообще человеку линукс. А уж почему он категорически не хочет мастдайку использовать, до них вообще не доходит.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Dark_SavanT

jlink — это ж сеггеровская поделка. Несеггеровских нет.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от KivApple

за avr и fpga не скажу, их я не тыкал через openocd. arm, mips умеет. про msp430 - забудь, там не jtag и «своя атмосфера».

Про openocd - конфиг таки пилить надо каждый раз под чип/борду. Либо использовать готовое.

В конфиге задаётся какой программатор ты используешь, какой чип/семейство чипов ожидаешь увидеть, настройки сброса и так далее. можно запилить стартовую инициализацию. в моём случае это обычно инициализация dram.

стандартные конфиги в комплекте идут. там и про ftdi есть и про j-link и про ещё десяток программаторов.

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Eddy_Em

Ну openocd его успешно видит, а IAR с ним успешно работает. Я бы и сам с радостью слез с эклипса, но для начала бы мне неплохо было бы хоть одну живую конфигурацию поднять на плате, а уже потом от нее плясать, а в Эклпипсе уже есть типа работающие шаблоны.

Gorthauer ★★★★★ ()
Ответ на: комментарий от Eddy_Em

Свой у каждого производителя, поэтому-то и не существует универсального jtag-программатора.

Это стандарт на краевое сканирование и 90% производителей физический уровень выдерживают точно. То, что там внутри команды для процессоров разные - дык неудивительно.

Я тебе страшную тайну открою - 99% jtag-адаптеров про особенности процессора к которому цепляются ничего не знают, а знает софт на хостовой машине. jtag-адаптер - это суть очень быстрый сдвиговый регистр, а всё остальное типа команд зашивки флеша - это в хостовом софте, который команду и данные преобразует в пакет понятный адаптеру, который его в свою очередь преобразует в последовательность сигналов на шине.

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Gorthauer

IAR

Батько, мы же на ЛОРе! Какой, нафиг, iar?

А эклипс — жуткое говнище. Зачем оно тебе?

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Dark_SavanT

А почему нет свободного софта для заливки в jtag-программатор? Интересно вот, как же это так все огородили, что железо до сих пор — либо жутко дорогое, либо слизанное (когда просто бинарь прошивки тырят и прошивают на копии).

По-моему, если бы были исходники, то были бы у нас уже универсальные jtag-программаторы и универсальный софт, позволяющий посредством одной-единственной прошивалки и одного-единственного программатора прошивать любые МК с JTAG.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Eddy_Em

Методом научного тыка прокатывает в наколеночных поделках. Когда у тебя DDR2 и дохераслойная плата, становится веселее. Плюс в нормальных чипах конфигурация клоков вещь нетривиальная, благо с этим до тебя обычно кто-то разобрался. А в идеале ещё и u-boot портировал

А если не разобрался - то начинается увлекательный квест - портируй u-boot на новое железо. Я на rt5350 так портировал. изматерился но завёл ядро, консоль, spi и засел на ethernet, там задница полная ибо встроеный пятипортовый свитч.

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Dark_SavanT

Когда у тебя DDR2 и дохераслойная плата,

ты, очевидно, не хобби занимаешься, а работой. И про линукс даже слыхом не слыхивал, а знаешь лишь про мастдайку. И то хреново!

тебя носом натыкать?

Прикольно. Под линуксом-то есть прошивалки? И есть ли истории успеха с самостоятельным изготовлением таких штуковин?

// а вообще, еще раз повторяю: проще и дешевле осилить уже бутлодыря. И никаких левых железяк не нужно, кроме малюсенького переходничка. Jtag нужен ведь лишь тем, кто хочет отладкой заниматься...

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Eddy_Em

По-моему, если бы были исходники, то были бы у нас уже универсальные jtag-программаторы и универсальный софт, позволяющий посредством одной-единственной прошивалки и одного-единственного программатора прошивать любые МК с JTAG.

Тебе из моего опыта - jlink + openocd умеет работать с arm v4, v7, cortex-*, mips. По факту скорее всего даже с большим количеством

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от Dark_SavanT

jlink + openocd умеет работать

Т.е. разрабы openocd реверсировали прошивалку от сеггера? Фигасе. А почему тогда нет свободных прошивалок? Или ты говоришь про официальный jlink, а не китайские подделки?

Eddy_Em ☆☆☆☆☆ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.