![]() |
Программатор контроллеров RTD2660 на базе FT2232H
Вложений: 3
Предыстория:
Как-то приобрел я себе IPS монитор китайский на базе контроллера RTD2660. Всем хорош, но оказалось, что на нем невозможно отключить синий экран при отсутствии сигнала. Оказалось, что убрать его можно только путем смены прошивки в нем. В контроллере используется микросхема Flash памяти 25X40. Можно ее выпаивать (или просто к ней подпаяться), и программировать отдельно. А можно программировать через один из трех каналов DDC, которые есть на каждом входе VGA, DVI, HDMI. Т.к. сразу стало ясно, что одной прошивкой дело не обойдется, то было решено, что выпаивать микросхему - не наш метод. Начал искать программатор для программирования через VGA разъем. Таких оказалось три варианта: 1. Детище человека с ником Postal2, которое имеет созвучное название: Postal2. Работает через LPT порт, и только под 32бит системой. Поэтому на новых компьютерах, увы не работает. А прога очень хорошая и мощная. 2. Китайский LPT программатор. Стоит около 35$, но опять же - только LPT, и только 32бит. 3. Китайский USB программатор. Стоит уже около 80$ (при стоимости контроллера около 40$), поэтому тоже отпал. Так и не найдя готового решения - возникла мысль - а не сделать ли такое устройство самому на базе чего-то относительно стандартного? Ведь документация на чип есть, и относительно понятно что делать. К сожалению, разобраться в документации без опыта работы с такими девайсами, оказалось весьма непросто. К счастью, уважаемый Postal2 любезно поделился своими исходниками для работы с RTD2660, и процесс пошел. Представляю Вашему вниманию первый результат данной работы. Программа умеет: 1. Считывать прошивку из флеша. Результат контролируется по контрольной сумме, расчитанной самим чипом. 2. Записывать прошивку в флеш. Результат контролируется так же. 3. Сравнивать контрольную сумму данных в флеше с контрольной суммой данных в файле. 4. Читать данные EDID из контроллера для входа, к которому мы подключены. 5. Посылать в контроллер тестовые команды (только для тех, кто знает что делает). Все это происходит через разъем VGA контроллера монитора без выпаивания микросхемы памяти. Программа может использовать любой преобразователь от фирмы FTDI, которые поддерживает режим MPSSE (Multi-Protocol Synchronous Serial Engine). Например, FT232H, FT2232H, FT4232H. Схема подключения к преобразователю на примере FT2232H: Вложение 49261 Я для своих целей использую такую платку. В ней подключение происходит к разъему SPI1. Назначение ног на этом разъеме такое: 1 DI (ADBUS1) 2 Vcc (connected to on board 3.3V) 3 SCK (ADBUS0) 4 DO (ADBUS2) 5 CS (ADBUS3) 6 GND Линии данных на этом разъеме буферированы, и резисторы подтяжки уже присутствуют. Поэтому паять резисторы не нужно. Достаточно только одного диода шоттки и пары разъемов для подключения к плате и к контроллеру монитора. Вид окна программатора: Вложение 35556 Назначение кнопок: Open - открыть порт FT2232H Close - закрыть порт FT2232H EnterISP - перевести чип RTD2660 в режим внутрисхемного программирования. Reset - Выйти из режима внутрисхемного программирования. При этом произойдет сброс контроллера RTD2660. Find Devices - поиск устройств на шине. Программа сканирует шину и выводит список ID устройств, которые отозвались. Варианты ID: 37 (6E) - устройство DDC-CI для управления монитором 4A (94) - устройство для внутрисхемного программирования RTD2660 50 (A0) - устройство, предоставляющее EDID информацию в компьютер Chip size - размер Flash памяти чипа 2660 в байтах. Read chip - Прочитать содержимое Flash памяти RTD2660. При нажатии на кнопку надо указать куда сохранить результат. По окончании чтения программатор сравнит CRC данных в файле с CRC данных в Flash-памяти RTD2660. Write chip - записать прошивку в Flash память контроллера. По окончании записи программатор сравнит CRC данных в файле с CRC данных в Flash-памяти RTD2660. Verify chip - Проверить CRC данных в указанном файле с CRC данных в Flash-памяти RTD2660. ReadEE - Прочитать данные EDID для текущего входа из RTD2660. Данные читаются точно так же, как и из обычной микросхемы 24C16. Поэтому программа пытается вычитать все 8 секций этой микросхемы. Как правило - для мониторов удается вычитать только одну - две. ReadProt, WriteProt - соответственно чтение и запись команды DDC-CI по адресу 0x37. В окошке справа вводится код команды в виде: "51 84 03 12 00 4B E1" (установить контрастность 75%). Команды можно посмотреть, скажем, в программе SoftMCCS. Для записи последний байт - CRC. Не рекомендую нажимать на эти кнопки просто так, можно чего-то испортить )). Read94,Write94 - соответственно чтение и запись команды ISP контроллера RTD2660. Команды так же вводятся в окошко справа в виде шестнадцатиричных последовательностей. Слева есть окошко с количеством байт для чтения и чекбокс Step. Галочка в этом чекбоксе говорит, что контроллер будет автоинкрементировать адрес при чтении. Все команды описаны в документации к RTD2660. Не рекомендую нажимать на эти кнопки просто так.. Можно чего-то испортить )). В большом текстовом поле выводится детальный лог происходящих операций. Для работы с контроллером необходимо: 1. Выбрать нужное устройство FT2232H в выпадающем списке. У меня оно зовется "Dual RS232-HS A". 2. Нажать кнопку "Open" чтобы открыть порт. 3. Нажать на кнопку "Enter ISP" чтобы войти в режим программирования. 4. Далее можно в произвольном порядке читать, писать и проверять содержимое Flash памяти контроллера. Сама программа - в аттаче. Для запуска и работы необходимы фреймворк .Net 4.0 и установленные драйверы чипа и D2XX (можно скачать на сайте FTDI). Update 2017-09-12: Так же с данной микросхемой успешно работает программа Rova Tools: Цитата:
Цитата:
|
Вот спасибо!
Имею программатор AVREAL и давно приобретенную платку LCD контроллера. Теперь будет чем заняться.... |
Ну вот, я неделю без компутера в машине сидел, пока отлаживал, а оказывается, совсем рядом все это время лежала совершенно свободная плата )))
А что за программатор AVREAL? Программу для AVR знаю, сам пользуюсь. А программатор? Имеется в виду что-то типа того, что я по ссылке дал? |
Вложений: 1
Цитата:
Я имею в виду схему на FT2232 для программирования AVR-ок через программу AVREAL собранную мною давным давно. Вложение 35382 |
Обновил версию проги в шапке.
Изменения: + Теперь не надо нажимать кнопки "Open" и "EnterISP" перед операциями записи/чтения чипа. Прога сама откроет порт, если он не открыт, и войдет в ISP, если еще не вошла. + Добавлен автоматический сброс контроллера после успешной заливки или считывания прошивки. - Верификация вызывается только в случае успешного чтения или записи прошивки. |
Подскажите, можно ли использовать такую платку?
http://dangerousprototypes.com/docs/...2-breakout.jpg Цена на ebay менее $30 |
Можно, но гораздо выгоднее доплатить еще 6$, и за 33$ взять ту платку, что я привел в первом посту.
Там уже есть и буфер, который может уберечь ее от внешних факторов, и распаянные RS232/TTL последовательные порты, и отдельные разъемы для SPI/i2c, и отдельный разъем JTAG... Я ей и меги прошиваю, и сюда приспособил... Очень получилась универсальная плата. |
Наверное Вы правы.
Даже, можно сказать, убедили :). Спасибо. А нет ли, случаем, документации на нее? |
а ftdi 232 на Arduino nano не прокатит?
Для чего нужна MPSSE ? |
Доки есть тут.
Девайс зовется "TIAO USB Multi Protocol Adapter" |
Цитата:
MPSSE - это Multi-Protocol Synchronous Serial Engine. Это именно та самая фича, которая и позволяет FTDI общаться с I2C шиной. Поэтому - подходят только те чипы, которые ее поддерживают ) |
Цитата:
Т.е. я правильно понял, что для прошивки нужно устройство, которое умеет общаться с шиной I2С? Для Arduino есть библиотека Wire, которая предназначена для работы с I2С, вечером попробую прочитать прошивку таким способом. |
Таким - это каким?
|
Цитата:
|
А каким образом? )
|
Цитата:
PHP код:
На платах Arduino, линия данных — SDA (data line) выведена на аналоговый пин 4, а линия тактирования — SCL (clock line) выведена на аналоговый пин 5. http://www.rootfront.com/image/photo/8104921.jpg и буду пробовать, может что получится |
Не получится. Это не простая микросхема памяти, это процессор, которому можно давать команды и по которым он будет обращаться к памяти. Общение происходит по шине DDC, поверх DDC реализован хитрый протокол. Т.е. надо сделать множество "лишних" действий, чтобы процессор выдал нам содержимое флешины.
Собственно, поэтому я и городил свой хитрый программатор. В случае с ардуйной можно попробовать сделать другое. Посмотреть схему программатора Postal3, и если по пинам получается - то залить в мегу прошивку от Postal3, и воспользоваться его софтом. Шанс на успех есть, и немалый. Хоть в Postal3 это и не заявлено, у меня есть большое ощущение, что он поддерживает RTD2660. Но это лишь мое ощущение, не более.... |
в программе postal 3 окна настроек для rtd2662 - пустые
т.е. может код там и есть в программе, но в интерфейс он не выведен. И соот-но в меге тоже вряд ли что-то есть, видимо как раз из-за сложной реализации на самой меге. Иначе смысл не добавить эту функцию в прогу? ты ведь используешь аппаратные возможности ft232h ;) |
я попробую, и отпишусь.
|
Задай вопрос на форуме Постала. Интересно )
Да, я использую их. |
Вообщем ничего не получилось, а прошивка для PostalAvr я так понял, что не распространяется.
|
Не факт. Я в теме видел, что он выкладывал ее неоднократно. И даже исходники одной из первых версий были. Надо тему полистать его.
|
Цитата:
|
Да, именно так.
Лучше спроси явно - поддерживает ли он 2660. Правда, автор не особо любит отвечать на неинтересующие его вопросы ) Подумай о покупки FTDI ). Потом пригодится не только в данном деле ;) |
Цитата:
Да я уже подумываю об этом, но я раньше все что мне нужно "читал" Arduinкой, уж больно это универсальная штука, и по этому хочется дожать е доконца)) P.S. нашел hex файл для прошивки 88 megи . Сейчас буду ковырять |
немного не ясна мне цель ваших трудов ,если это:
Цитата:
и да , 2662 ,экран не всегда синий ,цвета меняются ,зеленый желтый красный ,с интервалом в секунду (на стоковой прошивке) ,было бs круто запилить туда логотип марки авто ,но это "мигание" не напрягает ,совсем ,ибо висит максимум секунду после пропадания acc. |
Изначально была цель иметь возможность заливать в флеху любые прошивки. Китаез даже дал прошивку без синего экрана. Она работала, но криво.
А дальше варианты такие: 1. Требовать от китаеза новую прошивку, которая будет работать хорошо. 2. Пытаться самому дизасемблировать и править бинарник. 3. Попробовать вот такой проект. 4. Попробовать сделать прошивку самому на базе одного из открытых проектов. Похоже, пока остановился на 3м варианте. Но не факт, что не попробую 4й ) |
интузиазма хоть отбавляй :) чтож удачи вам.
|
Вложений: 1
Купил такую плату. Заметил один глюк по программе. Если к компьютеру по мимо платы подключен еще FT232RL, то при нажатии на кнопку OPEN программа зависает. Если FT232RL отключить, то все ОК.
31.03.2014 0:40:06.926: openDevice() 31.03.2014 0:40:07.040: Device[0]: Dual RS232-HS A 31.03.2014 0:40:07.057: device is opened. 31.03.2014 0:40:07.183: MPSSE is initialyzed! Данная плата и программа нужна для прошивки RTD2660. Но она почему то не хочет этого делать. При нажатии на кнопку Enter ISP выдает 31.03.2014 0:46:27.524: write94(): 6F 80 31.03.2014 0:46:27.526: Error! 31.03.2014 0:46:27.527: write94(): 6F 31.03.2014 0:46:27.528: Error! 31.03.2014 0:46:27.529: Read94( 1 bytes ) 31.03.2014 0:46:27.530: Error! 31.03.2014 0:46:27.530: FF По схеме выходного каскада в качестве VD1 впаял 1N4148, т.е. то что было. Резисторы подтяжки паять не стал т.к. они уже есть на плате RTD2660. Осциллографом посмотрел, на плате импульсы на ADBUS0, ADBUS1 и ADBUS2 есть. Чего ему еще не хватает? |
Питание RTD2660 - 3.3В. Уровень ноля на выходе FT2232 - скажем, 0.2..0.3В. Падение на диоде около 0.7В. Итого уровень ноля может быть уже около 0.9..1В, что при уровне питания 3.3В - уже многовато. Причина может быть в этом. Надо поискать именно шоттки.
Но на этой плате нет буфера. Поэтому можно включить вообще без диода. Можно попробовать сделать обманку - посадить на линию SDA "поддтяжку вниз" в виде резистора 1...100к (подбирать экспериментально) на землю. Может помочь скомпенсировать падение на диоде. Попробуй сделать FindDevices. Найдет что-нибудь? Если да - проблема скорее всего не в диоде. Ну и вдогонку - пока FindDevices ничего не нашел - смысла пробвать другие кнопки нет ) По поводу FT232RL - да, есть такое. Я пока не различаю разные устройства, и ищу всегда первый канал из имеющихся. Запишем в планы доработку. |
При нажатии на кнопку FindDevices
31.03.2014 1:20:26.321: findDevices() 31.03.2014 1:20:26.962: No devices found Попробую найти диод щоттки, но по осцилу падение напряжения особо не заметил, токи то ничтожные. Но все же завтра опробую с диодом шоттки. |
Так в случае с указанной платой диод вообще не нужен. Он нужен только для плат с встроенным буфером.
Вот картинка из документации на микросхему: http://habr.habrastorage.org/post_im...950f4a1c99.png И есть еще одно предположение - к каким ногам какого разъема подключался? Если к VGA - то все гуд. Если к однорядному разъему, который рядом с разъемом VGA - то следует учесть, что на нем перепутана маркировка линий i2c - SCL и SDA перепутаны местами. Это может быть причиной. Рекомендую прозвонить до разъема VGA их. П.с. Сейчас увидел осцилограмму в предыдущем посте. По ней видно, что RTD2660 не отвечает на запросы вообще. Каждый последний бит (9й) - это Ack. Если микросхема приняла байт - то она ответит нулем. |
Все большое спасибо добрый человек. Не догадался перепроверить, вот и верь теперь документации. Спаял без диода и поменял местами SCL и SDA и микросхема стала определяться. Теперь все пишется и читается. Еще раз спасибо.
|
Ура! Это радует!
Глупый вопрос. Кто-то знает, можно ли получить доступ к шине DDC (I2C) через драйверы видеокарты? Подозреваю, что можно. Даже когда-то был такой проектец - WinI2C/DDC. Но он заглох, и либу эту я нигде не нашел. Везде либо ссылка на их сайт, на котором ее давно уже нет, либо ссылка на exe загрузчики, которых я боюсь ). Больше пока ничего не нагуглил.. Если такое возможно - то можно было бы программировать чип прямо через видеокарту, без использования внешних программаторов. |
Нашел, что да, в драйверах есть возможность вызывать методы I2CRead, I2CWrite, I2CStart, I2CStop. Вроде то, что нужно. Но есть одно но. Для драйвера доступно, а вот как с использованием существующего драйвера видеокарты получить доступ к столь низкоуровневым функциям без написания собственного драйвера - для меня загадка.
|
http://habrahabr.ru/post/217583/ думаю данная статья может быть интересна
|
Пасиба, читал.
Странный у него телевизор. У него стоит просто еепром, которая причем не защищена от записи... |
Цитата:
|
Его опыт только под линухом. Учитывая, что мало у кого стоит линух, и мало кто захочет себе его ставить ради перепрошивки, нам это не пойдет.
Под виндой я пока не нашел как получить доступ. Только из драйверов. Но свой драйвер для этого писать я еще не готов ни по знаниям и опыту, ни по затратам времени... |
Обновил программу в первом сообщении. Теперь появилось выпадающее окошко с идентификатором устройства, через которое будем программировать. Это позволяет использовать программатор в случае, если еще подключены одно или несколько других устройств на базе FT232. Например, GPS приемник, последовательный порт, ардуйна, и другое.
Стоит заметить, что есть ограничения: 1. Выбрать порт необходимо до выполнения каких либо действий. 2. Список портов получается только при старте программы. Далее при изменении конфигурации устройств в программе ничего не меняется. Автообновление конфигурации портов сделать можно, но нужно ли? |
Часовой пояс GMT +4, время: 14:02. |
Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot