Показано с 1 по 2 из 2

Тема: устранение вечного bootingа прошивкой flash 8 mb через jtag в домашних условиях

  1. #1
    Senior Member
    Регистрация
    13.12.2006
    Сообщений
    2,332

    устранение вечного bootingа прошивкой flash 8 mb через jtag в домашних условиях

    Устранение вечного BOOTINGа прошивкой FLASH 8 MB через JTAG в домашних условиях-1

    Пример Восстановления с другого форума:
    После приобретения ресивера решил сразу обновить прошивку.
    После прошивки в 0.9.4931 (в настройках увидел два новых пункта - выключение вентилятора и аппаратное ускорение, я попробывал аппаратное ускорение - и ресивер завис, минут 5 ждал, а потом сделал ему рестарт и как результат BOOTING) .

    Поисковой системой нашел в форуме тему "Azbox RS232(PC)->TTL(AZ) / USB(PC)->TTL(AZ) & YAMON - побеждаем вечный "BOOTING" с симптомами неисправностей похожими на мои, где loshmanov подробно изложил как и что смотреть с помощью последовательного (СОМ) порта.
    Вскрыв ресивер PREMIUM HD+ я обнаружил разъем похожий на СОМ порт.

    Купил NOKIAвский провод и получил вот такой лог:

    xosPe0 serial#2cee66e587b6925bb3cff53620687750 subid 0x70
    xenv cs2 failed
    xenvxosPe0 serial#2cee66e587b6925bb3cff53620687750 subid 0x70
    xenv cs2 failed
    xenv power supply: ok
    dram0 ok (
    zboot (1) failed

    Посмотрев лог понял, что у меня похоже проблема более серьезная.
    Нашел в форуме тему "Azbox HD FLASH RECOVERY - NOR Flash 8MB (Bootloader) - AZbox hd & JTAG ..." где понял что fc_candido смог решить эту проблему.

    Так как в домашних условиях из оборудования у меня было только: паяльник, кусачки, пинцет, осцилограф и мультиметр пришлось придумывать как паять на плате да еще и возле процессора.
    Я взял обрезанный конец резистора, облудил его и поставил на контактную плошадку R309. Нагревая обрезанный конец резистора паяльником расплавился припой на контактной площадке и проволочина зафиксировалась.

    Таким образом интерфейс был собран на материнской плате, но как выяснилось позже не все элементы распаяны - не установлены RP1 и RP2. В нашем городе таких резисторных сборок не найти да мне и не припаять их простым паяльником. Стал изучать печатный монтаж. Главным критерием было минимальное количество паек на материнской плате. В итоге получилась такая схема (в процессе испытаний выяснилось что ограничивающие резисторы между JTAG и LPT не обеспечивают необходимый уровень сигнала и я их исключил)
    PS так как резисторов 103 Ом я найти не мог, то установил разные от 110 до 140 Ом, что оказалось не критичным

    Аппаратная часть готова.
    Осталось самое трудное - программная компонента (если учесть что все делать надо в Линуксе, а я в нем знаю только команду LS)

    ===============================

    Линукс на котором все работает UBUNTU 10.04 LTS

    На флешку были записаны следующие файлы:

    10.06.2010 13:59 1 117 azbox.cfg
    05.03.2010 11:43 8 388 608 cfe.bin
    26.08.2009 19:23 148 Makefile
    13.07.2010 13:35 1 327 295 openocd-0.4.0-azbox.tar.bz2
    10.06.2010 21:20 788 smp8634.cfg
    16.06.2010 20:47 8 272 spi.h
    22.06.2010 23:31 106 788 tjtag.c
    26.08.2009 15:17 22 391 tjtag.h

    Линукс запускался исключительно с CD. Все данные находились только на флешке.

    Дальнейшие действия можно разбить на 3 этапа.
    1. установка ПО для снятия защиты обращения к флэш памяти ресивера;
    2. снятие защиты обращения к флэш памяти ресивера;
    3. программирование флэш памяти ресивера.

    Теперь подробно по этапам, что смогу поясню.

    1. установка ПО для снятия защиты обращения к флэш памяти ресивера.
    1.1. в линуксе запускаем терминал и переходим в каталог на флэшке где записаны выше сказанные файлы
    1.2. набираем команду sudo apt-get install libftdi-dev libftdi1 libusb-dev
    после исполнения этой команды ругается на отсутствие libusb-dev, но это не мешает
    1.3. разархивируем архив командой tar xjvf openocd-0.4.0-azbox.tar.bz2
    1.4. переходим в каталог cd openocd-0.4.0-azbox/
    1.5. набираем команды
    1.5.1 ./configure --enable-dummy --enable-parport --enable-parport_ppdev --enable-amtjtagaccel --enable-verbose
    1.5.2. make
    1.5.3. sudo make install
    1.5.4. sudo ln sf /usr/local/bin/openocd /usr/bin/openocd
    1.6. переходим в каталог на флэшке где записаны и набираем команды
    1.6.1. sudo cp smp8634.cfg /usr/local/share/openocd/scripts/target/smp8634.cfg
    1.6.2. sudo cp azbox.cfg /usr/local/share/openocd/scripts/board/azbox.cfg

    На это инсталяция закончена .

    2. снятие защиты обращения к флэш памяти ресивера

    2.1. Набираем следующие команды
    2.1.1. sudo rmmod lp
    2.1.2.cd /usr/local/share/openocd/scripts
    2.1.3. sudo openocd -f interface/parport_dlc5.cfg -f board/azbox.cfg

    2.2. Открываем второе окно терминала и набираем команду
    2.2.1. sudo telnet localhost 4444
    2.2.2. На экране видим примерно такое:
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    Open On-Chip Debugger
    >
    2.2.3. набираем команы
    2.2.3.1. halt
    2.2.3.2. reset
    2.2.3.3. reset init
    2.2.3.4. flash protect 0 0 last off
    2.2.3.5. flash protect_check 0
    2.2.3.6. flash info 0
    2.2.3.7. shutdown
    На этом второй этап закончен.

    ==========================

    Ниже привожу лог снятия защиты моего ресивера:

    ubuntu@ubuntu:/media/E0CF-DBCF/azbox$ sudo rmmod lp
    ubuntu@ubuntu:/media/E0CF-DBCF/azbox$ cd /usr/local/share/openocd/scripts
    ubuntu@ubuntu:/usr/local/share/openocd/scripts$ sudo openocd -f interface/parport_dlc5.cfg -f board/azbox.cfg
    Open On-Chip Debugger 0.4.0 (2010-07-13-19:47)
    Licensed under GNU GPL v2
    For bug reports, read
    http://openocd.berlios.de/doc/doxygen/bugs.html
    parport port = 0x0
    jtag_nsrst_delay: 100
    jtag_ntrst_delay: 100
    trst_and_srst separate srst_gates_jtag trst_push_pull srst_open_drain
    Warn : smp8634.cpu: nonstandard IR mask
    Warn : use 'smp8634.cpu' as target identifier, not '0'
    Info : clock speed 500 kHz
    Info : JTAG tap: smp8634.cpu tap/device found: 0x08630001 (mfg: 0x000, part: 0x8630, ver: 0x0)
    Info : accepting 'telnet' connection from 0
    target state: halted
    target halted in MIPS32 mode due to debug-request, pc: 0xbfc00000
    Info : JTAG tap: smp8634.cpu tap/device found: 0x08630001 (mfg: 0x000, part: 0x8630, ver: 0x0)
    target state: halted
    target halted in MIPS32 mode due to debug-request, pc: 0xbfc00000
    Info : JTAG tap: smp8634.cpu tap/device found: 0x08630001 (mfg: 0x000, part: 0x8630, ver: 0x0)
    target state: halted
    target halted in MIPS32 mode due to debug-request, pc: 0xbfc00000
    Info : Flash Manufacturer/Device: 0x007f 0x22cb
    Error: protect: cfi primary command set 2 unsupported
    cleared protection for sectors 0 through 134 on flash bank 0
    successfully checked protect state
    #0 : cfi at 0xac000000, size 0x00800000, buswidth 2, chipwidth 2
    # 0: 0x00000000 (0x2000 8kB) not protected
    Вложения Вложения

  2. #2
    Senior Member
    Регистрация
    13.12.2006
    Сообщений
    2,332
    =========================

    # 1: 0x00002000 (0x2000 8kB) not protected
    # 2: 0x00004000 (0x2000 8kB) not protected
    # 3: 0x00006000 (0x2000 8kB) not protected
    # 4: 0x00008000 (0x2000 8kB) not protected
    # 5: 0x0000a000 (0x2000 8kB) not protected
    # 6: 0x0000c000 (0x2000 8kB) not protected
    # 7: 0x0000e000 (0x2000 8kB) not protected
    # 8: 0x00010000 (0x10000 64kB) not protected
    # 9: 0x00020000 (0x10000 64kB) not protected
    # 10: 0x00030000 (0x10000 64kB) not protected
    # 11: 0x00040000 (0x10000 64kB) not protected
    # 12: 0x00050000 (0x10000 64kB) not protected
    # 13: 0x00060000 (0x10000 64kB) not protected
    # 14: 0x00070000 (0x10000 64kB) not protected
    # 15: 0x00080000 (0x10000 64kB) not protected
    # 16: 0x00090000 (0x10000 64kB) not protected
    # 17: 0x000a0000 (0x10000 64kB) not protected
    # 18: 0x000b0000 (0x10000 64kB) not protected
    # 19: 0x000c0000 (0x10000 64kB) not protected
    # 20: 0x000d0000 (0x10000 64kB) not protected
    # 21: 0x000e0000 (0x10000 64kB) not protected
    # 22: 0x000f0000 (0x10000 64kB) not protected
    # 23: 0x00100000 (0x10000 64kB) not protected
    # 24: 0x00110000 (0x10000 64kB) not protected
    # 25: 0x00120000 (0x10000 64kB) not protected
    # 26: 0x00130000 (0x10000 64kB) not protected
    # 27: 0x00140000 (0x10000 64kB) not protected
    # 28: 0x00150000 (0x10000 64kB) not protected
    # 29: 0x00160000 (0x10000 64kB) not protected
    # 30: 0x00170000 (0x10000 64kB) not protected
    # 31: 0x00180000 (0x10000 64kB) not protected
    # 32: 0x00190000 (0x10000 64kB) not protected
    # 33: 0x001a0000 (0x10000 64kB) not protected
    # 34: 0x001b0000 (0x10000 64kB) not protected
    # 35: 0x001c0000 (0x10000 64kB) not protected
    # 36: 0x001d0000 (0x10000 64kB) not protected
    # 37: 0x001e0000 (0x10000 64kB) not protected
    # 38: 0x001f0000 (0x10000 64kB) not protected
    # 39: 0x00200000 (0x10000 64kB) not protected
    # 40: 0x00210000 (0x10000 64kB) not protected
    # 41: 0x00220000 (0x10000 64kB) not protected
    # 42: 0x00230000 (0x10000 64kB) not protected
    # 43: 0x00240000 (0x10000 64kB) not protected
    # 44: 0x00250000 (0x10000 64kB) not protected
    # 45: 0x00260000 (0x10000 64kB) not protected
    # 46: 0x00270000 (0x10000 64kB) not protected
    # 47: 0x00280000 (0x10000 64kB) not protected
    # 48: 0x00290000 (0x10000 64kB) not protected
    # 49: 0x002a0000 (0x10000 64kB) not protected
    # 50: 0x002b0000 (0x10000 64kB) not protected
    # 51: 0x002c0000 (0x10000 64kB) not protected
    # 52: 0x002d0000 (0x10000 64kB) not protected
    # 53: 0x002e0000 (0x10000 64kB) not protected
    # 54: 0x002f0000 (0x10000 64kB) not protected
    # 55: 0x00300000 (0x10000 64kB) not protected
    # 56: 0x00310000 (0x10000 64kB) not protected
    # 57: 0x00320000 (0x10000 64kB) not protected
    # 58: 0x00330000 (0x10000 64kB) not protected
    # 59: 0x00340000 (0x10000 64kB) not protected
    # 60: 0x00350000 (0x10000 64kB) not protected
    # 61: 0x00360000 (0x10000 64kB) not protected
    # 62: 0x00370000 (0x10000 64kB) not protected
    # 63: 0x00380000 (0x10000 64kB) not protected
    # 64: 0x00390000 (0x10000 64kB) not protected
    # 65: 0x003a0000 (0x10000 64kB) not protected
    # 66: 0x003b0000 (0x10000 64kB) not protected
    # 67: 0x003c0000 (0x10000 64kB) not protected
    # 68: 0x003d0000 (0x10000 64kB) not protected
    # 69: 0x003e0000 (0x10000 64kB) not protected
    # 70: 0x003f0000 (0x10000 64kB) not protected

    ================================

    # 71: 0x00400000 (0x10000 64kB) not protected
    # 72: 0x00410000 (0x10000 64kB) not protected
    # 73: 0x00420000 (0x10000 64kB) not protected
    # 74: 0x00430000 (0x10000 64kB) not protected
    # 75: 0x00440000 (0x10000 64kB) not protected
    # 76: 0x00450000 (0x10000 64kB) not protected
    # 77: 0x00460000 (0x10000 64kB) not protected
    # 78: 0x00470000 (0x10000 64kB) not protected
    # 79: 0x00480000 (0x10000 64kB) not protected
    # 80: 0x00490000 (0x10000 64kB) not protected
    # 81: 0x004a0000 (0x10000 64kB) not protected
    # 82: 0x004b0000 (0x10000 64kB) not protected
    # 83: 0x004c0000 (0x10000 64kB) not protected
    # 84: 0x004d0000 (0x10000 64kB) not protected
    # 85: 0x004e0000 (0x10000 64kB) not protected
    # 86: 0x004f0000 (0x10000 64kB) not protected
    # 87: 0x00500000 (0x10000 64kB) not protected
    # 88: 0x00510000 (0x10000 64kB) not protected
    # 89: 0x00520000 (0x10000 64kB) not protected
    # 90: 0x00530000 (0x10000 64kB) not protected
    # 91: 0x00540000 (0x10000 64kB) not protected
    # 92: 0x00550000 (0x10000 64kB) not protected
    # 93: 0x00560000 (0x10000 64kB) not protected
    # 94: 0x00570000 (0x10000 64kB) not protected
    # 95: 0x00580000 (0x10000 64kB) not protected
    # 96: 0x00590000 (0x10000 64kB) not protected
    # 97: 0x005a0000 (0x10000 64kB) not protected
    # 98: 0x005b0000 (0x10000 64kB) not protected
    # 99: 0x005c0000 (0x10000 64kB) not protected
    #100: 0x005d0000 (0x10000 64kB) not protected
    #101: 0x005e0000 (0x10000 64kB) not protected
    #102: 0x005f0000 (0x10000 64kB) not protected
    #103: 0x00600000 (0x10000 64kB) not protected
    #104: 0x00610000 (0x10000 64kB) not protected
    #105: 0x00620000 (0x10000 64kB) not protected
    #106: 0x00630000 (0x10000 64kB) not protected
    #107: 0x00640000 (0x10000 64kB) not protected
    #108: 0x00650000 (0x10000 64kB) not protected
    #109: 0x00660000 (0x10000 64kB) not protected
    #110: 0x00670000 (0x10000 64kB) not protected
    #111: 0x00680000 (0x10000 64kB) not protected
    #112: 0x00690000 (0x10000 64kB) not protected
    #113: 0x006a0000 (0x10000 64kB) not protected
    #114: 0x006b0000 (0x10000 64kB) not protected
    #115: 0x006c0000 (0x10000 64kB) not protected
    #116: 0x006d0000 (0x10000 64kB) not protected
    #117: 0x006e0000 (0x10000 64kB) not protected
    #118: 0x006f0000 (0x10000 64kB) not protected
    #119: 0x00700000 (0x10000 64kB) not protected
    #120: 0x00710000 (0x10000 64kB) not protected
    #121: 0x00720000 (0x10000 64kB) not protected
    #122: 0x00730000 (0x10000 64kB) not protected
    #123: 0x00740000 (0x10000 64kB) not protected
    #124: 0x00750000 (0x10000 64kB) not protected
    #125: 0x00760000 (0x10000 64kB) not protected
    #126: 0x00770000 (0x10000 64kB) not protected
    #127: 0x00780000 (0x10000 64kB) not protected
    #128: 0x00790000 (0x10000 64kB) not protected
    #129: 0x007a0000 (0x10000 64kB) not protected
    #130: 0x007b0000 (0x10000 64kB) not protected
    #131: 0x007c0000 (0x10000 64kB) not protected
    #132: 0x007d0000 (0x10000 64kB) not protected
    #133: 0x007e0000 (0x10000 64kB) not protected
    #134: 0x007f0000 (0x10000 64kB) not protected

    ========================

    cfi information:

    mfr: 0x007f, id:0x22cb
    qry: 'QRY', pri_id: 0x0002, pri_addr: 0x0040, alt_id: 0x0000, alt_addr: 0x0000
    Vcc min: 2.7, Vcc max: 3.6, Vpp min: 0.0, Vpp max: 0.0
    typ. word write timeout: 16, typ. buf write timeout: 1, typ. block erase timeout: 1024, typ. chip erase timeout: 1
    max. word write timeout: 512, max. buf write timeout: 1, max. block erase timeout: 16384, max. chip erase timeout: 1
    size: 0x800000, interface desc: 2, max buffer write size: 1

    Spansion primary algorithm extend information:
    pri: 'PRI', version: 1.1
    Silicon Rev.: 0x0, Address Sensitive unlock: 0x0
    Erase Suspend: 0x2, Sector Protect: 0x4
    VppMin: 10.5, VppMax: 12.5

    shutdown command invoked
    ubuntu@ubuntu:/usr/local/share/openocd/scripts$

    ==================

    3. программирование флэш памяти ресивера.
    Самый легкий этап, но самый продолжительный по времени (у меня прогаммирование заняло почти 24 часа)

    3.1. Переходим в первое окно терминала
    3.2. Переходим на флышку где записаны файлы и набираем команды
    3.2.1. make
    3.2.2. sudo rmmod lp
    3.2.3. sudo ./tjtag -flash:cfe /fc:104 /bypass
    3.3. терпиливо ждем сутки периодически наблюдая за пробегающими адресами, данными

    У меня это выглядело примерно так (последние секунды работы программы):
    [ 99% Flashed] ac7fffb0: ffffffff ffffffff ffffffff ffffffff
    [ 99% Flashed] ac7fffc0: ffffffff ffffffff ffffffff ffffffff
    [ 99% Flashed] ac7fffd0: ffffffff ffffffff ffffffff ffffffff
    [ 99% Flashed] ac7fffe0: ffffffff ffffffff ffffffff ffffffff
    [ 99% Flashed] ac7ffff0: ffffffff ffffffff ffffffff ffffffff
    Done (CFE.BIN loaded into Flash Memory OK)

    =========================
    Flashing Routine Complete
    =========================
    elapsed time: 85853 seconds

    *** REQUESTED OPERATION IS COMPLETE ***

    ubuntu@ubuntu:/media/E0CF-DBCF/azbox$

    4. Награда за труды
    4.1. выключаю ресивер, компьютер
    4.2. снимаю перемычку с R309 в ресивере
    4.3. записываю на флешку в корень patch.bin
    4.4. устанавливаю флешку в ресивер, включаю ресивер и вот оно счастье ресивер предлагает установку нового ПО

    Имя образа дистрибутив линукса - ubuntu-10.04-desktop-i386.iso

    Взято отсюда:
    http://golik.ucoz.ru/forum/20-419-1

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •