okt9i6pehok
Большая деревня сообщений: 80 |
#1092 Дата 20 июл 2014 17:00
Нет симка не стоит, иногда бывало мерцал когда USB передергивал т.е. в режиме загрузки находился. Так вот
Исходные данные: модем HUAWEI E1550, FullFlash E1550 128 Mb, БЭД блоки в памяти модемема: C5; 19E.
Короче вот что я делал:
Определил парсером X-parser (можно и Revskils) сектора:
MIBIB: первый блок - 0; последний блок - 9;
SIM_SECURE: первый блок - A; последний блок - F;
QSBL: первый блок - 10; последний блок - 13;
OEMSBL1: первый блок - 14; последний блок - 19;
OEMSBL2: первый блок - 1A; последний блок - 1F;
AMSS: первый блок - 20; последний блок - 9E;
FOTA: первый блок - 9F; последний блок - A0;
EFS2: первый блок - A1; последний блок - F4;
MMC: первый блок - F5; последний блок - 3D6;
OEMINFO: первый блок - 3D7; последний блок - 3FF.
Далее видно, что БЭД блок C5 попадет в сектор EFS2, а БЭД блок 19E в секторр MMC.
При просмотре в конце сектора EFS2 резервного места не обнаружено (вместо FF FF FF .. присутствуют различные символы).
При просмотре в конце сектора MMC обнаружено много резервного места (несколько последних блоков этого сектора заполнены FF FF FF ..)
(Немного не понятна разница между пустым и резервным блоком)
Затем конвертирую FullFlash в FullRaw через raw-damp-maker.
Открываю WinHex-ом FullFlash нахожу партишн табличку введя в поле поиска текста MIBIB, партишн табличка - адреса от 40800 до 4092F. В секторе EFS2 по адресу 408E4 стоит A1(начало сектора), а по адресу 4080E8 стоит 54(длина сектора в блоках). Далее в секторе MMC по адресу 40900 стоит F5(начало сектора), а по адресу 40905 стоит 2E2(длина сектора в блоках).
Поскольку у меня нет резервного места в конце сектора EFS2, то буду использовать резерв сектора MMC. Для этого корректорую партишн табличку: в секторе EFS2 по адресу 408E4 оставляю A1(начало сектора), а по адресу 4080E8 ставлю 55(длина сектора в блоках), затем в секторе MMC по адресу 40900 ставлю F6(начало сектора), а по адресу 40905 редактирую на 2E1(длина сектора в блоках). Отрезаю кусок длиной 0х800 из FullFlash с измененной партишн таблицей: адрес начала 40800 адрес конца нового bin файла 40FFF, сохраняю как partition_40800_40FFF.bin.
Открываю Revskils -> Extraction -> Repair -> Nand spare generator and Cutter, в nand page size оставляю галочку - Page size 0x200 bytes (можно и Page size 0x800 только тогда коды Рида-Соломона сгенерируются в конце файла в виде 4 строк) коды Рида-Соломона (Р-С) будут вставляться через каждые 0x200 по одной строчке, в поле Nand variant ставлю галочку на 3-bit Reed-Solomon, нажимаю
Generate Spare выбираю ранее сохраненный файл partition_40800_40FFF.bin появится окно Info нажимаю Ok, захожу в ту папку где был сохранен partition_40800_40FFF.bin и вижу новый partition_40800_40FFF.bin.spa, открываю его WinHex-ом и вижу что изменилась только одна строчка 0x200 по сравнению с открытой партишн табличкой но уже файла FullRaw (его надо открыть на строчке 42A40), меняю строчку 42A40 в FullRaw.bin на строчку 0x200 из partition_40800_40FFF.bin.spa. Теперь в FullRaw.bin (не FullFlash.bin) корректирую партишн табличку: в секторе EFS2 по адресу 42924 оставляю A1(начало сектора), а по адресу 42928 ставлю 55(длина сектора в блоках), затем в секторе MMC по адресу 42940 ставлю F6(начало сектора), а по адресу 42945 редактирую на 2E1(длина сектора в блоках), т.е. также как в partition_40800_40FFF.bin. Теперь поскольку будем вставлять по 1 нуленому блоку в соответствующие сектора EFS2, MMC (в том же FullRaw.bin), постольку надо вырезать 2 резервных блока в секторе MMC, чтобы сохранить общий размер файла. Вырезаем блоки в конце сектора MMC - это 3D5 и 3D6 (адреса от 7E75000 до 7EB6FFF) (DEL).
Далее создаю новый блок с адресами 0 - 20FFF, заполненный нулями: nule block.bin. Перехожу в FullRaw.bin (с редактированной партишн табличкой, кодами Р-С и отсутствующими блоками 3D5 и 3D6) по адресу начала БЭД блока C5 (1965000), копирую нулевой блок в буфер (CTRL+A, CTRL+C), вставляю (CTRL+V) в FullRaw.bin. Далее по адресу БЭД блока 19E (355E000) копирую нулевой блок в буфер (CTRL+A, CTRL+C), вставляю (CTRL+V). При проверке конечный адрес файла FullRaw.bin должен быть 83FFFFF, сохраняю как FULLRAW_ispravlen.BIN. Теперь проверяю что покажет парсер. Для этого конвертирую обратно в FullFlash через nand_converter.exe, получаю какой-то файл, который пропускаю через X-Parser_FREE. Все нормально длины и начала секторов EFS2, MMC изменились. Заливаю FULLRAW_ispravlen.BIN в модем. По окончанию записи модем не оживает!!!
Пробовал редактировать также еще одну партишн табличку там же в FullRaw.bin соответсвенно с кодами Р-С и заливать не помогает.
Далее пробовал редактировать начало первого блока (адрес 21000) там где указываются количество и адреса (идут через каждые 3 пары нулей) БЭД блоков соответственно коды Р-С тоже менял для этого 1-го блока - не помогает.
При анализе этих 2-ух партишн таблиц выяснил что между ними существует еще одна, но там не понятны 2 значения для каждого сектора, что они определяют ума не приложу. Такая же табличка идет за второй партишн табличкой. Видимо еще в них нужно что-то менять, не знаю. Думал там указывается количество свободных и занятых блоков, но например по значениям 3D и 280 для сектора AMSS не получается, т.к. этот сектор начинается с блока №20 и заканчивается на блока №9E, т.е. его длина всего 7F.
Может быть еще покрутить со свободным местом в секторе OEMINFO? И как различить блок резервный он или пустой, нужен ведь именно резервный?
|
okt9i6pehok
Большая деревня сообщений: 80 |
#1097 Дата 21 июл 2014 11:16
Появилась совершенно сумашедше-непроверенная идея запихнуть в модем с памятью 128 Мб фул от 64 Мб с определенной корректировкой фула может и получится уже ему модему и так по ... . Вот что натолкнуло раз у меня 2 бэд блока C5, 19E, и я их ни как в памяти модема не могу обойти, то запихну ка я поменьше файл в ту часть памяти модема которая не бита, т.е начиная например со следующего после битого, блока 19F и до конца - 3FF у меня есть около 78,5 Mb памяти, а мне надо всего 64 Мб осталось только покумекать как это все провернуть ведь в фуле 128 Мб блок размером от 0 до 20FFF, а в фуле 64 Мб размер блока - 0 - 3FFF.
|
okt9i6pehok
Большая деревня сообщений: 80 |
#1099 Дата 21 июл 2014 23:18
sergey67, понятно, у меня пока все идеи закончились, и к стати хотел спросить а может у меня флэш еще не та может не 128 Мб, а 64 Мб (процессор MSM6240). Хотя при заливке фула определяется как 128 Мб.
|