Sega MegaDrive – флэшеризация картриджа (DY2488).Превращаем одноразовый картридж в перезаписываемый.При взгляде на устройства с не распаянными компонентами всегда возникает мысль о допайке отсутствующего с целью получения полного функционала или его вариативности заложенной разработчиком. Многие новодельные картриджи для Мегадрайва построенные на масочном ПЗУ-«кляксе» имеют на плате также разведенное посадочное место для микросхемы формата SOP44, а также еще под разную мелкую логику одно или даже несколько посадочных мест. На чем сэкономили? И какой полный функционал мог быть у такого картриджа - задавался я неоднократно вопросом, а вместе с тем и мыслью о возможности установки вместо масочного ПЗУ (изящно отключив его) микросхемы флэш-ПЗУ с возможность ее программирования без выпаивания – т.е. через разъем слота. Флэшеризация масочного картриджа – взгляд издалека. Идея появилась в желании совместить почти «приятное с полезным», а вернее из двух ненужных финтифлюх сделать одну пригожую, да за одно: и «скил прокачать» чуток, и статью написать - ибо ничего подобного, погуглив на вскидку, найти не удалось. В роли «ненужностей» выступили несколько масочных новодельных Сега-картриджей (этак где-то 2010-х годов) с бесполезным мне контентом (который, тем более, все равно был задамплен), а также модуль со шрифтами от какого-то архаичного принтака, содержащий в себе пару микросхем флэш-ПЗУ - да не каких-нибудь, а интеловских: 16-ти битных, размером в полмегабайта каждая (PA28F400). Экземпляр картриджа был выбран самый НЕинтересный с точки зрения контента и добротный с точки зрения разводки. Целью стало, с минимальным вмешательством в схемотехнику, получить наиболее изящное и наименее «колхозное» решение, позволяющее использовать в качестве интерфейса программирования монтируемого флэш-ПЗУ картриджа программатор Flashkit-MD разработки krikzz, а рестайлинга и производства KY-Tech (в официальном магазине которых на алиэкспрессе я его и приобрел в паре с разработанными и изготовленными «по идентичной схеме взаимодействия» картриджами). Т.к. топология печатных плат, а вместе с этим и исходные коды к программатору как для CPLD, на которой он построен, так для компа под винду открыты – китайцам не пришлось заниматься реверс-инженерингом, а вместе с этим и нарушать авторские права. Не придется класть болт на них и мне … Оценка схемотехники масочного картриджа DY2488. Детальное изучение трассировки картриджа поначалу принесло некоторое разочарование, а затея чуть ли не была признана не реализуемой с учетом требования «изящности». Так как штатное «каплевидное» ПЗУ масочное (т.е. кристалл записывается еще до установки и пайки на плату) – то схемотехника платы ни разу не предусматривает возможность записи в него (даже однократной), это и понятно. Но меня интересовало больше не это: каплю и так планировалось просто отключить, что сделать легко: нужно лишь деактивировать входы выбора чипа или разрешения вывода (CE или OE). Важнее разводка посадочного места формата SOP44, которое должна занять флэшка – уж там точно не масочное ПЗУ планировалось ставить, а … Что тоже не удивительно, но печально – его должна была занять однократно программируемая во внешнем программаторе перед установкой ROM (PROM), а поэтому из 44-х ног микросхемы площадки есть лишь под 43 (нет под Vpp). Но не унываем, изучаем доку на нашу 28F400, прозваниваем и срисовываем коммутационную карту всего картриджа: если что - то и «залипуху» лишнюю прилепим или снимем, да и проводочек маленький кинуть недалече накрайняк тоже можно. А зачем две микросхемы на картридже? – а мелкая логика что делает? Но сначала по см. рисунки (по клику крупнее) и линии связи, которые вырисовались в результате. Четырнадцатиногая логика (изначально предположив по маркировке «00») – это 74LS00, т.е. 4*2И-НЕ, ее наличие, как и наличие второго ПЗУ помимо масочной «капли», реализует схему последовательной адресации адресных пространств двух возможных микросхем ПЗУ. Причем первым (по младшим адресам) будет ПЗУ в корпусе SOP, а затем «капля». Размер ПЗУ может варьироваться от 4Мбит (512кбайт) до 8Мбит (1Мбайт) – т.е. максимальный объем картриджа 2Мбайта. Получать 1Мбайт в виде двух микросхем – было бы странным решением, т.к. его можно достичь и одной масочной «каплей». В моем же случае (не знаю истинный размер масочного ПЗУ, возможно 1Мбайт) картридж использует «каплю» лишь на полмегабайта (4Мбита). Что нам нужно для работы с флэшкой 28F400? Программатор-дампер Flashkit, позволяющий «внутрисхемно» программировать картриджи через штатный слотовый разъем, в качестве сигнала WE используется контакт B28 слота картриджа Сеги (сигнал #LWr) – что вполне логично и удобно: в режиме чтения картриджа в рамках его работы в приставке на этой ноге высокий уровень, гарантированно удерживающий ПЗУ в режиме чтения. Программатор же, используя эту ногу, варьирует сигналом #WE и в соответствии с заданным алгоритмом обеспечивает возможность «записи» (передачи информации в сторону) микросхемы флэш-ПЗУ. На нашем картридже B28 не разведен от слова «совсем», не иначе как придется кидать как-то отдельный провод – тут без вариантов. А что еще нужно сделать? Аппаратная часть - модификация картриджа.
Программная часть – последний штрих. Проект Flashkit опенсорсный, что несомненно благо: хоть и изучение пусть простого но чужого кода да еще и без комментариев - занятие неблагодарное. Пару дней потратил, потестил – в результате объединил и сделал «мультисофтину». Старый (штатный) функционал сохранен и даже несколько причесан и облагорожен как визуально, так и чуток технологически. И самое главное – добавлена возможность работы с модифицированным картриджем DY2488 – теперь уже «flash», а вернее с микросхемой флэш-ПЗУ Intel PA28F400 на него смонтированной. Собранную версию (которую я назвал «plus») вместе с исходниками можно скачать и использовать всегда (в т.ч. вместо базовой от krikzz). PS. Что еще добавить? Флэш-ПЗУ 28F400 весьма древнее и технологически вобщем то и не «флэш», а EEPROM – т.е. запись исключительно побайтная («пословная» в нашем случае), больше накладных расходов на управление микросхемой, нет еще и … много чего придуманного позднее. Не суть. Еще что? - как показали тесты: флага готовности байта статуса можно и не ждать – пока мы передаем программатору команду для записи следующего слова, запись текущего успевает завершиться – но все равно с учетом объема не быстро (хотя если по честному читать и ждать флаг то еще медленнее). Но этот флэш-картридж не отладочное средство, пару минут можно подождать – результат гарантирован. В исходниках закомментированы и прокомментированы разные варианты реализации записи – оставлен и скомпилирован самый шустрый и рабочий (хотя с точки зрения документации несколько «недокументированно сокращенный»). PPS. В гугле и не только по запросу «28F400» получаешь с наибольшей релевантностью ссылки на всякие марки автомобилей … Внезапно. Просто данная микросхема памяти используется в блоках ECU многих древних авто, как оказалось. И на всяких там форумах-блогах обитатели их с умным видом пыжатся и надувают щеки в тему (и без). А еще цена микрухи 28F400 на том же алиэкспрессе непомерна высока, что видать обусловлено не столько ее раритетностью, сколько популярностью именно среди автолюбителей и расчетом на их кошельки. MiGeRA (ноябрь 2021) | |