16Gb eMMC модуль для Renegade ROC-RK3328-CC

  • Цена: $23.64
  • Предлагаю вниманию обзор модуля eMMC емкостью 16Gb для апгрейда одноплатного ПК Renegade ROC-RK3328-CC

    Покупалось на свои кровные $20 (после двух месяцев уговоров жаба согласилась на покупку, + удалось применить купон).

    Модуль специфический, потребуется далеко не всем.

    Под катом подробности с установкой перепрошивкой и камланием.

    Посылка — обычный пакет, внутри в плотном рулоне пупырки пакетик с модулем и парой болтиков (один запасной).

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

    16Gb eMMC модуль для Renegade ROC-RK3328-CC

    Открываем смотрим: собрано вроде бы качественно, нет царапин или следов флюса.

    Но текстолит с торцов даже не пытались шлифануть.

    16Gb eMMC модуль для Renegade ROC-RK3328-CC

    16Gb eMMC модуль для Renegade ROC-RK3328-CC

    На модуле распаян один чип Samsung KLMAG1JENB-B041

    Характеристики:

    — eMMC 5.1

    — емкость 16GB

    — интерфейс HS400

    — питание 1.8/3.3 V

    — рабочие температуры -25..+85°C

    — Product Status EOL

    Защелкиваю и фиксирую болтом

    16Gb eMMC модуль для Renegade ROC-RK3328-CC

    Далее по моему наивному плану должно было произойти следующее:

    1. Создание raw / img образа с microSD рабочей действующей системы.

    2. Заливка ее на eMMC.

    3. Запуск и благословление пенным cU.

    Для прошивки потребовался USB кабель male-male, который можно собрать двумя способами:

    — взять удлинитель USB-A и ободрать жестянку с корпуса где гнездо

    — взять 2 ненужных/дефектных зарядных шнура, обрезать штекеры, зачистить и спаять по схеме 1:1 (фото из сети).

    16Gb eMMC модуль для Renegade ROC-RK3328-CC

    Для прошивки используется нижнее гнездо USB.

    16Gb eMMC модуль для Renegade ROC-RK3328-CC

    и волшебная кнопочка Uboot.

    16Gb eMMC модуль для Renegade ROC-RK3328-CC

    Но не торопитесь все это подключать, ибо здесь зарыты:

    Грабли №1

    Модуль продается уже прошитый на Android от Firefly, т.е. содержит GPT разделы которые нужно стереть.

    16Gb eMMC модуль для Renegade ROC-RK3328-CC

    Но выложенные на сайте драйвера для прошивки из-под windows при попытках прошить в MaskROM режиме используя AndroidTool вызывают ошибку «Flash check error».

    А при попытке стереть — вызывают BSOD (опробовал на нескольких системах).

    Максимум что я мог сделать используя — это посмотреть тип чипа Flash_Id, Flash_Info и таблицу разделов (см выше).

    16Gb eMMC модуль для Renegade ROC-RK3328-CC

    16Gb eMMC модуль для Renegade ROC-RK3328-CC

    Ок, хорошо.

    Перегружаемся в Ubuntu и шьемся через православную опенсорсную консоль rkdeveloptool.

    Установка утилиты:

    
    
    #install libusb and libudev
    sudo apt-get install pkg-config libusb-1.0 libudev-dev libusb-1.0-0-dev dh-autoreconf
    # clone source and make
    git clone https://github.com/rockchip-linux/rkdeveloptool
    cd rkdeveloptool
    autoreconf -i
    ./configure
    make
    sudo make install

    Для того чтобы система правильно опознала подключенный ПК нужно добавить PID/VID платы в правило udev.

    Создаем новый файл

    sudo nano /etc/udev/rules.d/99-rk-rockusb.rules

    и сохраняем в него текст

    SUBSYSTEM!="usb", GOTO="end_rules"
    
    # RK3036
    ATTRS{idVendor}=="2207", ATTRS{idProduct}=="301a", MODE="0666", GROUP="users"
    # RK3229
    ATTRS{idVendor}=="2207", ATTRS{idProduct}=="320b", MODE="0666", GROUP="users"
    # RK3288
    ATTRS{idVendor}=="2207", ATTRS{idProduct}=="320a", MODE="0666", GROUP="users"
    # RK3328
    ATTRS{idVendor}=="2207", ATTRS{idProduct}=="320c", MODE="0666", GROUP="users"
    # RK3368
    ATTRS{idVendor}=="2207", ATTRS{idProduct}=="330a", MODE="0666", GROUP="users"
    # RK3399
    ATTRS{idVendor}=="2207", ATTRS{idProduct}=="330c", MODE="0666", GROUP="users"
    LABEL="end_rules"

    Делаем рестарт правил udev.

    sudo udevadm control --reload-rules
    
    sudo udevadm trigger

    Подключаем плату USB шнуром к хосту, зажимаем кнопку Uboot, подаем питание и через 3-4 секунды отпускаем кнопку Uboot.

    Для прошивки потребуется сначала загрузить в память платы специальный загрузчик rk3328_loader_ddr786_v1.06.243.bin. Он располагается в ОЗУ и занимается тем, что пишет принимаемый raw файл на еММС.

    $ rkdeveloptool db rk3328_loader_ddr786_v1.06.243.bin
    
    Downloading bootloader succeeded.

    И далее шьем собственно образ нашей системы начиная с адреса 0х0

    $ rkdeveloptool wl 0x0 image.img
    
    Write LBA from file (100%)

    Перезагружаем плату

    $rkdeveloptool rd

    И радуемся.

    Goto END.

    Грабли №2

    Вы наступите на них если размер образа снятый с вашей системы будет больше емкости еММС.

    Чтобы сделать кошерный образ для записи нужно сделать ему обрезание. Я не настоящий моэль линуксоид, поэтому использовал gparted для уменьшения ext4 раздела исходной microSD флешки и удаление неразмеченной части из образа в WinHex. Для этого нужно в WinHex подгрузить img файл и запомнить номер первого сектора неразмеченной области.

    16Gb eMMC модуль для Renegade ROC-RK3328-CC

    Лирическое отступление

    Ваша система может использовать несколько разделов с разной файловой системой (например raspbian использует boot раздел отформатированный в FAT32, после которого идет основной раздел ext4. Сборки типа hass.io при разворачивании создают на флешке штук пять разделов. При обрезании все нужные для работы разделы будут сохранены.

    Далее выбираем в меню «клонирование диска».

    16Gb eMMC модуль для Renegade ROC-RK3328-CC

    В настройках клонирования выбираем источником — img образ, назначением — выходной файл, стартовым сектором 0, число секторов вычисляется из начального сектора неразмеченного пространства минус 1.

    16Gb eMMC модуль для Renegade ROC-RK3328-CC

    Залили обрезанный образ? Молодцы! Теперь после перезагрузки надо его раздвинуть.

    В armbian-config нет аналога малиновой утилиты «expand partition», так что логинимся на консоль Renegade и задействуем fdisk.

    Смотрим что у нас на флешке

    sudo fdisk /dev/mmcblk0  
    
    Welcome to fdisk (util-linux 2.33.1).
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
    Command (m for help):

    Жмем р

    
    
    Command (m for help): р
    Disk /dev/mmcblk0: 14.6 GiB, 15634268160 bytes, 30535680 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0xabc164fa
    Device Boot Start End Sectors Size Id Type
    /dev/mmcblk0p1 32768 15253503 15220736 7.3G 83 Linux
    Command (m for help):

    Запоминаем два ваших параметра:

    1. Boot Start sector 32768

    2. Размер mmcblk0: 14.6 GiB, 15634268160 bytes,30535680 sectors

    Жмем d для удаления раздела с данными (не бойтесь это не больно).

    Сommand (m for help): d
    
    Selected partition 1
    Partition 1 has been deleted.
    Command (m for help):

    Жмем n для переcоздания раздела с увеличением размера

    
    
    Command (m for help): n
    Partition type
    p primary (0 primary, 0 extended, 4 free)
    e extended (container for logical partitions)
    Select (default p):

    Жмем enter или р — подтверждаем что это primary раздел, выбираем номер 1, вводим номер первого сектора 32768 и конечного сектора 30535679.

    
    
    Select (default p): p
    Partition number (1-4, default 1): 1
    First sector (2048-30535679, default 2048): 32768
    Last sector, ±sectors or ±size{K,M,G,T,P} (32768-30535679, default 30535679):
    Created a new partition 1 of type 'Linux' and of size 14.6 GiB.
    Partition #1 contains a ext4 signature.
    Do you want to remove the signature? [Y]es/[N]o: n
    Command (m for help):

    Жмем р — проверяем что натворили с размерами.

    
    
    Command (m for help): p
    Disk /dev/mmcblk0: 14.6 GiB, 15634268160 bytes, 30535680 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0xabc164fa
    Device Boot Start End Sectors Size Id Type
    /dev/mmcblk0p1 32768 30535679 30502912 14.6G 83 Linux
    Command (m for help):

    Все ок, жмем w — запись изменений.

    
    
    Command (m for help): w
    The partition table has been altered.
    Syncing disks.

    Перзагружаем систему

    sudo reboot

    Логинимся и делаем собственно ресайз раздела

    
    
    $ sudo resize2fs /dev/mmcblk0p1
    resize2fs 1.44.5 (15-Dec-2018)
    Filesystem at /dev/mmcblk0p1 is mounted on /; on-line resizing required
    old_desc_blocks = 1, new_desc_blocks = 1
    The filesystem on /dev/mmcblk0p1 is now 3812864 (4k) blocks long.

    Проверяем — все ок.

    
    
    $ df -h
    Filesystem Size Used Avail Use% Mounted on
    udev 457M 0 457M 0% /dev
    tmpfs 93M 4.3M 88M 5% /run
    /dev/mmcblk0p1 15G 4.1G 11G 29% /
    tmpfs 461M 0 461M 0% /dev/shm
    tmpfs 5.0M 4.0K 5.0M 1% /run/lock
    tmpfs 461M 0 461M 0% /sys/fs/cgroup
    tmpfs 461M 4.0K 461M 1% /tmp
    /dev/zram0 49M 2.2M 43M 5% /var/log
    tmpfs 93M 0 93M 0% /run/user/1000

    END

    И зачем вот это все делалось??

    А вот зачем:

    Вставляем и монтируем в /media/microsd карточку на 16Gb UHS1, отформатированную в FAT32

    Тестируем скорости

    $ sudo hdparm -tT /dev/mmcblk1
    
    /dev/mmcblk1:
    Timing cached reads: 1940 MB in 2.00 seconds = 970.20 MB/sec
    Timing buffered disk reads: 68 MB in 3.07 seconds = 22.12 MB/sec

    22.12 MB/sec, но погодите радоваться

    $ dd if=/dev/zero of=/media/sdcard/tmp.bin bs=1M count=1024      
    
    1024+0 records in
    1024+0 records out
    1073741824 bytes (1.1 GB, 1.0 GiB) copied, 115.182 s, 9.3 MB/s

    9.3 MB/s вот это более похоже на правду.

    А это скорости чтения/записи на еММС

    $ sudo hdparm -tT /dev/mmcblk0
    
    /dev/mmcblk0:
    Timing cached reads: 1952 MB in 2.00 seconds = 975.97 MB/sec
    Timing buffered disk reads: 132 MB in 3.02 seconds = 43.72 MB/sec
    $ sync; dd if=/dev/zero of=tempfile bs=1M count=1024; sync
    1024+0 records in
    1024+0 records out
    1073741824 bytes (1.1 GB, 1.0 GiB) copied, 23.5187 s, 45.7 MB/s

    43.72 MB/sec vs 9.3 MB/s, разница впечатляет.

    Система стартует и работает в разы быстрее, особенно это заметно при стартовой загрузке docker + контейнеров и при обновлении homeassistant и плагинов.

    На этом все…

Понравилась статья? Поделиться с друзьями:
Agkz.ru - блог файлообменника
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: