USMI

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » USMI » MCU, SoC, CPU Микроконтроллеры » JieLi UBOOT tool


JieLi UBOOT tool

Сообщений 1 страница 20 из 35

1

Тема про JieLi UBOOT tool (jl-uboot-tool) - утилиты для дампинга, прошивки и т.д. чипов от JieLi через режим прошивки (USB upgrade (UBOOT1.00/2.00), UART upgrade и т.д.)

>> Репа на гитхабе
>> Тема про донгл (для перевода чипа в режим прошивки)
>> Основная тема про JieLi

Подпись автора

水Mizu-DEC JLtech since 22.06.2019

2

Раз уж создал тему отдельную - наполняй. Всякой инфой, доками, как юзать, как модить. Пиши что делаешь, что думаешь доделать, добавить-переделать. Интересно же. Не один же я на форуме буду писать?)  :glasses:

Подпись автора

By Admin

3

Провёл тут некоторый рефакторинг..

Сделал комманду для прожига chipkey (burnchipkey), вроде как должна работать, вот например что br17loader пишет во время прожига в мою AC6908 с полностью выгоревшим чипкеем (сжёг когда я однажды пытался перебирать комманды вслепую, и наткнулся на ту которая прошивает chipkey (которая ещё имела ощутимую задержку), а параметры у меня были в нулях, поэтому всё стало нулями):
https://forumupload.ru/uploads/001b/ca/8a/3/t190429.png

Ещё я попробовал на AC6965, с чипкеем 0x77a - попробовал туда прожечь 0x778 (один бит сжечь), но оно мне выдаёт 0xFFFFFFFF - видимо комманда не та, или скорее всего там есть некая (софтовая) защита от повторного прожига. Рисковать пока не хочу..

Подпись автора

水Mizu-DEC JLtech since 22.06.2019

4

Хорошо, проверю, есть как раз чипы которые не жалко... Крутая работа.

Подпись автора

By Admin

5

не, не записывает.

Код:
=>JL: burnchipkey 0x152f
Your current chip key:
    _     ______    _     ______
   /|    |_____    /|    |_____
    |          |    |    |
  __|__  ______|  __|__  |

Chip key you're going to burn:
    _     ______  _____   ______
   /|    |_____  |     | |_____
    |          |  _____| |
  __|__  ______| |______ |

Well, there is a key burnt into this chip which won't let this key being burnt correctly.
Here's what you get instead:
    _     ______  _____   ______
   /|    |_____  |   / | |_____
    |          | |  /  | |
  __|__  ______| |_/___| |


Do you still want to proceed?
Say "yes i do" to proceed: yes i do
Result:
  _____   _____   _____   _____
 |   / | |   / | |   / | |   / |
 |  /  | |  /  | |  /  | |  /  |
 |_/___| |_/___| |_/___| |_/___|

=>JL: chipkey
Your chip key is...
    _     ______    _     ______
   /|    |_____    /|    |_____
    |          |    |    |
  __|__  ______|  __|__  |

There are 8 bits intact!

6

записывает пока на 690 чипы.
Там отп по ходу. Я ьестировал на новых процах с FFFF  - - все работает.

Подпись автора

By Admin

7

да кстати, какой чип?

Подпись автора

By Admin

8

690

9

не читает 6965.
для разнообразия попробовал под линухом:

Код:
$ sudo python3 jluboottool.py
** 23 chips, 21 USB loaders, 9 UART loaders **
Found a device: BR25 UBOOT1.00 (1.00) at /dev/sg2
Waiting for [/dev/sg2] try! ok (BR25 UBOOT1.00 1.00)
Chip: BR25 (AC636N, AC696N, AC608N)
This is the UBOOT1.00 device, so we'll run the loader.
Traceback (most recent call last):
  File "/home/user/jl-uboot-tool/jluboottool.py", line 708, in <module>
    rblock = dev.mem_read(addr, len(block))
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/jl-uboot-tool/jl_uboot.py", line 271, in mem_read
    return self.cmd_exec_datain(JL_Loader.CMD_READ_MEMORY,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/jl-uboot-tool/jl_uboot.py", line 253, in cmd_exec_datain
    self.dev.execute(self.cmd_prepare_cdb(cmd, args), None, data)
  File "/home/user/jl-uboot-tool/scsiio/linuxport.py", line 106, in execute
    raise SCSIException(msg)
scsiio.common.SCSIException: Transfer failed... info:1 host:7 driver:0

предыдущая версия:

Код:
$ sudo python3 jluboottool.py
Found a device: BR25 UBOOT1.00 (1.00) at /dev/sg2
Waiting for [/dev/sg2] try! ok (BR25 UBOOT1.00 1.00)
Chip: br25 (AC636N, AC696N, AC608N)
UBOOT1.00 device, loader will be loaded
Using builtin loader collection
Running loader at 00012000, with argument 0000...
Loader uploaded successfully
----------------:------------------------
Online device   : id=cd6013 type=3
Chip key        : 3496
Flash page size : 32768
----------------:------------------------
Device type:
  0x03 [SPI NOR flash (on SPI0)]

Device ID:
  _____   _____   _____   _____   ______  _____     _     _____ 
 |   / | |   / | |     | |     | |_____  |   / |   /|       ___|
 |  /  | |  /  | |       |     | |     | |  /  |    |          |
 |_/___| |_/___| |______ |____/  |_____| |_/___|  __|__  ______|

Your chip key is...
  _____           _____   ______
    ___| |    |  |     | |_____ 
       | |____|_ |_____| |     |
 ______|      |  ______| |_____|

There's something programmed there!

  .--------------------------------------------------.
  |     _____________                                |
  |    /___  __  ___/                                |
  |       / / / /     _______                        |
  |  __  / / / /        | |    | | |_   _   _  |_    |
  | / /_/ / / /____   |_| |__  |_| |_| |_| |_| |_    |
  | \____/ /______/                                  |
  |                                                  |
  | JieLi tech console. Type 'help' or '?' for help. |
  '--------------------------------------------------'
    
=>JL: 
=>JL: read 0 0x80000 65__.bin

Traceback (most recent call last):
  File "/home/user/jltest/jluboottool.py", line 709, in <module>
    ds.cmdloop()
  File "/usr/lib/python3.11/cmd.py", line 138, in cmdloop
    stop = self.onecmd(line)
           ^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/cmd.py", line 217, in onecmd
    return func(arg)
           ^^^^^^^^^
  File "/home/user/jltest/jluboottool.py", line 212, in do_read
    data = self.dev.flash_read(address, n)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/jltest/jl_uboot.py", line 111, in flash_read
    return self.exec_cmd_datain(b'\xfd\x05' + addr.to_bytes(4, 'big') +
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/jltest/jl_uboot.py", line 84, in exec_cmd_datain
    self.dev.execute(cmd, None, data)
  File "/home/user/jltest/scsiio/linuxport.py", line 106, in execute
    raise SCSIException(msg)
scsiio.common.SCSIException: Transfer failed... info:1 host:7 driver:0

10

У меня так же. 696.

Подпись автора

By Admin

11

если подкинуть другой br25loader.bin (под виндой), то зависает наглухо.

12

теперь примерно так:

Код:
  .-------------------.
  |     _____________ | .------------------------------.
  |    /___  __  ___/ | |       JieLi UBOOT Tool
  |       / / / /     | |        - Das Shell -
  |  __  / / / /      | `------------------------------.
  | / /_/ / / /____   |    -*- JieLi tech console -*-  |
  | \____/ /______/   |   Type 'help' or '?' for help. |
  |                   | `------------------------------'
  `-------------------'
  =========================================================

=>JL: dump 0x1000
    1000: 17 1E BF 1D 30 2E 30 31 F0 31 A4 67 CD AD FF 97  |....0.01.1.g....|
    1010: 41 43 36 39 36 78 5F 54 57 53 FF FF FF FF FF FF  |AC696x_TWS......|
    1020: 03 C8 00 D7 BF 3E 7C F8 59 CF A3 67 8E BD 5B 97  |.....>|.Y..g..[.|
    1030: 7A 7C 53 17 A5 AD 45 21 F3 6D 13 D9 B3 67 CF 9F  |z|S...E!.m...g..|
    1040: 0F 4B 83 67 56 31 7C F8 80 C1 A3 67 CC 42 5B 97  |.K.gV1|....g.B[.|
    1050: 66 6D 58 27 B2 EC 49 28 F5 7E 3D 4F 22 F1 30 9F  |fmX'..I(.~=O".0.|
    1060: 6A BA 60 1F 1F 2E 7C F8 0F 3E 5C 98 4F 42 5B 97  |j.`...|..>\.OB[.|
    1070: 6E 6E 4C 27 B5 EA 55 11 F4 7C 72 42 4C 67 CF 9F  |nnL'..U..|rBLg..|
    1080: 8F EA 60 E0 1F CE 7B F8 F0 D1 A3 67 DC BC A4 68  |..`...{....g...h|
    1090: 64 7B 45 27 BC E2 44 4E 63 E6 EC D9 B3 67 CF 9F  |d{E'..DNc....g..|
    10A0: FE DF 06 11 1F 1E 7D F8 E0 C1 A3 67 31 CD AF BD  |......}....g1...|
    10B0: FF 5F 9F 1F 1F 3E 6D F8 F0 A1 A2 67 CA AE 5B 97  |._...>m....g..[.|
    10C0: CF C6 D4 7F D1 43 D8 EA CE A1 72 66 6C 54 11 20  |.....C....rflT. |
    10D0: 00 5E 52 B7 60 2C 70 44 F3 C8 80 41 21 43 81 FA  |.^R.`,pD...A!C..|
    10E0: 4D F4 A8 87 00 E5 9C D1 EE AB DB 67 0A BF 1F 1E  |M..........g....|
    10F0: 3E 91 07 C1 B4 07 0C D7 8D F4 F3 91 01 E3 AC 56  |>..............V|

=>JL: dump 0x1000 16384
Traceback (most recent call last):
  File "jluboottool.py", line 790, in <module>
    ds.cmdloop()
  File "C:\Python38-32\lib\cmd.py", line 138, in cmdloop
    stop = self.onecmd(line)
  File "C:\Python38-32\lib\cmd.py", line 217, in onecmd
    return func(arg)
  File "jluboottool.py", line 573, in do_dump
    hexdump(self.dev.flash_read(address, n), address=address)
  File "C:\tmp\jl-uboot-tool\jl_uboot.py", line 66, in flash_read
    return self.dev.cmd_exec_datain(JL_Loader.CMD_READ_FLASH,
  File "C:\tmp\jl-uboot-tool\jl_uboot.py", line 253, in cmd_exec_datain
    self.dev.execute(self.cmd_prepare_cdb(cmd, args), None, data)
  File "C:\tmp\jl-uboot-tool\scsiio\win32port.py", line 134, in execute
    raise SCSIException('Transfer failed: %s' % ctypes.WinError())
scsiio.common.SCSIException: Transfer failed: [WinError 121] Превышен таймаут семафора.

13

Понадобилась мне тут прога эта, последний билд что на гитхабе, не работает определение ни одного чипа.

Подпись автора

By Admin

14

у меня на 0 делит при определении скорости)

15

На какой то из версий та же фигня, причем ещё бывает когда делаешь erase то оно показывает какую то заоблачную скорость и вылетает... Хотя возможно у меня что то и с виндой, давно ни как не переустановлю...

Подпись автора

By Admin

16

kagaimiq
Слушай, а ты не ведешь архив версий? или что то такое. Вроде до efuse было пару версий, работающих нормально с 690/692/695/696 чипами.
Я где то сохранял, нужно найти, но это не точно)  :D

Подпись автора

By Admin

17

BIOS написал(а):

Слушай, а ты не ведешь архив версий? или что то такое

Пока что можно по коммитам полистать. Например здесь версия до того, как я там немного изменил алгоритм поиск устройств.
Я сейчас поставил вин 8.1 в виртуалку, попробую разобраться что с ней не так..

Подпись автора

水Mizu-DEC JLtech since 22.06.2019

18

kagaimiq написал(а):

Я сейчас поставил вин 8.1 в виртуалку, попробую разобраться что с ней не так..

Нашел рабочую версию у себя.
Кстати скоро будут чистые чипы 695/696/697/698/ можно будет чип кеи на них отработать. Еще если все сработает, то получу обнову для моего прогера и можно будет чистый свой ключ залить в него) И думаю скоро таки узнаем ISP

Подпись автора

By Admin

19

BIOS написал(а):

И думаю скоро таки узнаем ISP

Ну сам протокол я уже раскопал недели две назад..

По сути он там просто используется для того чтобы в чип специальный UART лоадер загрузить, который уже по USB пинам общается с самим прогером.
(но в старых OTP чипах он по назначению используется, хотя под AC109N там тоже какой-то код может загружаться)

И сам протокол аналогичен тому, что передаётся в ISP_KEY, и по крайней мере этот вариант протокола был начиная с AC692N, поэтому он и реагировал на ISP_KEY от донгла, проблема только в том, что донглу нечем ответить, поэтому дальше переход в 'USB ISP' не происходил.

У AC690N например протокол такой как например и у AC109N, и по всей видимости, как и у AC209N/AC309N тоже..

Тут главная особенность ISP в том, что в проц можно загрузить код, и потом его загрузить, и чип потом будет тактироваться от ISP_CLK до того, когда MODE_CON не будет установлен в 0. (так можно получить частоту намного точнее чем например у встроенных RC на 250 кГц, хотя обычно при запуске самой программы его сразу в ноль сбрасывают)

И так как переход в ISP отрабатывается хардварно (видимо через mode_det при запуске чипа, где он потом решает либо войти в ISP, либо запустить проц и продолжить загрузку как обычно), то можно сказать, что с чипом можно работать независимо от чего.

Отредактировано kagaimiq (2023-08-11 22:38:30)

Подпись автора

水Mizu-DEC JLtech since 22.06.2019

20

kagaimiq написал(а):

Я сейчас поставил вин 8.1 в виртуалку, попробую разобраться что с ней не так..

Оказалось, что у меня там всё работает нормально.. (это если что сразу после установки я все обновы поставил, ибо иначе у меня не получалось питон поставить)

Хотя я уже понял, что дело должно быть в "os.path.exists", которая почему-то не работает в отдельно взятом случае, ибо была же проблема с бесконечным ожиданием, которая решилась удалением части где проходила проверка на то что это устройство существует, а потом что-то стало с указанием устройства напрямую (типо \\.\D: ), хотя у меня там оно тоже работает нормально.

Подпись автора

水Mizu-DEC JLtech since 22.06.2019


Вы здесь » USMI » MCU, SoC, CPU Микроконтроллеры » JieLi UBOOT tool