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

  • Автор темы Автор темы AzzzX
  • Дата начала Дата начала
@Vladistone, не ищите мафию там, где её нет. ;) Я исхожу из самых положительных побуждений - имея возможность апдейтить девайс, люди спешат таким образом вывести на рынок максимально полнофункциональное устройство, но чем шире функционал - тем больше вероятность появления как самостоятельных багов, так и комбинационных... отсюда имеем то, что имеем.
P. S. Так как сам отчасти являюсь "криворуким тестировщиком", то могу сказать, что никто не хочет выпускать плохие решения. Но время, время...
производственный цейтнот еще известен был при 5-тилетках СССР... куда без него...
И фирмачи именитые тоже косячат в гонке музыкальных вооружений, а после них люди переписывают "народные OS"... но то была гонка в неизведанные дали синтеза и переломный моменты между аналоговой эпохой и digit.
А тут-то что такого свехестественного в прошивке МК? с 32-мя или сколько там крутилок-кнопочек для управления и генерации MIDI-сопоставлений? :Dle47:
 
Последнее редактирование:
...а в современном телефоне вообще кнопок нету (или одна - весь экран), а поди ж ты... "кирпичатся" постоянно. :D:D:D
мы сейчас об адекватности кодеров? или так, в качестве музыкальной паузы собирательный образ современных девайсов рисуем?
ЗЫ: кстати, вот еще один проект без наличия косяков в исследуемом предмете и безграничный по времени и идеям вырисовывается... нужен совет по делу... (извиняюсь, за текущий off top а так же прими поздравления @AzzzX за ожившего AKAI-буратино)
Но особые аплодисменты - маэстро @razor за его блестящие рекомендации и общение на форуме... :Dle4:
 
Последнее редактирование:
мы сейчас об адекватности кодеров? или так, в качестве музыкальной паузы собирательный образ современных девайсов рисуем?
Скорее второе. Надо завязывать, а то действительно в оффтоп выливается.
 
Я что-то не слышал, чтобы перед записью нового апдейта хоть один "фирмач" прям вот ОЧИЩАЛ носитель.
Там механизм немного другой. Дело в том, что это т н средний МК(по их классификации, а точнее по объёму памяти). У него штатно доступна прошивка только через интерфейс программатора или по UART. А вот в старших моделях уже можно шить и по USB, и по CAN, и по Ethernet(где он есть). Но наверное в Акае посчитали и решили что так дешевле.

В результате у них задача стояла так - наладить программирование средствами самой прошивки. Зачем они сделали то что сделали, я не знаю, но получается что прошивку они кладут с адреса 5000, а при этом она же с нулевых адресов не умещается, т е она больше 5000. Почему выбрали такой адрес, непонятно, м б загнать выше и тогда было бы всё проще.
Фигня в том, что МК стартует с нулевых адресов. Более того, в руководстве прописаны адреса векторов прерываний, которые судя по всему зашиты в железе. Т е скажем идёт прерывание по таймеру - МК лезет в оговоренные адреса, а там адрес перехода.
И эта таблица тоже не м б перемещена и находится около начала прошивки.

Сейчас получается, что стартует прошивка с нулевых адресов(это зашито аппаратно), а потом переходит в 5000-е и исполняется там. При этом по идее(я не всё знаю, это предположение) в начале нужна только часть, а в 5000 адресе она не нужна, ибо там исполняться не может. А сейчас имеем 2 копии начала прошивки, в которых используется только половина.
Я далёк от мысли, что они писали прошивку в кодах, а никакой вменяемый язык после компилирования такое сделать не может(ну, мне так кажется:)), если это не заложить специально.

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

Собственно проблема в этом одна. Если мы исполняем код из нулевых адресов, то перезаписать его мы не можем.
Аналогично, если код исполняется из 5000 адресов, то теперь мы его переписать на лету не можем.
Ибо записи в этом МК предшествует стирание блока 1к. А только потом запись.
Как решается эта проблема, я так и не понял. Скорее всего какой-то кусок прошивки при переписи работает всё же из нулевых адресов. Раз получилось, что основная прошивка лежит с 5000.
Но как выяснить, какой и где, не знаю. По идее надо копать код на предмет каких-то характерных кусков, но каких - я ещё не знаю. А т к это потребует намного больше времени, чем то что было до этого, то боюсь что и не узнаю.:) Ибо есть ещё работа.
 
  • Like
Реакции: Vladistone и Ocean

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