Изготовление устройства для соединения JTAG-интерфейса ресивера is 890 с LPT-портом компьютера


    Представленная ниже схема предназначена для подключения к ресиверу is 890 на базе процессора Conexant CX24170, но, возможно, подойдёт и для каких-либо других устройств на базе ARM-процессоров с 20-пиновым JTAG разъёмом. Для сборки схемы понадобятся следующие компоненты:

Принципиальная схема и распиновка 20-контактоного разъёма JTAG в данном ресивере:


(нарисовано в Paint'е :) )

    Собирается всё в соответствии со схемой. Неиспользуемые выводы микросхемы, разъёма, идущего к LPT-порту и "косички" - остаются в воздухе, то есть не подключаются ни к чему. Хотя, как вариант, для повышения стабильности работы микросхемы, незадействованные входы 2A0-2A2 (это выводы под номерами 13, 15, 17) можно подключить к общему проводу (к "земле"). Длина "косички" должна быть как можно меньшей, то есть, 3-5см, но никак не не полметра! У кого есть возможность сделать экранированный провод от разъёма до микросхемы, лучше сделать его таковым.


    Собираем, подключаем так, чтобы первый проводок на косичке был рядом с первым выводом разъёма JTAG. На плате он отмечен толстой белой полосой. Примерно вот так это выглядит в итоге:

Внимание! Все подключения ради сохранности ресивера и LPT-порта компьютера производить
при отключенном из розетки питании ресивера!
При самой перешивке включать ресивер только в ту же розетку, куда включен и компьютер!




Описание, как записать в ресивер загрузчик через интерфейс JTAG


    Используется программа EJTAG_TT версии 1.0.6.16 или более новая. Для работы программы требуется присутствие в NT-системе драйвера прямого доступа к портам, например giveio.sys.
    Запускаем её и первым делом производим нужные настройки:

Сначала выбираем тип процессора - ARM7/9, потом двойной щелчок мышкой по красной надписи, после чего появляется окно с дополнительными настройками. В нём ставим только две галочки и более ничего не трогаем, нажимая кнопку "Use":

После нажатия этой кнопки - окно закрывается и мы возвращаемся обратно, к главному окну программы. Адрес базового адреса в ней автоматически изменится:

На этом настройки закончены. Следующий шаг - соединение с процессором ресивера. Предупреждаю сразу: дело это очень непростое, надо "ловить момент". У меня с бОльшей вероятностью получалось удачно законнектиться в том случае, когда на дисплее ресивера после включения загорится и погаснет надпись "BOOT". Вот как только она погасла - сразу же жмём кнопку "Коннект" в программе. И если получаем в ответ вот такую надпись:


- то нужно нажать кнопку "Коннект" сразу же ещё раз. В итоге должна быть следующая картина:

Если хоть что-то отличается (например, DeviceID или количество блоков размером 65536), или же просто вместо этого выводится сообщение о том, что флэшка не поддерживает CFI (например вот такое):

- то придётся начать процедуру коннекта заново, то есть, выключая питание ресивера и включая его снова.
Внимание! Нажимать кнопку "Коннект" более двух раз без выключения питания ресивера - нельзя, потому что даже в случае положительного результата (удачной связи и правильного определения флэшки) - работать с флэшкой не получится, будут ошибки в данных.
    После того, как соединение удачно установлено, можно считать из флэшки любые желаемые данные, выбрав смещение (offset) относительно её начала, длину считываемого блока и нажав кнопку "Считать":

    Для гарантии, что данные считались правильно - очень рекомендую повторить считывание 2-3 раза, сравнивая полученные файлы в побайтовом режиме (команда "FC /B" в командной строке в дос-окошке, либо функция сравнения файлов в каком-либо HEX-редакторе). Если файлы совпадают - всё здорово. Если нет... тогда всё плохо и надо пытаться коннектиться заново.
    Точно так же обстоит дело и с записью данных. После проведения записи, чтобы удостовериться, что записанное соответствует действительности, надо считать эти данные и сравнить с исходным файлом. Если Вы записываете загрузчик - будьте предельно осторожны, т.к. если данные загрузчика повреждены, то, при включении ресивера, лично я так и не смог добиться, чтобы флэшка определилась. В итоге, мне пришлось выпаять её и воспользоваться программатором. Зато, если загрузчик просто стереть, то флэшка определяется без всяких проблем, только для этого надо изменить базовый адрес с FF000000 на F0000000.
    Размер загрузчика = 58340 байт, но место во флэшке, отведённое для него = 65536 байтам (то есть 64 килобайта) да и у разных торговых марок этих ресиверов размер загрузчика может немного отличаться, а потому читать/записывать лучше полностью все 65536 байт.
    В общем, алгоритм очень простой: коннектимся, считываем загрузчик полностью как минимум три раза подряд, не закрывая программы сравниваем в побайтовом режиме три файла друг с другом и, только в случае полного совпадения файлов, можно производить запись во флэшку, ни в коем случае не нажимая кнопки "Коннект" ещё раз! После осуществления записи, снова считываем уже записанный загрузчик (достаточно один раз) и сравниваем его с тем, который в действительности записывали. Если данные совпадают - можно смело отключать питание ресивера и приступать к перешивке софта через ком порт, а если данные отличаются - дело плохо, т.к. это означает, что записалось что-то не то и если в таком состоянии ресивер выключить, то более с ним по джтагу сконнектиться не получится. В таком случае, надо просто стереть первые 64 килобайта данных, а потом считать их, удостоверившись, что в считанном файле действительно все байты являют собою FF.
    После записи загрузчика и последующего включения ресивера, если ресивер до этого нормально включался (в нём установлена какая-либо рабочая прошивка), он обязан включаться и с только что записанным. А если после записи загрузчика на дисплее не появляется ничего - вот это плохо. Если удастся соединиться, чтобы правильно определилась флэшка, считайте, что Вам повезло. Либо - только выпаивать флэшку и в программатор (в котором её достаточно просто стереть, а потом запаять обратно и без проблем перешить по джтагу).
    Всё, что вы делаете - вы делаете на свой страх и риск. Максимум, что может случиться - это частично неисправный ресивер, которым будет нельзя пользоваться. Это не конец жизни, это всего лишь дорогая электронная игрушка.
    Сами загрузчики на ресиверы семейства is 890 можно найти здесь.

Удачи!