E123
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Прежде всего перекачайте мой LodEdit, в нем новый .ini, в котором все модули названы "от Seagate". И немного "полезностей". Тогда дальнейшая терминология будет понятнее. https://yadi.sk/d/ps0J3Kns3A3KY9 Так вот, причину несовместимости я выяснил, а теперь дошли руки описАть это. В хедерах лоадера помимо контрольной суммы есть еще поле с датой/временем. Это время "билда" фирмвари. В хедере для 20D оно ВСЕГДА должно соответствовать ROM. Оно есть у CFW, CFW_DISK, OVLY и еще у некоторых модулей. Оно проверяется при загрузке. Не всегда. Правильное можно увидеть в хекс-редакторе поиском по сигнатуре. Если взять модуль CFW из ROM и для этой CFW предусмотрен "хвост на блинах" в виде CFW_DISK, то поиском по сигнатуре "17 06 03 13" вы найдёте нужные вам 64 байта хедера. Точнее оттуда нужно взять 8 байт с датой/временем/номером с 18h по 1Fh (подробнее - см. "Header.xls"). Размер и ид модуля там указаны чаще всего не верные. Почему? Не знаю. Точно также поиском в теле оверлея по сигнатуре "71 78 37 07" можно найти нужный хедер для этого оверлея. С оверлеями проще: мне не попадались ROM с проверкой валидности оверлеев, но это не значит что таких нет. В LodEdit я положил примеры, там есть лодырь с 20D, который заливается при помощи CTPM. В таком варианте проверки на валидность игнорируются в большинстве случаев. Подходит, если вы хотите поменять варь с простой (без 20D) на сложную (c 20D), в которой обычно сервисный функционал по-богаче, но не знаете на каком ABA лежит 20D. Теперь про CTPM(id41). Дербанится из сигейтовских "обновлялок". Подходят на несколько семейств (например на wyatt может подойти как от бринкс, так и от kahuna - может не совсем правильно помню семейства, но общий принцип такой), для CFW и SFW обычно (не всегда) разные. С её помощью можно записывать модули ROM и модули на блинах: 02 - DL_CFW 03 - DL_SFW 04 - DL_CAPM 05 - DL_SAPM 06 - DL_RAPM 0D - CONGEN XML 0E - IAP 22 - DL_BFWCTNR 23 - DL_BFWCTNR 24 - FWADAPT 42 - CFW 43 - SFW 44 - CAP 45 - SAP 46 - RAP 4B - SHELL и др. CAP и RAP пишутся так: Выравнивание по 512 байт обязательно. Вначале HDR+DL_PAD+HDR+DL_CTPM(последний нужен для своего семейства, но иногда подходит от других), затем HDR+DL_PAD+HDR(заполнить только размер блока и байт типа данных, КС можно не расчитывать), потом модуль адаптивов (без заголовка и контрольной суммы, он уже выровнен на 512 байт). Одним DL_CTPM можно записывать несколько блоков адаптивов подряд, группируя их друг за другом. (С SAP не разобрался, модуль записывается, но он в ПЗУ состоит из двух половин у каждой свой заголовок, а CTPM принимает только оба сразу, при этом неверно переписывает размер в заголовке первой половины.) CTPM получает все блоки, потом обрабатывает все сразу, при этом она: - переписывает заголовки модулей, указывая новый размер; - расчитывает КС модулей(!); - расчитывает КС сегментов(заголовок + модуль); после этого перезапускает FW и продолжает обработку лоадера. Все сегменты с id большим 41 записываются целым модулем, заголовки и контрольные суммы не пересчитываются. Выравнивание по 512 байт обязательно. PS. Крик души: Мужики, я уже понял, что вы понимаете меня через слово, но... спрашивайте, не стесняйтесь! Каждый ваш вопрос "по-существу" помогает что-то понять. За два года года копаний в лоадерах было только ДВА(!) вопроса. Больше тысячи скачавщих LodEdit. Отзывы в основном "да!", "cool", "great"... У меня, блин, не грузится, а у всех всё работает... |