• Железо
  • Снятие полного дампа памяти с КП Antminer на SD-карту

Снятие дампа на SD карту происходит аналогично Снятию полного дампа памяти с КП Antminer S9 по TFTP за исключением того, что мы не будем поднимать TFTP сервер. А выгружать файлы будем напрямую на SD-карту.

В качестве примера возьмём контрольную плату от Antminer S9k, как раз на таких платах возникают проблемы снятия дампа по TFTP, зато хорошо работает поддержка MMC команд.

Начнём. Сперва подготовьте программу «Tera Term».
Прога свободная, можно скачать на официальном сайте.
Эта программа поможет нам работать с удобным терминалом.

Приготовьте отформатированную в FAT32 SD-карту.

Подключите КП к USB-UART преобразователю.
Установите SD-карту в слот.
Запустите контрольную плату и перейдите в режим u-boot.

Проверьте работоспособность слота SD-карты:

Если в ответ мы получим данные по SD-карте, значит карта доступна и всё работает нормально.

Считайте 1 часть дампа памяти в ОЗУ:

Дождавшись результата:

Можно приступать к записи данных в файл на SD-карту:

Прописываем в терминал:

Значит, что всё записалось хорошо.

Получим 2 часть в память ОЗУ:

И запишем на SD-карту:

Далее 3 часть:

Ну и последнюю часть:

После получения ответа об успешной записи на SD-карту, отключаем питание КП и вынимаем флешку.

Если проверить содержимое SD на компьютере мы увидим 4 файла дампа NAND.

Теперь этим дампом можно прошивать остальные контрольные платы.

Материал подготовил: @Vinogradov
Копирование и распространение с разрешения автора.

    9 месяцев спустя

    полезная инфа, я как раз буду снимать вирусный дамп. А интересно, как подмонтировать нанд на рабочей системе?

    • Vinogradov ответили на это сообщение.

      Astranome Это от того, как завёрнута ФС:
      Если jffs2, то так : Собираем свой образ для контрольных плат Antminer S9
      Если ramdisk.image.gz, то так: Собираем свой образ для контрольных плат Antminer S9k, T17+ и пр.
      Если initramfs.bin.SD, то так: Собираем свой образ для контрольных плат Antminer L3+

      17 дней спустя

      Minerflash Установите SD-карту в слот, не переключая перемычки.

      на 9К есть перемычки?

      • Vinogradov ответили на это сообщение.

        Minerflash Дамп снял, инструкция рабочая, спасибо!
        Вопрос = если НАНД чистая, то будет ли работать загрузка с SD ? Перемычек то нетути...

        • Minerflash ответили на это сообщение.

          У меня JFFS2, загружен Ангстром вашего изготовления. МС установил. SD карту подмонтировать - не проблема:
          mkdir /mnt/sd1
          mount /dev/mmcblk0p1 /mnt/sd1
          ls /mnt/sd1 и видны файлы на флешке
          а трюк mount /dev/mtdblock1 /mnt/nand1 не срабатывает ...
          что то я не так делаю. -t jffs2 или ещё какие аргументы указать?

          Minerflash Значит, что всё записалось хорошо.

          к сожалению, микро СД карты - дерьмовые ППЗУ, хватает на 100 циклов, а потом они или вообще не определяются, либо переходят в ридонли ("запись прошла успешно" - а на деле ничего не записалось). Или с них система не грузится

          • Minerflash ответили на это сообщение.

            Astranome К сожалению нет. Сталкивались уже с таким, когда ребята затирали всю nand командой nand erase.chip, потом по каким-то обстоятельствам перезагружали КП.
            Такие NAND выпаивали и припаивали к КП от S9, там так же через u-boot шилось и припаивалось на место.
            Возможно есть способы заставить прошиться, замыкая ножки на nand чипе, но мы не пробовали.

            • Astranome ответили на это сообщение.

              Astranome Согласен. Качество некоторых SD мусорное.

              Minerflash Есть 2 способа записать НАНД (на кастрированной КП), не выпаивая.

              1. Через JTAG и Vivado - мною опробован - нужно подготовить 2 файла - BOOT.bin FSBL.elf . Подключить ЖТАГ, загрузить Xilinx SDK из Vivado . В SDK запустить: Меню--Xilinx--Program Flash и подсунуть эти 2 файла. Если процесс выпадает в ошибку, то убрать питание с платы, замкнуть пинцетом нераспаянную перемычку и включить питание , через 5сек. пинцет можно убрать. И повторить попытку. НАНД должна прошиться.
              2. Загрузиться с СД-карты. Для этого надо подать на контакт НАНД, который идёт к MIO5 процессора +3 Вольта через резистор 1 - 10 К. Как найти этот контакт: Поставить плату так, чтобы ключ на микросхеме был справа вверху. Берём нижний ряд контактов и отсчитываем слева >>>направо пятый вывод (чуть левее белой черточки). На него и подаём +. Можно вызвонить , куда он идёт - на другой стороне есть R1. А можно в момент загрузки замкнуть иголкой 5 и 6 контакты : на 6й уже подана напруга (для загрузки с НАНД). Я не пробовал этот способ, у меня ЖТАГ есть.

                Astranome У нас тоже есть отладчик. Но Vivado весит уж очень много. Да и награмождён он всяким, что разбираться лень.

                • Astranome ответили на это сообщение.

                  Vinogradov Ту виваду, которая много весит, ни в коем случае не надо ставить. Я ставил 2016 - и всё ок, в основном пользуюсь 2018.2 - много проектов (в Сети) на нём сделано. За 10 лет Вивадо потяжелел в 10 раз (за 100 Гиг), а НИКАКИХ новых фич в нём не завелось (если работать с ЦИНКом), совсем ничего нового и лучшего. Так что ставьте старую версию. А насчёт освоения -- для нашей узкой задачи освоение займёт пару часов. Вот прямо сейчас занимаюсь снятием дампа с вирусной платы. (буду делать комплект тулзов для деактивации вируса). Так вот это сделать -- снять дамп с вирусной платы -- невозможно без JTAG и SDK ! U-boot остановить - никак, SD он не видит, mtd info , mtd_debug, nand info, mmc info - не понимает. С SD загрузиться -вообще невозможно. А запустив 3 команды в SDK через 2 минуты получаю рабочую консоль ! Как вставлять сюда картинку -ХЗ , вставлю лог:

                  U-Boot 2022.01Astra!-00054-g38f57528dd (Sep 25 2023 - 00:18:09 +0300) Нажмите чтобы развернуть U-Boot 2022.01Astra!-00054-g38f57528dd (Sep 25 2023 - 00:18:09 +0300) Нажмите чтобы скрыть

                  CPU: Zynq 7z010
                  Silicon: v3.1
                  Model: Bitmain Antminer S9 Board
                  DRAM: ECC disabled 512 MiB
                  NAND: timeout while waiting for chip to become ready
                  timeout while waiting for chip to become ready
                  device found, Manufacturer ID: 0x2c, Chip ID: 0xda
                  Micron MT29F2G08ABAEAWP
                  256 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
                  timeout while waiting for chip to become ready
                  timeout while waiting for chip to become ready
                  WARNING: MT29F2G08ABAEAWP: the ECC used on your system is too weak compared to the one required by the NAND chip
                  256 MiB
                  MMC: arasan_sdhci mmc@e0100000: arasan_sdhci_probe: CLK 99999999
                  mmc@e0100000: 0
                  Loading Environment from FAT... *** Warning - bad CRC, using default environment

                  In: serial@e0001000
                  Out: serial@e0001000
                  Err: serial@e0001000
                  Net:
                  ZYNQ GEM: e000b000, mdio bus e000b000, phyaddr 1, interface rgmii-id

                  Warning: ethernet@e000b000 (eth0) using random MAC address - 12:0a:1d:97:da:a4
                  eth0: ethernet@e000b000
                  Hit any key to stop autoboot: 0
                  antminer> nand
                  nand - NAND sub-system

                  Usage:
                  nand info - show available NAND devices
                  nand device [dev] - show or set current device
                  nand read - addr off|partition size
                  nand write - addr off|partition size
                  read/write 'size' bytes starting at offset 'off'
                  to/from memory address 'addr', skipping bad blocks.
                  nand read.raw - addr off|partition [count]
                  nand write.raw[.noverify] - addr off|partition [count]
                  Use read.raw/write.raw to avoid ECC and access the flash as-is.
                  nand erase[.spread] [clean] off size - erase 'size' bytes from offset 'off'
                  With '.spread', erase enough for given file size, otherwise,
                  'size' includes skipped bad blocks.
                  nand erase.part [clean] partition - erase entire mtd partition'
                  nand erase.chip [clean] - erase entire chip'
                  nand bad - show bad blocks
                  nand dump[.oob] off - dump page
                  nand scrub [-y] off size | scrub.part partition | scrub.chip
                  really clean NAND erasing bad blocks (UNSAFE)
                  nand markbad off [...] - mark bad block(s) at offset (UNSAFE)
                  nand biterr off bit - make a bit error at offset and bit position (UNSAFE)
                  nand lock [tight] [status]
                  bring nand to lock state or display locked pages
                  nand unlock[.allexcept] [offset] [size] - unlock section
                  antminer> nand info

                  Device 0: nand0, sector size 128 KiB
                  Page size 2048 b
                  OOB size 64 b
                  Erase size 131072 b
                  subpagesize 2048 b
                  options 0x00005000
                  bbt options 0x00028000
                  antminer> mmc info
                  Device: mmc@e0100000
                  Manufacturer ID: 3
                  OEM: 5344
                  Name: SU02G
                  Bus Speed: 50000000
                  Mode: SD High Speed (50MHz)
                  Rd Block Len: 512
                  SD version 3.0

                    Astranome Как вставлять сюда картинку -ХЗ

                    Так

                    Написать ответ...
                    Copyright (c) 2025 Minerflash.ru support@minerflash.ru