Комментарии 26
Впрочем одни пикчи (я роутер а не...) и текст заслуживают + :)
Спасибо.
На PearlMini мы программируем FPGA из Linux через JTAG. Причём повесили линии на SPI интерфейс. В результате сделали небольшой вспомогательный модуль, который SPI интерфейс представит в виде /dev/spi0. Потом, пока идёт фаза изучения цепочки, когда режим работы диалоговый, мы используем пины в режиме GPIO/BitBang для эмуляции JTAG. Когда дело доходит до отсылки bitstream, переключаемся в режим SPI и гоним данные на максимальной скорости. Битсрим около 1.6Мб, скорость загрузки около 900мс.
Изначально был чистый BitBang, там около минуты или даже больше грузилось.
Видел еще интересный проект kuku.eu.org/?projects/stm8spi/stm8spi
Там задействовали SPI интерфейс Raspberry как отладочный SWIM интерфейс для микроконтроллеров STM8. Правда реализовали только загрузку прошивки.
А что использовали в качестве SPI? Что-то типа FTDI микросхему?
Нет, это встроенная периферия. Apollo Lake — полноценный x86_64 процессор, но SoC :-) У нас там Intel Atom E39xx или что-то вроде стоит. Сам FPGA реализует PCIe устройство, оно разведено на PCB. Раньше прошивку грузили из SPI флешки, подключенной к FPGA, здесь решили отказаться в целях экономии и повышения надёжности — всё равно система нами контролируется, так почему бы не грузить код из неё же. После погрузки битстрима: PCI Rescan и вуаля! Устройство на шине, грузим драйвер :)
Вообще, линейка Epiphan Pearl — по сути x86_64 компьютеры, при желании и Ubuntu поставить можно и даже периферия работать начнёт как надо (HDMI выход есть, USB 3.0 есть, так что и клавиатуру, и мышку, и монитор подключить можно).
Правда реализовали только загрузку прошивки.
В нашем случае только цель загрузки прошивки и стояла. К сожалению SPI не достаточно, что бы работать в диалоговом режиме и полностью реализовать JTAG. Только если постоянно переключаться между режимами GPIO ←→ SPI. GPIO для диалогового режима, SPI для посылки больших объёмов данных на устройство. Собственно у нас так и сделано, есть два вызова: tx_block_slow()
и tx_block_fast()
. Во втором переключаемся в SPI, по завершению передачи — обратно в GPIO. Логика выбора проста: если размер больше 4*8 байт — переключаемся в быстрый режим. Число взято с потолка.
Кстати, GPIO режим в результате реализовали через /dev/mem
. Получилось не очень переносимо, но решили оставить унификацию до востребования. В таком режиме работы с GPIO BitBang добились времени загрузки прошивки в 10 сек.
А какая у вас IDE на скрине?
новая жизнь старых медленных (802.11b/g) роутеров %)
Было бы интересно почитать о настройке IDE и прочих программных средств для удаленной отладки по JTAG.
К сожалению для qmake не смог найти примера, а самомоу составлять не было мотивации.
«Есть такая штуковина АБВ, у неё тут ГДЕЖ и можно запросто использовать ИКЛМ! Сейчас я туда засуну ЙЦУК и получится ЁПРСТ!». И ты сидишь такой, думаешь: ведь почти все слова знакомые, а смысла — ноль!
И наоборот: сидит специалист, смотрит на текст и хмыкает: «ичо? подумаешь, поковырял левым мизинцем в правой ноздре!».
Господа, выражать своё тщеславие на публичных серверах — полезный грех, но делать это надо ПОНЯТНЫМ ЯЗЫКОМ. И в каждом слове постоянно думать о ЦА! (вот сам лезь и переводи, что это означает!)
Для профи ваша статья — пшик, они это делают уже лет 10. Начинающий не может понять, чего вы добились (и добились ли вообще — может тупо прочли инструкцию к рутеру). Вы как-то плавно объясняйте, ЛУЧШЕ СО СХЕМАМИ, что вы достигли и какая от этого польза читающим.
Я сейчас немного практикую программировать вот эти все малины-ардуины, но в упор не понимаю, как рутер может быть «JTAG». Он может быть ADSL, Wi-Fi. А «пробросить USB через сеть» — это как и зачем? Что, можно флэшку воткнуть в сетевой разъём? Или наоборот — сетевой кабель воткнуть в USB? А что делать тем, у кого нет Sagem? Всё, волшебство не работает? Или работает, но вы забыли сказать главное? Вот-вот, бросил статью в вечность, а вы там разбирайтесь!
Статья откровенно технарская в самом отрицательном смысле — узкоспециализированная свалка терминов для одной задачи, да ещё на каком-то странноватом оборудовании. Я бы на вашем месте переписал её для людей — чувствую, что там есть полезное, но где оно — я не вижу.
>немного практикую программировать вот эти все малины-ардуины
Возможно поэтому вы и не понимаете
Я не могу назвать себе опытным программистом, и подобное я бы не сделал, точнее даже не догадался бы сделать. Но тем не менее, статья лично для меня понятна.
Если вам не знакомы с аббревиатурами SWD и JTAG, то как не расписывай статью то полезнее она не станет
Какие схемы вам нужны? как подключить 4 провода? Если вы были бы уже знакомы с вышеупомянутыми аббревиатурами, то вопросов не возникало.
нет Sagem — выдам… (вы точно до конца дочитали?)
Ну и борцам за «рутер», хотелось бы видеть официальный документ, в котором подтверждалось правописание слова. Это скорее всего должен быть словарь, официально одобренный гос структурой. Без этого будет просто пустой холивар.
Привет, увы у меня для вас плохая новость
Извините, вы бы как-то научились разговаривать на правильном языке? Либо «Здравствуйте» и далее обращение на «вы», либо дворовое «привет» и на «ты». Хотите — перейдём на «ты», т.к. видно, что культурой тут не обременены.
Если вам не знакомы с аббревиатурами SWD и JTAG, то как не расписывай статью то полезнее она не станет
Да-да. Сказал человек, который в статье вообще JTAG не использовал! К чему эти понты, милейший? Вы серьёзно думаете, что вас на всю Россию десять человек, знающих JTAG? :)) Да вообще не в нём суть, если так подумать — весь смысл в словах «удалённая отладка», но который так и остался где-то в дебрях вашего сознания — не умеете вы доносить смысл, только жонглирование терминами.
Какие схемы вам нужны? как подключить 4 провода?
Вот видите, к чему приводит узкое мировоззрение — для вас «схема» — это провода. А есть схема метро, представляете? :) А есть схема, где можно было бы понятно обрисовать — где у вас рутер, где микросхема и почему всё это называется «удалённым», да ещё с бросанием USB.
Про рутер не надо умничать, молодой человек! Вы сами знаете, что обделались по полной — не бывает JTAG рутеров. JTAG — тестовый интерфейс, никакого отношения к маршрутизации пакетов он отношения не имеет. Поэтому в заголовке слову JTAG вообще не место, если уж быть точным.
Это грустно… очень грустно, что вместо принятия критики вы огрызаетесь, будто действительно написали недооценённый шедевр! Всё уже сделано до вас, понимаете? Нет только грамотных статей, где одни НОРМАЛЬНЫЕ люди объясняли другим НОРМАЛЬНЫМ как достичь чего-то. Наверное ещё лет 10 и вы поймёте, почему грубость ничего не решает — на общем ресурсе надо созидать, а не понтоваться.
Иначе если следовать вашей логике, то на том же хабре — все самовлюбленные скоты и надо его закрыть. Там ведь уровень статей и их изложение на порядок выше, чем на гиктаймсе. И все это не из желания «понтоваться», просто достаточно вспомнить историю — хабр для профессиональных разработчиков, гик часть их оттянул на себя, отсюда закономерность — самые интересные статьи пишут как раз не любители ардуины, а вполне себе инженеры чтобы поделиться с такими же инженерами.
Автор написал практически готовый howto, зачем разжевывать каждый термин? Для этого есть другие статьи.
Статья классная, пишите ещё!
Если вы так отлаживаете, то вам и про программирование МК наверняка есть что рассказать :-)
Разгоняем JTAG роутер