Jtag программа для прошивки
AVRdude Bitbang
Поскольку я привык к связке avrdude+sinaprog то менять ее на что либо совершенно не хотелось. Поэтому в первую очередь я решил проверить, а можно ли юзать FT2232 в том же режиме, что и FT232RL. И пнул дудку в адрес включенной FTDI. Она мне отозвалась, что мол устройство ft0 найдено и работает, но вот контроллер не подключен. Ожидаемо. Осталось только выяснить соответствие выводов у FT2232 и написать конфиг для avrdude.
Все оказалось проще чем я думал. С точки зрения avrdude микруха FT2232 представляет собой всего лишь две FT232R которые она видит как ft0 и ft1 (ну либо другие ft в зависимости от числа FTDI микросхем воткнутых в систему). А дальше все оказалось совсем элементарно — выводы шины ADBUS принадлежали интерфейсу ft0, а BDBUS устройству ft1. Логично, чо.
Теперь берем конфиг для avrdude и руководствуюясь теми же соображениями, что и для FT232RL присваиваем выводы. Прям по порядку, как нам удобней, предварительно создав еще одну секцию и обозвав наш программатор 2ftbb:
Почему в таком порядке? Да просто удобно — у ATMega16 выводы программирования идут по корпус подряд RST, SCK, MISO, MOSI и сделав их в том же порядке на выводах FTDI мы можем простым плоским шлейфом соединить один к одному и прошить микросхему (подав естественно питание и землю)
Кстати, о питании. Я в изначальной разводке платы забыл вывести на колодку питание с USB. Т.е. программатор то запитан, а вот таргет схема должна иметь свой источник питания. Впрочем, это легко обходится. Достаточно сделать хитрый тройной джампер, соединяющий вместе все три пина переключателя VCCIO_PWR_SEL в этом случае на пине CPU_PWR появляется напряжение с USB. Я этот джампер сделал из огрызка PBS линейки, закоротив у него три вывода спайкой. Если будете повторять схему адаптера, то подумайте над этим моментом, может джампер вынесете какой.
Набрасываем лапшу на контроллер и шьем. Шьется на ура. Собственно так и задумывалось :)
Также существует масса альтернатив программаторов AVR на базе FT2232. Например, широко известный AVReal работает с точно такой же схемой. Разве что распиновка немного иная, но это не большая проблема. Кроссплатформенный, очень быстрый и простой. Консольный, но есть оболочка от сторонних авторов.
AVR Happy Jtag2 — Порция щастья!
Ковырясь по инету, чтобы найти что бы еще повесить на FT2232 я нашел и немного счастья в лице интересного проекта Happy Jtag от Словенских разработчиков.
Суть простая — FTDI обеспечивает связь между отлаживаемым контроллером и программой, а программа косит под JTAG ICE II и подбрасывает студии виртуальный порт, который та наивно принимает за JTAG ICE II. Опаньки!
Также сим девайсом можно шить ряд популярныйх контроллеров, как простым программатором.
Схема включения простейшая:
- ADBUS0 = TCK (надо еще подтянуть его через 1.5к к питанию)
- ADBUS1 = TDI
- ADBUS2 = TDO
- ADBUS3 = TMS
- ADBUS4 = RESET (надо еще подтянуть его через 1.5к к питанию)
Для прошивки по SPI включение следующее:
- ADBUS0 = SCK (надо еще подтянуть его через 1.5к к питанию)
- ADBUS1 = MOSI
- ADBUS2 = MISO
- ACBUS0 = RST
Схемка как и описано. Слева это не FT2232, а сразу весь модуль. Чуть попозжа я его выложу его Eagle библиотеку, как заготовку для удобного изготовления переходников.
Я под это дело сваял небольшую платку. Запихав в нее разьемы всех используемых мною видов. Плата двусторонка, т.к. пихалась в общий проект который делали на заводе, поэтому я не заморачивался. Даже переходная дырка есть :)
И вот такая платка:
Сажается это все сверху на нашу конструкцию:
Дальше, если нам надо прошиться, то цепляем обычный шлейфик с IDC10 разьемом и соединяем таргет с нашим адаптером.
И запускаем программку, запускать надо от имени администратора (если в Win7 или Vista) иначе ничего нормально работать не будет.
В качестве интерфейса выбираем SPI и можно шить фузы (они, кстати, не инверсные. Как по даташиту. Внимательней!) и заливать HEXы в память.
Но прошивка это не интересно. Отладка куда веселей. Так что соединяем JTAG лапшу в виде пяти проводков (TCK, TDI, TMS, TDO, RST) и питания, если нужно:
Стандартный JTAG разьем я делать не стал. Он слишком громоздкий и в любительских поделках его ставить обычно жалко места.
Запускаем Happy JTAG2 с правами администратора, выбираем в качестве интерфейса JTAG, а в качестве порта COM4 (без запуска под админом он не сможет создать виртуальный COM4 порт). Естественно надо предварительно обеспечить, чтобы в системе не было COM4 и тем более он не был занят :)))) Думаю это понятно. Иначе будет ошибка и нифига не заработает.
У меня на COM1 железный порт мамы, COM2 и 3 создала FT2232, а 4й сделал Happy JTAG.
На панели лампочек должна загорется зеленая лампочка напротив FT2232 т.е. у нас определилась микруха, а в поле AVR Signature должен определиться контроллер. Появятся фуз биты и возможность прошить контроллер через JTAG. Естественно интерфейс JTAG должен быть включен фуз битом JTAGEN.
Теперь запускаем студию (рекомендую 4.19 или около того) и выбираем там в свойствах нашего проекта контроллер и в качестве адаптера JTAG ICE II
На панели лампочек зажгется индикатор подцепленной студии:
А в самой студии станет доступен в качестве адаптера JTAG ICE II
Теперь можно запускать процесс отладки и шагать по программе. Работает вполне стабильно. У меня пока серьезных зависаний не наблюдалось.
При этом на панели горит лампочка, сигнализирующая о том, что процесс идет:
Работает не быстро. Не сказать, что сильно быстрей чем первый ICE, есть некоторые проблемы с ассемблерными прогами (!) — на них часто выводит FFFF вместо команд. С Сишными работает сносно. Возможно это из-за особенностей линковки. Зато можно ставить большее количество брейкпоинтов (я ставил около десятка, работает). Еще бывает теряет связь и отваливается, впрочем, первый ICE тоже этим грешил постоянно. Но как халявный вариант — почему бы и нет?
Да, любители AVR Studio 5 обламываются. Т.к. в этой дивной программе атмеловцы оторвали нахрен все старые девайсы, прекратив поддержку ICE I и всех COM программаторов. Покупайте JTAG ICE III :)
Что в свете агрессивного наступления STM8 и STM32 с копеечными (а часто и вовсе бесплатными) средствами полноценной отладки выглядит как маразм граничащий с самоубийством.
Ну и напоследок, как обычно файлики
Спасибо. Вы потрясающие! Всего за месяц мы собрали нужную сумму в 500000 на хоккейную коробку для детского дома Аистенок. Из которых 125000+ было от вас, читателей EasyElectronics. Были даже переводы на 25000+ и просто поток платежей на 251 рубль. Это невероятно круто. Сейчас идет заключение договора и подготовка к строительству!
А я встрял на три года, как минимум, ежемесячной пахоты над статьями :)))))))))))) Спасибо вам за такой мощный пинок.
83 thoughts on “FT2232D и AVR. Прошивка и отладка по JTAG”
А разрешите полюбопытствовать, где вы видели бесплатные средства разработки для STM32? Лично я смог надыбать только LPCXpresso.
Чуть ли не пол года массово рассылались всем желающим STM Discovery с ST Link и STM32F100 на борту. Потом вроде бы слали Discovery с STM8 сейчас шлют халявную Discovery с процом на Кортекс М4 правда пока только по США и Европе.
Про M4 слышал, каждую неделю проверяю наличие доступных сэмплов :)
А вот STM Discovery — проворонил, о чём сейчас неимоверно жалею :(
а не жалею что купил стм32 дискавери у халявщика за 350р. -)
Также нахаляву слали комплекты от TI MSP430 с ланчпадом и ихним жтагом собственным. Да и сам он стоит не более 10 баксов с бесплатной доставкой.
По моему все уже кто только мог выбросили на рынок халявные средства отладки или за смешные деньги (до 20 баксов)
на счёт 5 студии вы правы, это маразм. Особенно по сравнение с кокосом для стм32, я бадею от скорости заливки прошивки.
Как просто, F7 и Flash Download нажать, красота.
У STM32 все сильно облегчается тем, что там большая часть отладочного интерфейса встроена в ядро. Это фишка кортексов.
А после программирования дудкой FT2232 переводит свои выводы в третье состояние, или лучше поставить буфер, как для FT232?
С буфером лучше. Точно не изучал ситуацию, но дается мне оно там точно также как в FT232
Я еще понимаю PLS, а PBS-то ты как с лицевой стороны пропаял?
Это фабричная плата. А вообще они также спокойно поднимаются :)
Хм, авторы HappyJTAG утверждают, что прикрутили ко второй версии поддержку gdb. По идее этот адаптер можно прикрутить к eclipe-avr…
[adace-ad >JTAG — это аббревиатура, которая расшифровывается как «Joint Test Action Group», в переводе это значит специализированный интерфейс для отладки и программирования. Данный микропроцессорный интерфейс служит, как понятно из названия, для отладки и мониторинга работы процессора.
Что касается спутников ресиверов, то JTAG дает возможность перепрошить микросхему flash-памяти, если нет возможность прошить ресивер стандартным способом, через кабель к компьютеру. Сегодня мы разберем прошивку через JTAG-интерфейс на примере спутникового ресивера Globo X90 для его восстановления. Ранее мы уже научились прошивать его через кабель (см. предыдущую часть)
Зачем нужен JTAG
Самый большой плюс в JTAG — это возможность внутрисхемного программирования микросхем памяти ресиверов. С его помощью восстанавливать потерянное или испорченное содержимое флэш-памяти, при этом не выпаивая микросхем и без необходимости использования программаторов. То есть JTAG нужен именно тогда, когда неисправен загрузчик , что делает невозможным заливку ПО штатным способом.
Минусом является тот факт, что интерфейс JTAG, в большинстве своём, на всех ресиверах разный — единый стандарт существует, но каждый производитель его модифицирует по-своему. Globo X90 работает на процессоре ALI 3329С .
Прошивка через JTAG куда сложней обычной процедуры, поэтому к ней прибегают только в самом крайнем случае, когда ресивер совсем не подаёт признаков жизни: не загружается, не горит индикация, прошили другой прошивкой, либо после прошивки у вас только черный экран
JTAG прошивка по шагам
[adace-ad >Для того, что бы запрограммировать флэш ресивера с помощью JTAG кроме собственно «пациента», т.е. ресивера, который нам необходимо «оживить», нам нужно иметь следующее:
1. Собрать интерфейс (переходник) от порта ресивера к порту ПК
Собрать адаптер для JTAG не так сложно, как кажется на первый взгляд. Для Globo X90, да и вообще для всех ресиверов, предпочтительным вариантом сборки является вариант на микросхеме 74HC244N (её еще называют даташит). Распиновка JTAG:
Так выглядит собранная схема:
Со стороны ресивера это будет специальный разъём, он иногда даже так и подписан — JTAG
Второй «конец», который уходит в сторону ПК — это обычный LPT-кабель, который можно купить в любом компьютерном магазине. О том, как можно собрать всё это хозяйство:
2 . Найти LPT-порт на ПК
Параллельный порт на компьютере сейчас можно увидеть только в музее, поэтому можно докупить специальный LPT-PCI контроллер , который позволяет подключить ваш JTAG к системному блоку ПК, у которого нет LPT порта (а это будет в 99,9% случаев).
Для реанимации ресиверов Globo и всех их клонов, а так же для Евросатов/Евроскаев потребуется специальный программатор. Что касается программного обеспечения, то на данных процессорах используется программа EJTAG_TT_1.0.6.17 (Я.Диск)
4. Установить драйвер, если у вас Windows XP
Если вы используете Windows XP, то необходимо установить драйвер giveio.sys (Я.Диск). Скопируйте файл драйвера GIVEIO.sys в папку C:\Windows\system32\drivers\ если, конечно, система у Вас установлена на диск С: и Вы не меняли пути установки Windows. Запустите файл install.reg.
5. Скачиваем прошивку
[adace-ad >Нужна сама прошивка, т.е. то, что мы будем заливать во Flash-память. Здесь есть два варианта
- Только загрузчик (лоадер) — файл с расширением .bin. это та часть содержимого флэш ресивера, которая обеспечивает загрузку в него ПО(софта) через порт. Если мы имеем случай, когда нам для заливки нужен только загрузчик(лоадер) ресивера, то поступаем одним из двух способов – или скачиваем готовый файл с загрузчиком, или делаем его самостоятельно. Для этого в HEX-редакторе отрезаем от файла ПО первые 65536 байт и сохраняем как отдельный файл *.bin. Это и есть загрузчик.
- Полный дамп . Дамп для JTAG, в случае, с ресиверами Globo — это обычный дамп, который используется для прошивки. Единственное, необходимо будет сменить расширение файла с *.abs на *.bin
6. Переводим ресивер в отладочный режим
Для прошивки также потребуется перевод ресивера в режим отладки, он же Debug Mode. Способы его перевода зависят от конкретной модели приставки, конкретно для Globo X90 cсоединить (замкнуть) перемычкой предназначенные для этого контактные площадки на плате, где стоит обозначение JP1 . Так же бывает, что надписи JP1 на ресивере нет, тогда нужно выпаять резистор R32
Обратите внимание на точки подключения. Они должны совпадать с тем, как вы собрали переходник. В некоторых Globo-ресиверах бывает обратная последовательность — не перепутайте. На некоторых ресиверах можно сделать обычную перемычку для перевода в отладочный режим
Можно использовать перемычку с IDE-винчестеров
Так это будет выглядеть:
7. Настраиваем EJTAG и прошиваем
Настройки в нашей JTAG tool выставляем так же как на скриншоте:
Если EJTAG не увидит ресивер, попробуйте поменять тип флеш памяти в последнем столбике. Вообще, здесь можно пробовать менять любые параметры, чтобы ресивер определился
В некоторых мануалах пишут, что предварительно нужно стирать флеш — делать этого не стоит, ни поблочно, ни полностью, перед записью программа сама сотрёт столько памяти, сколько ей надо записать, она умеет это делать. Далее жмём «коннект» . В окне программы должен побежать текст лога.
Если после нажатия кнопки «коннект», у вас выходит ошибка «флэш ID нету в *.ini –файле», то попробуйте поменять настройки в программе, как и советовали выше, нужно попробовать все вариации галочек и точек в настройках. Если и это не приведет к успеху, то тут стоит насторожиться — проверить питание процессора, напряжение с БП — есть вероятность того, что флеш-память уже «умерла», тогда никакой JTAG уже не поможет. Следующим шагом жмём «Записать» и в окне проводника выбираем нужный файл с дампом или загрузчиком (лоадером)
[adace-ad >
При необходимости, как мы и писали выше, EJTAG сотрёт самостоятельно нужный блок памяти и начнет запись.
Здесь есть небольшой нюанс — достаточно залить около 50-70% прошивки через JTAG (желательно, конечно, полностью), но если у вас оборвалась прошивка на этом этапе, то можно попробовать прошивать стандартно (через порт), т.к. дальше уже идут списки каналов, спутники и так далее, т.е. то, что вы зальете и обычный прошивкой.
8. Убираем перемычку, отключаем Debug Mode
Не забудьте в конце прошивки корректно завершить программу EJAG, отключить от сети ресивер и аккуратно отключить JTAG-интерфейс. Так же снять перемычку для входа в отладочный режим. Далее подключаем ресивер уже через ком-порт и заливаем в него софт обычным способом.
Ручной поиск транспондера у спутника
Если вы заливаете «голую» прошивку, то есть необходимость вбить вручную нужные вам транспондеры. У некоторых ресиверов есть функция ручного ввода транспондеров. Для этого
Восстановление аппаратов с помощью J-tag
В этой теме:
- Софт.
- Технологии.
- Делимся опытом.
- Фото с точками J-tag.
- Флуд и оффтоп будет подлежать удалению.
Огромная база знаний по данному топику!
Ну что, начнем пожалуй помолясь.
В этой теме начинается процесс по востановлению китайских планшетом через JTAG. Собралась (я надеюсь) группа единомышленников, с различными китайскими планшетными компьютерами, но с одними симптомами. Будем восстанавливать "кирпичи". То есть устройства заряжаются (один цвет диода), включаются (другой цвет диода), выключаются. На экране - чернота, легкий шум в наушниках при включении и выключении устройства.
Для начала нужно соблюсти формальности:
на начальном этапе вся информация взята чужая, из разных источников. Многое взято из параллельной ветки навигация, JTAG. Особое спасибо хочется сказать пользователям этого форума за выложенную бесценную информацию. Вот их имена:lestrem, SergDzh, holod, igolas, dmedia. Кто проникнется особо, может кинуть им плюсик в репутацию.
Общение планируется в формате обсуждения действий, идей, находок. Каждый экспериментирует со своим "зверьком", и делится полезной информацией с другими. Сообща должен появиться другой способ поднятия "окирпиченного" устройства, нежели выпайка микросхемы, прошивка её и запайка на место.
P.S. Просьба к модератору: переименуйте пожалуйста тему. Пусть она носит название просто "JTAG", без слова "-точки" - так будет универсальнее.
Что сделал сам - напишу позже. Пока что для анализа, выкладываю в общую кучу все те сведения, что удалось нарыть.
1. восстановление HTC при помощи JTAG.
2. тоже может пригодится.
3. Очень рекомендую почитать в этом архиве Recover_Mio.rar ( 3.19 МБ )
PDF файл. Вот еще парочка файлов в довесок сюда же. SJF2440_v3.zip ( 399.46 КБ )
__________________________________.doc ( 35 КБ )
Название у вордовского файлика побилось, но думаю от этого он читаться не перестанет.
4. Восстановление с помощью программы OpenOCD _______________________WP9100.doc ( 233.5 КБ )
И файлики к нему OpenOCD.rar ( 1.05 МБ )
openocd_0.5.0_rc1.zip ( 1.73 МБ )
ocd_cmdr.rar ( 6.7 МБ )
И вряд ли пригодится чужой бут. Но в статье он есть, поэтому block1.rar ( 56.13 КБ )
вот он.
Читайте, изучайте. Пока паять не надо - прочитайте, пусть устаканится всё в голове. Забегая вперед скажу, что у меня увиделся зверек через обычные резисторы.
Да! Самое важное! У меня на плате в явном виде обведены кружочками и подписаны эти самые заветные точки. Советую подпаяться к ним ТОНЮСЕНЬКИМИ проводами и надежно ЗАФИКСИРОВАТЬ их. Точки вместе с дорожками от платы отлетают ОЧЕНЬ легко!
Как и обещал ранее - теперь описываю лично мои действия.
Берем зверька в руки и ищем точки подключения JTAG.
Вот чужая фотка с похожим планшетом:
Заботливые китайцы их подписали (обвел в кружочек) - это точки подписанные TRST, TCK, TDO, TDI, TMS. Использование резета (TRST) - под вопросом и обсуждаемо - но я пока подключил. Берем лакированные тонюсенькие проводочки, лудим концы, паяемся аккуратненько к точкам. Чтобы не потерять дорожки (у меня чуть это не произошло) - заливаем суперклеем. Внимание! после клея вы более не доберетесь к плате - может придумаете другой способ подключения, нежели я.
У меня вышло следующее:
Теперь софт.
Скажу сразу, с openOSCD - у меня ничего не вышло. JTAG Scan Chain Analyzer - в упор не видел моего виглера (этот "донгл" - упрощенный WIGGLER).
Я скачал свеженький HJTAG и NoIce (эти проги использовались в одном из мануалов).
При установке HJTAGа ставится драйвер giveio - он во многих программах используется.
(если что - у меня есть русский мануал по настройке HJTAGа)
И - о чудо! Мой зверек им опознался! Вот скриншот:
Соответвенно я содержимое памяти зверька не вижу, процессором управлять не могу. Ничего не могу.
Внимание, вопрос! Где я накосячил, что не учел? Куда копать?
Те, кто идут следом - ВДУМЧИВО повторите процедуру. Вдумчиво - потому что я мог где-нибудь налажать. Сейчас я в тупике - жду ваших догадок, советов, ваших экспериментов над своими зверьками.
Такая ошибка может возникнуть при неправильном выборе частоты прошиваемого мк и/или завышенной скорости работы по вигглеру. И как следствие, программа-прошивальщик не может остановить проц, (чтобы ввести его в дебуг например), мне помагало также аппаратное отключение вотчдог таймера на мк (но это частный случай). Единственное что могу посоветывать это раздобыть настоящий j-link или его клон(вполне себе вещь хорошая за небольшие деньги). Есди не забуду сегодня выложу схемы вигглера.
Про сигналы trst, ntrst, reset надо смотреть доки на проц (в них описано какие уровни на них должны быть), так же неплохо осцииллографом проверить сигнал сброса (не уверен насчет конкретно этого случая, есть ли он вообще).
Спасибо, хоть кто-то откликнулся!
Я думал над этой причиной. Для проверки в настройках HGTAGa - я пробовал, выставлял разные частоты. На всех частотах он определился HGTAGом. Я подумал и о том, что ОПРЕДЕЛЕНИЕ типа процессора и РАБОТА с ним в дебаг режиме - это наверное разные вещи. Я поискал даташиты на процессор. Там была написана частота (но гадство, не явно), на которой он работает. Это или 450 килогерц, или 300 или 150 килогерц. (что-то тут я в мегагерцами немного потерялся - частоты для работы по интерфейсу JTAG - другие?) Пробовал все эти частоты - безрезультатно.
Есть возможность определить реальную частоту процессора? Или где-то искать инженерный даташит конкретно по моему устройству? (та ещё задачка!)
ARM с которым я работал был устроен так. Ядро стартует на частоте равной кварцу или кварцу дел/умн на делители модуля PLL (в моем случае они были равны 1). Другими словами проц стартовал на частоте 10 МГц и вот в этот момент он и подхватывался отладчиком (использовал jlink). А далее отладчик останавливал программу и поэтому до номинальных чатот в 48 МГц проц не подымался. Это что касается установки скорости Processor Frequency. Что касается скорости работы самого отладчика то тут надо начинать с низов обычно с килогерца.
Насчет определения процессора, да он может быть детектирован при старте, но если не прошла команда halt с отладчика дальше с ним работать будет невозможно.
Я бы сам попробовал с этим поковыряться, но нет сломанного аппарата баловаться с гарантийной мобилой как то стремно.
Могу лишь посоветовать найти хорошее оборудование. Найдете Segger думаю проблема решится. Некоторые процы HJTAG у меня не брал хоть убейся.
У вас HJTAG самодельный или фирмовокитайский??
И скиньте пожайлуста дашиты на этот проц на дипозит попробую вам помочь.
На файлообменниках теряется - здесь надежнее. Размещаю даташиты сюда напрямую.
DS_WM8505_071.pdf ( 1.85 МБ )
это даташит на WM8505 процессор (у меня ещё с плюсиком на конце WM8505+).
DDI0198E_arm926ejs_r0p5_trm.pdf ( 1.43 МБ )
а это даташит на тип (arm926ejs) процессоров.
Параллельно вот какой вопрос. Если сломан шлейф на экран (вроде одна дорожка перегнута) - JTAG работать будет? Или проц вообще работать не будет (слышал я на АРМ это возможно).
Насколько я понял из описания - надо вроде 300 килогерц подать. И далее тактируется самой программой (пытался через NoIce работать). Но судя по ошибке, как раз HALT подать и не получилось.
HJTAG - это программа, она может с разными адаптерами работать.
ЖТАГ адаптер я собрал простейший - ЛПТ порт через резисторы (упрощенный вигглер). Эта хрень не является боксом как таковым.
В даташите описаны временные диаграммы. Может попробуете осциллографом посмотреть что у вас с лпт-адаптера идет. Минимум должно быть при попытке соединения низкий уровень на ресете а потом опять высокий. Вот по диаграммам ЖТАГА Тск=200 нс. Время ресета 50000*Тск=10000000 нс=10 мс. И это минимум, другими словами отладчик может работать с процом с частотой до 5 МГц. Это враки никогда он так работать не будет (тем более что отладик это лпт порт с резисторами без экранировки и рядом с импульсным блоком питания компа). Смело делим на 100. То есть частота работы адатера с процом 5 кГц. А сигнал сброса 50-100 мс. И смотрим по осциллографу соответствует ли JTAGTRST этой величине.
И повторюсь. Нужен либо полноценный китайский клон, либо фирмовый отладчик. Потому как сейчас мы ищем черную кошку в темнокитайской пещере.
большое спасибо за ответ. я очень надеюсь добыть себе осциллограф (давно хотел). А вот даже китайский клон пока нецелесообразно покупать. Я не планирую столько девайсов оживлять, чтобы купить такую коробочку. А осциллограф для "домашнего" радиолюбителя - вещь нужная.
5 килогерц (или ниже) я тоже попробую - я опускался только до 100 килогерц.
Еще раз спасибо за наколки (в репу дал).
ты не сможеш залить в оперативу своего планшета никакой загрузчик, пока не инициализируеш скриптом контроллер памяти арма.
технология заливки boot загрузчика в тело такова(я работаю OCD commander)
1. запускаем OSD,если тело подключено правильно, сброс пройдет нормально, и ошибок не выйдет
2. инициализируем контроллер оперативной памяти
здесь возникают проблемы, инициализация зависит от используемого чипа памяти, а также его подключения
нужен либо готовый скрипт под конкретное устройство, либо мануалы на процессор и память, а возможно и схему подключения к чипу.
3. память инициализированна, можно командой download, залить boot загрузчик и запустить его
если все прошло успешно, тело должно запуститься, обычно с помощью комбинаций клавиш, можно войти в сервисное меню, с помощью которого можно прошить загрузчик во флэш
HJTAG работает по такойже схеме, если у него есть скрипт на такое устройство, он инициализирует память, загружает туда свой код, который предназначен для записи eboot сразу во флэш
я не хочу пока заливать загрузчик. я его могу залить туда программируя память SPI напрямую (выпаяв её). Меня интересует пробежаться по процессу инициализации - узнать - что ему не нравится. Я ещё пока не успел "поиграться разными частотами".
Сделал ресет теперь вообще не включается что делать ? хотел ещё спросить что делает EraseIDB в RKAndroidTool ?
Зажми Громкость + и воткни не отпуская USB, потом в компе в диспетчере устройств смотри, если устройства не будет значится совсем все плохо, и без разборки не обойтись но там все легко.
РУКОВОДСТВО ПО ВОЗВРАЩЕНИЮ БРИКНУТЫХ (КИРПИЧЕЙ) ПЛАНШЕТОВ К ЖИЗНИ: EXPLAY MID-725, TECLAST T760, TEXET TM-7022
Есть 2 возможных состояния "НЕ стояния" у планшета.
1) После перепрошивки ну или каких либо действий планшет перестает загружаться, тоесть мы его включаем он нам лого кажет экран тухнет и опять лого и так по кругу. Но при этом компьютер видет его на USB порту. Типа полубрик (Не кирпич но уже близко к тому)
Этот случай лечится легко, открываем RKBatchTool из приложенного архива, качаем это ТОЛЬКО ДЛЯ TECLAST и EXPLAY для TEXET Стоковая прошивка TEXET TM-7022. В RKBatchTool указываем путь к IMG файлу прошивки и ВНИМАНИЕ! ЖМЕМ КНОПКУ "RESTORE" Ждем конца прошивки и ура.
2) Абсолютный кирпич. Планшет не включается вообще и не распознается компьютером. В текущей ситуации необходимо проделать некоторые шаги, чтобы перевести планшет в специальный сервисный режим, и компьютер его мог увидеть как MSC device (rk maskrom device).
ВНИМАНИЕ. ВСЕ, ЧТО ВЫДЕЛАЕТЕ ДАЛЕЕ, ВЫ ДЕЛАЕТЕ ТОЛЬКО НА СВОЙ СТРАХ И РИСК. МОЖНО СОВСЕМ ДОБИТЬ ПЛАНШЕТ, НЕ УВЕРЕНЫ В СЕБЕ НЕ ДЕЛАЙТЕ ЭТОГО ЛИБО ОБРАЩАЙТЕСЬ В СЦ.
1) Переворачиваем планшет, тонким острым предметом поддеваем по углам заглушки из резинок, далее обычной крестовой отверткой откручиваем винты и аккуратно снимаем крышку. После снятия наблюдаем картину такого вида
2) Снимаем защитную черную пластмаску (может и не быть) как на скрине выше.
3) После снятия защиты видим такую картину
зеленой рамкой отмечена флеш память тут 2 чипа по 4 гига, а работать мы будем с верхним чипом, крайнем к процессору. Нам надо замкнуть 29 и 30 ноги на флеш памяти, для этого возьмите иголку только не особо тонкую, смотрите внимательно на скрин ниже.
Прошивальщик RKBatchTool.7z ( 289.58 КБ )
Думаю в Вашем случае главная стратегическая ошибка что Вы взялись за китайский планшет. Оно понятно что лучше тренироваться на чем то что дешевое и принадлежит Вам, но я бы советовал начинать с какой то "разжеваной" модели что бы понять в порядке ли оборудование типо "ЛПТ разъем через резисторы" - девайсы подключаемые через JTAG очень капризны, то есть все должно быть экранировано, напряжения стабилизированы. Вполне реален вариант что вы по софту все делаете правильно, но из за статики нормального соединения Вам не видать.
Далее не факт что сама плата планшетника в порядке, держал их в руках достаточно что бы повесить на дверях мастерской вывеску "Китайских устройств не ремонтируем".
Так что думаю разобрать Вашу Тошибу и начать с нее будет в самый раз.
Исследователи Positive Technologies активировали аппаратную отладку (JTAG) для Intel Management Engine, которая позволяет получить полный доступ ко всем устройствам PCH (Platform Controller Hub), используя технологию Intel DCI (через интерфейс USB). Мы планируем поделиться подробностями на одной из ближайших конференций. А о том, как активировать этот интерфейс, но для основного процессора, расскажем ниже.
От ошибок никто не застрахован. Это утверждение касается и низкоуровневого программирования, где таких привычных средств, как отладочная печать или программный отладчик, в определенный момент может быть уже недостаточно. Для решения этой проблемы разработчики аппаратных средств используют так называемые внутрисхемные эмуляторы (in-circuit emulators) или специальный отладочный интерфейс JTAG, если он присутствует на целевой платформе (IEEE1149.1 [1]). Эти отладочные механизмы появились еще в 80-х годах прошлого века [2]. Со временем производители микросхем расширяли возможности этих интерфейсов. Благодаря этому разработчики смогли получать детальную информацию об энергопотреблении, находить узкие места в высокопроизводительных алгоритмах и получили много других возможностей.
Для исследователей безопасности аппаратные средства отладки также представляют интерес. Они позволяют получить низкоуровневый доступ к системе в обход основных средств обеспечения безопасности, изучать поведение целевой платформы и ее недокументированные возможности. Очевидно, что подобные возможности оказались привлекательны и для спецслужб [3].
Долгое время доступ к этим технологиям для процессоров Intel имелся только у ограниченного круга лиц, что было связанно с необходимостью использования дорогого специализированного оборудования. Но с выходом процессоров семейства Skylake ситуация кардинально изменилась: отладочные механизмы были встроены в PCH [4], что позволяет использовать столь мощный инструмент обычным пользователям — включая и злоумышленников, которые могут таким образом получить полный контроль над процессором. Из соображений безопасности по умолчанию эти механизмы не активированы, но в данной статье мы покажем, что их можно заставить работать на оборудовании, которое доступно в обычных компьютерных магазинах.
Эволюция отладочных средств на процессорах Intel
1. От in-circuit emulator к JTAG
Первоначально in-circuit emulator (ICE) для процессоров Intel 80286 представлял собой отдельный компьютер («большую синюю коробку» [5]), который включал клавиатуру и монитор. ICE подключался вместо процессора отлаживаемой системы и эмулировал его поведение. Такой эмулятор позволял устанавливать точки останова, изменять память и регистры процессора, производить запись и чтение.
Позднее Intel представила новый аппаратный отладчик I2ICE (рис. 1), который уже не заменял собой штатный процессор. С помощью специальных переходников пользователь подключался к отлаживаемой системе, а для общения с хост-машиной такой аппаратный отладчик использовал стандартный последовательный порт на скорости 9600 Бод [5].
По мере развития технологий и увеличения тактовых частот Intel отказывается от разработки отдельных полнофункциональных средств отладки и частично переносит ее внутрь процессора, в виде специального недокументированного режима ICE-mode (который по принципам работы очень напоминал другой режим — System Management Mode (SMM), у некоторых разработчиков того времени было стойкое убеждение, что SMM — не что иное, как документированный и расширенный ICE-mode [6]). В свою очередь, всеобщая стандартизация отладочных механизмов в электронной промышленности приводит к тому, что в некоторых процессорах Intel 80486 появляется поддержка тестового интерфейса IEEE1149.1 (JTAG) [7].
Joint Test Action Group (JTAG) на самом деле является названием рабочей группы, которая разработала стандарт Standard Test Access Port and Boundary-Scan Architecture (IEEE1149.1 [1]). Он позволяет использовать стандартную аппаратуру тестирования и отладки для широкого класса устройств. Со временем сокращение JTAG стало ассоциироваться со стандартом IEEE1149. В современных микросхемах он широко распространен в промышленности и используется для тестирования, прошивки, отладки и выходного контроля микросхем при производстве. Физически JTAG представляет собой четыре или пять выделенных линий, которые образуют тестовый порт TAP (Test Access Port). Стандарт предусматривает объединение устройств в цепочку, позволяя получать доступ к каждому подключенному устройству (рис. 2).
Рис. 2. Объединение отлаживаемых устройств в JTAG-цепочку
Часто разработчики аппаратуры расширяют базовую функциональность JTAG, вводя новые возможности; процессоры Intel не стали в этом смысле исключением, начиная с Pentium появляется более дешевый и мощный вариант внешнего отладчика, который использует специальный зондовый режим (probe mode).
2. Режим зондовой отладки
Режим зондовой отладки (probe mode) является еще одним недокументированным режимом работы процессоров Intel. Он используется для диагностики и отладки. Его невозможно активировать без доступа к JTAG-регистрам процессора. В probe mode процессор может изменять память, производить запись и чтение из портов ввода-вывода. В данном режиме прерывается нормальное выполнение инструкций и процессор переходит в режим бездействия, ожидая команд по интерфейсу JTAG. Такое поведение принципиально отличает данный механизм от ICE-mode, когда инструкции на процессоре продолжали выполняться. При входе в probe mode останавливается предварительная выборка и декодирование команд. Команды от JTAG для модификации или чтения поступают непосредственно в исполнительные блоки процессора, тем самым минуя этапы предварительной выборки и декодирования [8], что позволяет получать доступ к ряду регистров, которые недоступны из обычных режимов.
3. Современные аппаратные средства и технологии отладки процессоров Intel
Современные процессоры Intel предоставляют JTAG через три интерфейса:
- Intel In-Target Probe eXtended Debug Port (ITP-XDP) (рис.3);
- Intel Direct Connect Interface (DCI) — специализированная технология, которая предоставляет JTAG-интерфейс через порт USB 3.0. Существуют две возможности подключения (рис. 4):
Рис. 3. ITP-XDP
Рис. 4. Типы подключения DCI
Рис 5. Intel SVT Closed Chassis Adapter
Интерфейс Intel ITP-XDP имеет закрытый протокол, требует специализированного разъема на плате и специализированного программного обеспечения Intel System Studio (на сайте производителя доступна пробная версия). К недостаткам также стоит отнести высокую цену (около 3000 долларов США) и необходимость подписывать документы о неразглашении информации (Corporate Non-Disclosure Agreement) [10]. Высокая цена и CNDA делают данный отладчик недоступным для рядового разработчика или домашнего использования.
Однако начиная с процессоров семейства Skylake Intel внедрил технологию Direct Connect Interface (DCI), ее достаточно поверхностное описание можно найти в документации [4]. Данная технология ставит своей целью упростить разработку мобильных устройств, из чего вытекает ее недостаток: ее можно активировать без каких-либо аппаратных модификаций (при наличии JTAG линий между PCH и CPU). Также стоит отметить, что подключение с использованием адаптера Intel SVT использует линии USB 3.0, но реализует свой протокол, что позволяет работать с целевой системой в режимах глубокого сна. К сожалению, адаптер SVT при своей относительно низкой цене (390 долларов США) также доступен для покупки только после подписания CNDA.
Самым интересным для рядового программиста вариантом, который при этом не требует подписания каких-либо документов перед использованием, является USB3 Hosting DCI. Он представляет JTAG-интерфейс через обычный отладочный кабель USB 3.0. При активации DCI на целевой системе порт USB 3.0 переходит в режим slave и начинает принимать команды от хостовой системы.
Один из важных вопросов относительно USB 3.0 DbC DCI Hosting заключается в том, через любой ли внешний порт USB 3.0 возможно подключение к DCI — или требуется отладочный порт, доступный только на специальных системных платах для разработчиков. Следует рассмотреть данный вопрос подробнее.
В среде системных разработчиков существует путаница, порожденная тем, что сама по себе отладка через USB появилась достаточно давно (со времен USB 2.0) и в данный момент используется многими разработчиками для программной отладки ядер операционных систем и UEFI приложений. Однако программная отладка через USB (в windbg, UEFI debug agent и т. п.) не имеет ничего общего с механизмами аппаратной отладки через JTAG, кроме собственно транспорта. Спецификация контроллера шины USB 2.0 (EHCI, Enhanced Host Controller Interface) предоставляет специальный механизм, который называется Debug Port (PCI capability), с помощью которого возможно взаимодействие между сервером (программным или аппаратным) на отлаживаемой машине и клиентом на хосте. В частности, ядро Windows поддерживает отладку через EHCI Debug Port (при этом нужен отладочный кабель USB 2.0, с интегрированным устройством USB 2.0). При этом, действительно, не каждый внешний порт USB 2.0 мог работать как Debug Port, а эта возможность была закреплена за определенными портами, которые могли быть и не выведены наружу. Все зависело от производителя оборудования. Поэтому разработчики специально искали оборудование с выведенным наружу Debug Port, для отладки по USB. Таким образом, Debug Port — это атрибут USB-порта.
Однако ситуация полностью изменилась с появлением USB 3.0 и спецификации контроллера этой шины XHCI (eXtended Host Controller Interface). Данная спецификация также поддерживает отладку по USB, однако она претерпела существенное развитие и стала называться USB Debug Capability (DbC). Согласно XHCI, DbC является не атрибутом порта, а свойством конкретного контроллера XHCI. То есть, если данный XHCI-контроллер поддерживает DbC, то возможность отладки по USB 3.0 будет доступна на любом (в том числе и внешнем) порте USB 3.0. При этом DbC автоматический выберет первый порт, к которому подключен отладочным кабелем клиент, выполняющий транзакции USB 3.0.
Здесь важно отметить, что первые XHCI-контроллеры не поддерживали DbC, поэтому на системах с такими котроллерами отладка по USB была невозможна. Однако в PCH версии 100 и выше (для Skylake) компания Intel встроила свой собственный контроллер XHCI, который поддерживает DbC. Технология Intel DCI (которая и появилась начиная с процессоров Skylake) использует USB 3.0 DbС в качестве транспорта, для подключения JTAG-клиента. USB 2.0 Debug Port он не использует.
Таким образом, через любой порт USB 3.0 можно подключиться к DCI и осуществлять JTAG-отладку.
Активация DCI
Как же можно активировать этот отладочный интерфейс? Мы нашли три способа:
- через EFI Human Interface Infrastructure;
- PCH Strap (Intel Flash Image Tool);
- P2SB device.
1. Активация через EFI Human Interface Infrastructure
EFI Human Interface Infrastructure — специальный механизм, который позволяет создавать пользовательский интерфейс в UEFI, обрабатывать и контролировать пользовательский ввод. Если посмотреть строение современных UEFI BIOS, можно найти в них множество скрытых опций, которые недоступны пользователю, но обрабатываются. На этом и основан наш первый способ. EFI HII определяет значения по умолчанию для всех опций, в том числе и скрытых. Найдя опцию, связанную с DCI, можно ее активировать для настройки по умолчанию, а затем, установив в BIOS заводские настройки, активировать DCI. Отредактировать эти настройки позволяет утилита AMI BIOS Configuration Program 5.0. Отредактированный образ программируется в SPI-flash программатором или через штатный механизм прошивки BIOS, если позволяют права доступа.
Однако у этого способа есть недостаток: система не загрузится, если активирован Boot Guard, так как утилита изменяет модуль EFI.
2. Активация через Flash Descriptor Region
DCI также можно активировать через настройку специальных битов конфигурации PCH — либо вручную (они находятся в Flash Descriptor Region), либо c помощью утилиты Flash Image Tool. Данный способ работает даже при включенном Boot Guard.
3. Активация через P2SB-устройство
В конце концов, можно попробовать действовать напрямую — через устройство P2SB. В документации на разные поколения PCH можно найти специальный индекс и регистр, используя который можно активировать DCI на лету, если BIOS не заблокировал изменение настройки DCI.
Данный способ является уязвимостью, так как если BIOS не блокирует запись в регистр ECTRL, то из-за особенностей работы (возможности сохранения конфигурации между перезагрузками после выключения питания) позволяет активировать DCI один раз, а далее использовать JTAG-интерфейс как аппаратный backdoor в систему (например, отключать экран блокировки).
Мы провели исследование [12], в результате которого выяснилось, что крупнейшие производители материнских плат не устанавливают блокировку данного регистра, что позволяет активировать DCI и использовать этот механизм, например, для перезаписи BIOS в обход всех средств защиты, включая проверку цифровой подписи.
Резюме
Наличие отладочных механизмов в современных процессорах Intel позволяет облегчить разработку модулей UEFI, операционных систем, гипервизоров. Исследователи безопасности получают низкоуровневый механизм привилегированного доступа к аппаратуре, который может быть использован для поиска зловредного ПО, исследования недокументированных возможностей аппаратуры или драйверов специфического оборудования. Но, как любой отладочный механизм, DCI может использоваться и злоумышленниками для несанкционированного доступа к данным.
В качестве защиты от таких атак мы рекомендуем активировать Boot Guard, проверять бит активации DCI и запрет отладки в регистре IA32_DEBUG_INTERFACE (при этом DCI может работать, но остановить выполнение уже нельзя, поэтому нет возможности получить доступ к памяти и регистрам).
Нередки случаи, когда оборудование, нуждающееся в обновлении ПО норовит быть в неожиданных и труднодоступных местах. Да еще и времени на обновление бывает в обрез. Хорошо, когда в оборудовании есть загрузчик, позволяющий прошиться по аплинку/радиоканалу/съемному носителю информации. А что если загрузчик устарел и его самого надо обновить? Или же у ПО напрочь слетела вся память? Тогда-то и востребуется такая штука, как «прошивалка». Маленьких размеров, питающийся от устройства хэдкраб, который сможет залить в устройство заранее подготовленный загрузчик или программу. И главное – никаких нетбуков/ноутбуков/проводов! Даже среднего образования не надо.
Итак, сверхмобильная прошивалка.
Схемотехника
Устройство представляет собой платку с разъемом JTAG (IDC-10, в том формате, который полюбился Atmel) и контроллера ATMega8. В качестве контроллера конкретно здесь может быть любой другой, совместимый по ногам, например, ATMega168.
Схема:
Плата:
Все прекрасно разводится на одном слое, без перемычек.
Принцип работы
Наш хэдкраб тактируется от внутреннего RC-генератора, т.к. JTAG — это синхронных интерфейс и тайминги не важны. Для отображения состояния на плате располагается сдвоенный красно-зеленый светодиод.
После подачи питания контроллер инициализирует линии JTAG (TMS, TCK, TDO, TDI), зажигает красный светодиод и согласно протоколу работы TAP-контроллера (Test Access Point, описание его работы можно найти в даташите на любой МК, поддерживающий JTAG) пытается ввести в режим программирования устройство, к которому он прицепился. Здесь небольшое лирическое отступление. В программе работа с TAP выглядит так:
Реализация функций TAP и shift_instruction выглядит следующим образом:
По сути, каждая операция по JTAG производится через TAP посредством этих двух функций в различных вариациях. Например так выглядит чтение байтов сигнатуры устройства:
Остальные команды можно изучить в описании TAP или же, более наглядно, в прикрепленном к посту рабочем проекте. Лирическое отступление закончилось, вернемся к описанию работы.
После входа в режим программирования прошивалка сверяет байты сигнатур устройства с зашитыми в код прошивалки (не дай Б-г не то устройство прошьем). Если байты не совпадают, прошивалка деинициализирует линии JTAG и начинает мигать обоими светодиодами, пока её не отцепят от устройства. Короче говоря, отваливает от процесса. Если устройство всё же похоже на нужное, то прошивалка делает следующее:
— стирание кристалла (chip erase);
— прошивка память программы устройства из своей собственной памяти (program flash);
— проверка памяти программы устройства со своей собственной памятью (read flash);
— программирование битов конфигурации (fuses);
— программирование битов защиты (lock bits);
— отваливается, погасив все светодиоды.
Конечно же, прошивлка сама по себе не отвалится, её надо отстыковать). Но на момент погашения светодиодов, устройство, к которому наш хэдкраб был подключен, уже должно стартовать: готово к работе!
Если на этапе программирования или проверки возникнет несовпадение или ошибка, прошивалка отлипнет от порта и замигает светодиодами, т.е. опять-таки отвалит от процесса.
Нюансы
1) Естественно, для того чтобы прошивалка все-таки прошила устройство по JTAG, этот самый JTAG должен быть активирован на данном устройстве. Иначе придется применять прошивалку уже другого рода — по ISP. Подобное так же собиралось и функционирует.
2) Собственно сама прошивка для устройства располагается в памяти контроллера прошивалки и может занимать довольно много места. Если не будет влезать в Mega8, то можно применить Mega168, там больше флеша.
3) Бинарник прошивки устройства цепляется к прошивке хэдкраба на этапе линковки, это делается различными способами, в зависимости от среды разработки. В IAR это в свойствах проекта в Linker во вкладке Config указываем Raw binary image путь к файлу бинарника, задаем Symbol, Segment и Align например как a123, SEGa и 2 соответственно. Тогда на вкладке Extra Options надо будет добавить 2 строки:
-ZSEGa=EFF
-ga123
где EFF — это адрес, по которому будет располагаться бинарник устройства в памяти прошивалки.
Вот вроде бы и всё. Устройство бывает крайне полезным, когда устройства сверхподвижны и отлавливать их приходится буквально в поле.
Снова оговорюсь, что есть подобное же устройство, но для программирования через SPI.
UPD1. По просьбам трудящихся про SPI (ISP)
Данную плату можно использовать и для программирования в режиме ISP, для этого выводы схемы используются по такой таблице соответствия:
— вывод TMS разъема — это вход RESET устройства;
— вывод TCK разъма — это вход SCK устройства;
— вывод TDO разъема — это вход MISO устройства;
— вывод TDI разъма — это вход MOSI устройства.
Файлы проекта для релизации прошивалки по SPI в прикрепленном файле ISPviaSPI.zip
P.S. Прошу за ошибки сильно не пинать, это мой первый пост в сообществе :)
Читайте также: