Главная Форум Статьи Файлы F.A.Q.


Последние активные темы форума

 
пробуем разобраться с j-link и модемами (134) 18.06.21 14:38 slav
Лаборатория по реанимации (207) 29.05.21 07:58 turon
Huawei E3131 (10) 22.05.21 17:27 mephody13
Флудилка (948) 06.01.21 12:00 Mikhail9977
   
RE: Восстановление модемов с помощью Z_Flasher-Reanimator_modem v-05 «NEW_RAW_RELEASE». ч2 (147) 08.12.20 08:50 palexxx
Модемы Alcatel (177) 04.12.20 15:08 mephody13
Убитые ZTE (442) 02.12.20 10:17 dima83
ZTE Corporation (254) 07.04.20 14:19 mephody13
 

Профиль

   
Логин: Пароль: Забыли пароль?Регистрация


пробуем разобраться с j-link и модемами
Форум > Jlink + QUALCOMM > пробуем разобраться с j-link и модемами

Страницы:
Автор Сообщение
 Energizer
администратор
глухая деревня
сообщений: 1204
#71 Дата 13 авг 2015 17:00
не помню уже но вроде как проблем нет его подружить -вот только зачем? вигглера мало? -6246\90 прекрасно дружит с вигглером - уровни согласуются резисторами без проблем-буфферный для этого контроллера блажь ;-)
кстати и кутулс должен работать с этим контроллером если модем в данлоад моде или есть диагностик порт- если портов нет то тогда только житаг - нету внутри начального аварийного загрузчика 9008 -его позже добавили квалкомовцы -когда видимо осознали проблему кирпичей
 den054
Nsk
сообщений: 3
#72 Дата 14 авг 2015 06:39
Wiggler это на последний момент. А пока есть ноут без параллельного и j-link китаец.

В сорцы "qualcomm_nand_jtag_direct_jlink" внедрил msm6246 и hynix AD36, проц и память распознаются, запись и чтение проходят, но есть одна засада..

Читает не то, что надо:
0000000 0134 0110 0195 0170 0120 0100 0100 0100

вместо:
0000000 1034 73d7 ebb5 00f4 0528 0000 0200 0000

Такое ощущение что попутаны Big-Endian с Little-Endian
а так же проблема с разрядностью(в читаемых данных через один байт вставляется лишний, в этом примере он 01, но он всегда разный).

Не сталкивались с таким?
 Energizer
администратор
глухая деревня
сообщений: 1204
#73 Дата 14 авг 2015 07:10
проблема в том что примеры из того архива не совсем пригодны для пользования - довольно долго объяснять-прямых аналогий почти нет , там есть отличаются - и самое важное это конфиг регистры управления расчетом кодов коррекции и организации нанда.
посмотрел на компе где делал сборки - флешера для 6246\90 под жилинк не делал
вот исходник для вигглера -из него увидите как правильно сделать чтоб заработало
jtag2.rar  
Отредактировано: Energizer 14 авг 2015 07:11
 den054
Nsk
сообщений: 3
#74 Дата 14 авг 2015 07:21
Благодарю! Буду пробовать, по результатам отпишусь.
 Energizer
администратор
глухая деревня
сообщений: 1204
#75 Дата 14 авг 2015 08:26
на самом деле можно просто сделать инклудный файл и передать через него функции записи чтения в адресном арм через жилинк - так сделано было в других исходниках что выкладывал выше - тогда ничего переписывать вообще не нужно - просто выдрать функции вигглера и их перенаправить. думаю что это наиболее короткий путь - хотя конечно то что я писал сильно отдает быдло кодом :-) но я ведь только учился программировать в те далекие времена ;-)



 dimitrus
Харьков
сообщений: 4
#76 Дата 15 авг 2015 20:14
den054,
Очень советую пользоваться J-Mem, можно открыть адрес nand контроллера, нарисовать блок схему последовательности чтения и отработать ее, только запись не проверяйте так, сотрете все :) Очень удобно и наглядно пошагово отработать код. Так же очень поможет J-Link Debugger или IDA.
Еще такой момент, очень советую читать данные не словом, а блоками используя функцию JLINKARM_ReadMem, размер блока - страница, обычно 512 байт. Скорость возрастет значительно, так же пробуйте увеличивать скорость поднятием частоты до 8Мгц, получите еще прибавку. Обратите внимание на конфигурационные регистры nand_cfg0/1 от них зависит внешний вид данных, возможно у вас в этом загвоздка.
Вот код функции которая тоже может помочь для определения конфигурации nand:
код:
void nand_hwinfo() {
  unsigned int cfg0=READ32(0x60000020);
  printf("\n **** NAND CFG0: 0x%08X *****",cfg0);
  printf("\n * NUM_ADDR_CYCLES              = %X",(cfg0>>27)&7);
  printf("\n * SPARE_SIZE_BYTES             = %X",(cfg0>>23)&0xf);
  printf("\n * ECC_PARITY_SIZE_BYTES        = %X",(cfg0>>19)&0xf);
  printf("\n * UD_SIZE_BYTES                = %X",(cfg0>>9)&0x3ff);
  printf("\n * CW_PER_PAGE                  = %X",((cfg0>>6)&7) | ((cfg0>>2)&8));
  printf("\n * DISABLE_STATUS_AFTER_WRITE   = %X",(cfg0>>4)&1);
  printf("\n * BUSY_TIMEOUT_ERROR_SELECT    = %X\n",(cfg0)&7);

  unsigned int cfg1=READ32(0x60000024);
  printf("\n **** NAND CFG1: 0x%08X *****",cfg1);
  printf("\n * ECC_MODE                      = %X",(cfg1>>28)&3);
  printf("\n * ENABLE_BCH_ECC                = %X",(cfg1>>27)&1);
  printf("\n * DISABLE_ECC_RESET_AFTER_OPDONE= %X",(cfg1>>25)&1);
  printf("\n * ECC_DECODER_CGC_EN            = %X",(cfg1>>24)&1);
  printf("\n * ECC_ENCODER_CGC_EN            = %X",(cfg1>>23)&1);
  printf("\n * WR_RD_BSY_GAP                 = %X",(cfg1>>17)&0x3f);
  printf("\n * BAD_BLOCK_IN_SPARE_AREA       = %X",(cfg1>>16)&1);
  printf("\n * BAD_BLOCK_BYTE_NUM            = %X",(cfg1>>6)&0x3ff);
  printf("\n * CS_ACTIVE_BSY                 = %X",(cfg1>>5)&1);
  printf("\n * NAND_RECOVERY_CYCLES          = %X",(cfg1>>2)&7);
  printf("\n * WIDE_FLASH                    = %X",(cfg1>>1)&1);
  printf("\n * ECC_DISABLE                   = %X\n",(cfg1)&1);

   printf("\n* 000 NAND_FLASH_CMD         = %08X",READ32(0x60000000));
   printf("\n* 004 NAND_ADDR0             = %08X",READ32(0x60000004));
   printf("\n* 008 NAND_ADDR1             = %08X",READ32(0x60000008));
   printf("\n* 00c NAND_CHIP_SELECT       = %08X",READ32(0x6000000c));
   printf("\n* 010 NANDC_EXEC_CMD         = %08X",READ32(0x60000010));
   printf("\n* 014 NAND_FLASH_STATUS      = %08X",READ32(0x60000014));
   printf("\n* 018 NANDC_BUFFER_STATUS    = %08X",READ32(0x60000018));
   printf("\n* 020 NAND_DEV0_CFG0         = %08X",READ32(0x60000020));
   printf("\n* 024 NAND_DEV0_CFG1         = %08X",READ32(0x60000024));
   printf("\n* 028 NAND_DEV0_ECC_CFG      = %08X",READ32(0x60000028));
   printf("\n* 030 NAND_offset 030        = %08X",READ32(0x60000030));
   printf("\n* 034 NAND_offset 034        = %08X",READ32(0x60000034));
   printf("\n* 040 NAND_FLASH_READ_ID     = %08X",READ32(0x60000040));
   printf("\n* 044 NAND_FLASH_READ_STATUS = %08X",READ32(0x60000044));
   printf("\n* 048 NAND_FLASH_READ_ID2    = %08X",READ32(0x60000048));
   printf("\n* 064 FLASH_MACRO1_REG       = %08X",READ32(0x60000064));
   printf("\n* 070 FLASH_XFR_STEP1        = %08X",READ32(0x60000070));
   printf("\n* 074 FLASH_XFR_STEP2        = %08X",READ32(0x60000074));
   printf("\n* 078 FLASH_XFR_STEP3        = %08X",READ32(0x60000078));
   printf("\n* 07c FLASH_XFR_STEP4        = %08X",READ32(0x6000007c));
   printf("\n* 080 FLASH_XFR_STEP5        = %08X",READ32(0x60000080));
   printf("\n* 084 FLASH_XFR_STEP6        = %08X",READ32(0x60000084));
   printf("\n* 088 FLASH_XFR_STEP7        = %08X",READ32(0x60000088));
   printf("\n* 0a0 FLASH_DEV_CMD0         = %08X",READ32(0x600000a0));
   printf("\n* 0a4 FLASH_DEV_CMD1         = %08X",READ32(0x600000a4));
   printf("\n* 0a8 FLASH_DEV_CMD2         = %08X",READ32(0x600000a8));
   printf("\n* 0ac FLASH_DEV_CMD_VLD      = %08X",READ32(0x600000ac));
   printf("\n* 0d0 FLASH_DEV_CMD3         = %08X",READ32(0x600000d0));
   printf("\n* 0d4 FLASH_DEV_CMD4         = %08X",READ32(0x600000d4));
   printf("\n* 0d8 FLASH_DEV_CMD5         = %08X",READ32(0x600000d8));
   printf("\n* 0dc FLASH_DEV_CMD6         = %08X",READ32(0x600000dc));
   printf("\n* 0e8 NAND_ERASED_CW_DET_CFG = %08X",READ32(0x600000e8));
   printf("\n* 0ec NAND_ERASED_CW_DET_ST  = %08X",READ32(0x600000ec));
   printf("\n* 0f0 EBI2_ECC_BUF_CFG       = %08X\n",READ32(0x600000f0));
}
Базовый адрес нанд замените на свой, его кстати очень легко найти используя J-Mem, если нет datasheet.

Отредактировано: dimitrus 15 авг 2015 21:21
 Vise
Yekaterinburg
сообщений: 2
#77 Дата 09 ноя 2015 00:00
Приветствую. Попался мне модем Билайн ZTE MF626. После не удачной прошивки висит в download mode. Ни какими шаманствами не получилось его воскресить. LPT к сожалению по близости нет, но под рукой есть JLink. При подключении к модему пишет - J-Link found 1 JTAG device. Core ID: 0x401200E1 (ARM9). Вроде как верно все. Есть ли возможность его воскресить? С помощью JLink ну или ZTE Diagnastics Interface? Заранее спасибо ))
 ушкуйник
Ярославская обл. Рыбинск
сообщений: 480
#78 Дата 21 ноя 2015 18:38
А прошивкой от балбеса пробовали? Древний метод для древнего модема.
Или по статье через QPST.

Восстановление, реанимация модема ZTE MFXXX в DM режиме

Отредактировано: ушкуйник 22 ноя 2015 15:03
 Vise
Yekaterinburg
сообщений: 2
#79 Дата 08 дек 2015 11:51
Пробовал, виснет при заливке.
 bg
Днище
сообщений: 26
#80 Дата 03 апр 2016 20:42
Новости есть?

Нужен софт для восстановления через J-link E173u-1 (chip MSM6290).
Очень не хочется искать старое глючное железо с LPT, ставить туда не менеедревню. винду, паять резисторы и сопли вокруг.

Со сборкой софта могу помочь, опыта дохренища, только нужно ввести в курс дела.
Опять же вопрос, надо найти питалово или какое то напряжение подать на VTref
Страницы:
Перейти на другой форум:
Сайт управляется SiNG cms © 2010-2015