Помогите "раскирпичить" AKAI MPD218

  • Автор темы Автор темы AzzzX
  • Дата начала Дата начала
Поддержка поделилась, толко файликом MPD218_v1_01.upd , без MIDI updater.exe
Понял. Он у меня есть, просто подумал, что вдруг есть какой-то способ.

нужна прошивка, для загрузки на МК через программатор
Просто для программатора. Уточнять наверное не стоит. Если дадут, то будет пректрасно. Это сильно всё упростит.

Они вставились с натягом, после чего программатор подключился к МК и мне удалось скачать прошивку.
Ну и ладно, главное что контакт нормальный. Судя по тому что все три файла идентичны, считалось правильно.
А вот записалось ли в процессе апдейта - неизвестно. Иначе с чего ему окирпичиваться.

может комп увидит контроллер
Да, вдруг проблема не в проце и прошивке. Хотя ... Но убедиться стоит.

распознавался в системе как MPD218 (Port A)
Интересует что-то вида HID\VID_1241&PID_1166&REV_0280
Конкретно такой ID у моей мышки, тут д б что-то другое.
Это находится в диспетчере задач на вкладке Details и там выбрать Hardware. Вроде был какой-то способ посмотреть не только текущие устройства, но и те, что побывали в системе.

Серийный N в личном сообщении
Да, в прошивке, слитой из МК, он нашёлся. Так что если вдруг всё же дадут файл, наверное м б поправить. Хотя с другой стороны какая разница, какой там номер? Всё равно гарантия кончилась.:)

Вторая ссылка мне уже попалась, а вот первую не видел. Но в обоих вариантах нет бинарников, а мне интересны именно они. Компилировать я не умею, да и софта нету, его надо ставить и изучать.

Понемногу начинаю понимать, что там и к чему, но идёт тяжко. Благо нашёл некое описание отпрошаренного, кое что прояснилось. И пока что это основы, а там до хрена всего. Если интересно то вот тут
В основном первые 2 части, дальше уже не то что нужно.

Главное что понял, то что переход по адресу из начала прошивки вроде работает, а вот туда ли он(или точнее то ли находится в этом месте), не понятно. Или всё стопорится сильно дальше.
Нормального симулятора для STM не нашёл, а в дизассемблере(IDA pro старый, ибо у меня 7-ка) пока плаваю, несмотря на то что вроде понял, как туда правильно засунуть прошивку. Там вроде была функция "начать с адреса", по крайней мере с х86(ковырял биос материнки) я это делал. Почему чейчас не вижу, не знаю. А было бы интересно указать конкретный адрес и посмотреть, как она это интерпретирует.

Наверное придётся немного тормознуть, ибо завтра приедет приятель с pic-контроллером, надо найти где у него счётчик наработки, тоже в прошивке.:) Надо понять,стоит ли менять датчик, ибо похоже, что просто настал момент, когда у него кончился срок работы. Он химический и в документации указан срок работы 10 лет. Но контроллер-то про замену ничего не узнает. Т е его надо как-то сбросить. Штатно это не предусмотрено.
А послезавтра должны довезти память и вентиляторы, поэтому займусь сборкой игрового компа другому приятелю, это займёт некоторое время, с установкой софта и т д. Там паузы конечно тоже будут, но времени на развлечения с STM будет поменьше. Впрочем голова думает независимо, иногда какие-то мысли приходят совершенно в неподходящее время.:)
Но задачка интересная!
 
Поддержка с прошивкой не помогла.
Жаль конечно, но ожидаемо.

В принципе можно попробовать зашить туда напрямую то, что у меня получилось вытащить из штатных файлов. Причём я сделал это как для последней прошивки, так и для старой.
Для этого н б стереть родную прошивку и залить другую. При необходимости можно всегда залить то, что там было, файл же есть.

На что рассчитываю. На то что прибор как-то запустится и определится на компе. А дальше м б залить прошивку заново, но штатными средствами. Без этого вряд ли возможна полноценная работа.
Единственное, пока не понял, как туда вкрячить серийник. Дело в том, что вытянутая из файла прошивка намного меньше слитой из МК. Хотя наверное можно добавить FF до нужного объема и вставить серийник по такому же адресу, как и в слитой прошивке. Будем надеяться что он никуда не сдвигался в процессе неудачного обновления.

Можно пойти другим путём, но он менее предсказуем. Но при этом пока не будем трогать сам девайс.
Можно попробовать прошить ту плату, которую Вам продали под видом программатора. МК похожие(на платке чуть покруче, чем родной), возможно что-то получится. Просто чтобы проверить гипотезу. По идее если платка определится как Акай, этого будет достаточно. Дальше н б уже делать то же самое с самим прибором.
Прошивать придётся St-Linkом, как подключить его туда, н б посмотреть. Но вроде схема на него в инете есть, не думаю, что там будут сложности.

Кстати, а та плата как-то определяется компом? Если да, то как? Что в диспетчере устройств?
Ну и на всякий случай - где Вы територриально? А то м б всё проще? :)
Мне чтобы проделать этот вариант самому, н б купить такую плату. Она недорогая(300р), но мне н б кого-то туда засылать, иначе доставка сделает её вдвое дороже.

Зато правда м б попробовать добавить в программатор ещё один проводок, с тем чтобы заработал режим дебаггера. Но это если понадобится. К тому же пока не представляю чем смотреть. Дело в том, что обычно все среды программирования рассчитаны на текст программы, а у меня только бинарный файл. Есть ли что-то, позволяющее отслеживать перемещение по адресам например, а так же регистры и т д, не знаю.

Кстати и по симуляторам пока ничего не нашёл - все пишут что купите отладочную плату(типа первой Вашей покупки) и не колупайте мозги. Ибо полноценного симулятора этого МК похоже нет.
Например мой дизассемблер(как говорят - лучший, но он старый, новый уже не поставить) никак не знает про таблицу прерываний, а оказывается она идёт в самом начале прошивки. Это я в ручном режиме выяснил.
Ну и ещё проблема в том, что у меня везде 7-ки, не любой софт уже можно под неё поставить. И ещё надо с ним разбираться. А на этом компе ещё и х86, под такой вариант вообще мало что есть. Второй комп с х64, но я никак его не приведу в порядок - надо заменить батарейку, что тянет за собой пылесосение, а так же установку дополнительного диска(раз уж полезу:)) и ещё возможна что-то с вентилятором процессора. Он что-то медленно стал крутиться. В общем полдня минимум, а у меня их сейчас в светлое время суток нет. А вечером даже с лампой на голове неудобно.

Поэтому для начала я бы попробовал прошить либо сам прибор, либо платку, а там будет видно, по обстоятельствам.
Если будете пробовать, я тогда выложу файлы. Интересно, в личку тут можно такое? Ибо не хотелось бы светить в инете непроверенными прошивками. Ну или выложу на Яндекс-диск и дам ссылки в личке. Но это если будете пробовать.:)
 
  • Like
Реакции: AzzzX
Так, походу с вариантом прошивки я поторопился.
Не всё так просто, требуется дальнейшее разбирательство.
О результатах чуть позже - работу подвезли, пока некогда.
В двух словах - надо проверить некоторые идеи насчёт расположения по адресам. Проверка - это попытка понять, что МК будет делать при старте, адрес, откуда начнётся само выполнение(в начале прошивки только указатель и он наверное может измениться при процессе обновления прошивки, на каком этапе оно застопорилось можно только гадать).
Но есть предположения, которые и надо проверить.
 
  • Like
Реакции: AzzzX
Пробовал подключить просто платку с МК, без кнопок и крутилок. прибор не определился.
У меня не Win, а linux mint)
Кстати, а та плата как-то определяется компом? Если да, то как? Что в диспетчере устройств?
Есть программка RaySession, где показаны все мои подключенные миди приборы и аудио выходы/входы аудио карты. До "прошивки" контроллер определялся в ней как MPD218 (Port A) Вот эта прога: https://raysession.tuxfamily.org/en/

Я готов пробовать, загружать прошивки в эмулятор BluePill STM32 и в сам контроллер, через ST-Link, хуже уже не будет. Тем более всегда можно загрузить обратно уже имеющийся выхлоп с МК.

Идеи (насколько трезвые не знаю)):
1. Может, припахать ИИ специализирующийся на программировании. Пусть пошерстит код. Есть ли у Вас опыт работы с ним? У меня самый начальный уровень.
2. Может, есть какая то минимальная базовая прошивка, от создателя MK ST32, загрузив которую прибор определится в RaySession, хотя бы в виде неизвестного девайся.
3. Может можно, скачать "выхлоп" с рабочего прибора MPD218 без программатора и не разбирая его, ведь теоретически, у кого-то он будет виден в системе. Какой то добрый человек, который имеет работающий контроллер, вдруг захочет помочь.
4. Что будет, если загрузить искомый выхлоп через ST-L на BluePill? Может тогда, BP определится не компе и станет ясно,,, что дело не в прошивке?
 
прибор не определился.
Понял. Впрочем надежда была небольшой, ибо то что я сейчас накопал явно указывает что прошивка битая.

У меня не Win, а linux mint)
Понял, тады ой.:)
Как там посмотреть в Linux то, что интересновало, не знаю Прсто подумал, что идентификаторы эти д б где-то в прошивке. Но как они выглядят, не знаю. Вот и хотел поискать по кодам.

контроллер определялся в ней как MPD218 (Port A)
Последнее судя по всему вообще имеет отношение к МИДИ, ну а MPD218 конечно встречается, но вряд ли это то что я искал. Впрочем наверное уже не важно, накопал кое что другое.

готов пробовать, загружать прошивки в эмулятор BluePill STM32 и в сам контроллер, через ST-Link, хуже уже не будет
Я тоже так думаю, можно же всегда вернуть обратно то что слили из МК.
С BluePill немного не так вышло, я почему-то сразу не увидел, что в нём меньше памяти. Но при этом выше частота, в 2 раза.
Первое возможно не помешает, я вроде прикидывал - останестся около 900байт незанятых, м б это не критично(хотя не уверен). А вот второе - как в прошивки сделаны установки частоты(её там можно менять) не знаю, даже пока не знаю, в какой части это выставляется.

припахать ИИ специализирующийся на программировании. Пусть пошерстит код.
Было бы неплохо, но я вообще никогда не занимался с ИИ. И ещё я не уверен, что там что-то получится именно в двоичном виде. Обычно под кодом понимается что-то на ЯВУ, а у нас этого нет.
Вообще как-то очень мало материалов именно по двоичному коду STM, в лучшем случае ассемблер, но у нас даже его нет. Мои эксперименты с дизассемблером пока так ни к чему не привели. Надо его обновлять, может тогда. Но для этого как минимум надо сделать рабочим большой комп, ибо на стенде, где сейчас сижу, 32-битная 7-ка. И для неё у меня верхняя версия, но её уже наверное много лет.

какая то минимальная базовая прошивка, от создателя MK ST32
Я пока не копал в эту сторону, но дело в том, что это всё написано на ЯВУ. Т е для того чтобы прошить в STM, надо ставить кучу софта, который возможно ещё на стенде и не заработает. Пока оставляю на случай, если ничего не получится.

скачать "выхлоп" с рабочего прибора MPD218 без программатора и не разбирая его
Не знаю. Формально конкретно в этой модели STM поддержки программирования через USB нет. Есть в более старших, там наверное можно. Здесь же какой-то хитрый способ штатной прошивки, который я и надеялся использовать для окончательной прошивки. Но для этого как минимум надо как-то запустить прибор.

Что будет, если загрузить искомый выхлоп через ST-L на BluePill?
Скорее всего ничего. Почему-то мне кажется, что сам МК в приборе исправный. А произошло что-то типа кратковременного пропадания питания во время перепрошивки. Шнур пошевелился или ещё чего.
Но в конце концов процы вроде продаются, я менял подобные - особо сложного ничего нет. Нужен паяльный фен, флюс и прямые руки. Собственно процесс многократно показан на Youtube. Главноая проблема для меня была в точном позиционировании новой микрухи на плате, она всё время норовит съехать. Ну и запаивал обратно я паяльником, кмк так проще и меньше возможность что либо сломать. Потом просмотрел с лупой ножки, подправил кое-где пайки, убрал лишний припой оплёткой(в некоторых местах получились перемычки). Паял тоже с лупой. Вроде всё заработало.
Но всё же думаю, что сам МК тут не при чём.


Пока у меня вот что получается. То что я вытянул из прошивки с сайта, имеет указание на адреса, по которым располагается. И они отличаются от тех, где потом оно находится в рабочей прошивке.
Вроде пока получается так. Прошивка заезжает в МК с адреса 5000. И по некоторым признакам она сделана так, что должна там же и выполняться.
Но вот тут пробел. По идее она должна начинаться с нулевых адресов.
Кстати сразу замечу, что они нулевые только в файле, в сам МК оно кладётся с адреса 800 000. Все в 16-ричном виде ессно.

Чтобы залить новую прошивку надо чтобы старая функционировала, а она побилась. Там видно прямо по границам блоков(1кБ) что она местами есть, а местами FF, т е ничего не прошито. Ну и сами значения местами сильно отличаются в тех частях, которые остались.

А дальше вопрос, на который у меня пока нет ответа. Наверняка за USB отвечает какой-то кусок, вся прошивка целиком постоянно не крутится. Мне бы понять, где этот кусок. Для чего хочу на досуге поизучать, как МК работает с USB. Может найду чего то похожее.

Пока мне представляется , что затянув новую прошивку на адрес 5000, что-то внутри МК, возможно по команде снаружи, начинает переписывать её в начало. Но не просто, а с изменением некоторых кодов.
Дело в том, что в начале прошивки есть таблица векторов прерываний, про неё известно из описания железа МК. И там расписаны адреса, где она должна располагаться.
А ещё в самом начале есть указатель на первую команду, и в той части, которая начинаетсяв с 5000, к этим адресам добавлена 5-ка, т е вместо скажем адреса 100 в слитой прошивке в той что с сайта - 5100.
Фигня в том, что я могу отследить только то, что мне известно. Но если где-то дальше есть отсылка к абсолютным адресам, я это никак не увижу. Если там только относительные, то по идее всё должно работать. Если бы нормально всё дизассемблировалось, то м б бы по крайней мере увидеть, где такие адреса есть ещё.
Кстати пока писал, пришла в голову одна идея, н б попробовать указать 800 5000 в качестве адреса загрузки в дизассемблере, может что и изменится. А то я её пихал в 800 000, а она-то похоже на это не рассчитана. Может вечером.

С переписыванием в начало есть ещё одна фигня. Та часть, которая переписывает код из одного места флеша в другой(это можно делать по 1кБ), по идее д б вне адресов, занимаемых исходной прошивкой и новой. Но там я ничего не нашёл. Что это означает, я не знаю.
Могу только предположить, что эта часть в принципе наверное может находиться и в новой прошивке(с 5000), вроде при перезаписи они не пересекаются по адресам. Или пересекаются.:) Смотрел, но уже не помню.
Короче смысл в том, что кусок, который осуществляет переписывание прошивки в начало, при этом не должен затереть сам себя.
Ну и как потом меняются адреса в начале, тоже не понимаю. По идее должны делать это на лету, чтобы в начало писать уже адреса без 5-ки. Там где они указаны в самом теле прошивки в явном виде.

Пока что была идея попробовать положить новую прошивку в 5000, а в начале поправить пару битов, чтобы оттуда шла ссылка не на начало флеша, а сразу на 5000. Ну и как минимум прокатать в дизассемблере этот вариант, вдруг что-то осмысленное получится. Ибо сейчас прошивка с сайта хоть и имеет какой-то разумный вид, но похоже из-за адресации в лог пишет кучу ошибок.
Но это надо ещё помозговать, пока не готов выдать что-то для экспериментов. Ну и всё замедляется работой, которую сейчас делаю. Там тоже оказались сюрпризы, хотя казалось бы.:) То что обычно делаю за пару часов, заняло почти день.
 

Сейчас просматривают