Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:2
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Процессорные модули » SK-iMX6S/D-SODIMM
SK-iMX6S-SODIMM-Ind, новая eMMC
Pavel Ivanchenko
Добавлено 11.05.2017 18:26 Редактировалось 19.02.2019 08:06
0
Сообщение: 1
Pavel Ivanchenko
Admin
4.39

Пункты: 92788
Регистрация: 24.03.2009
Пол: Мужчина
Обращаю внимание, нижесказанное касается модулей индустриального температурного диапазона - SK-iMX6S-SODIMM-Ind.

Производитель поставил перед фактом - eMMC флешка снята с производства, на замену идет THGBMHG6C1LBAWL (ранее была THGBMAG5A1JBAWR), из "плюсов" - она 8ГБайт.
Их применение повлекло:
1) Старые сборки ядер опять отказались понимать флешку, потребуется патчить ядро.
2) Некоторые экземпляры наотрез отказывались стартовать с флешки после программирования, как выяснилось, не устраивает режим загрузки с emmc "high speed" (нужен "normal speed"), для этого потребуется либо дорабатывать материнскую плату, либо программировать eFuse.
2.1) Доработка материнской платы требует подтянуть через резистор 1кОм к 3,3В (причем к 3,3В самого модуля!) линию BUS_DA3 (132 контакт модуля)
2.2) Программирование eFuse сводится к следующим командам:
Код
echo 0x00001060 > /sys/fsl_otp/HW_OCOTP_CFG4
echo 0x00000010 > /sys/fsl_otp/HW_OCOTP_CFG5

Команды приведены для справки, не советую с этим упражняться т.к. eFuse однократно программируемые и неправильные значения выведут модуль из строя.
Во вложении архив с MFGTools версия которого понимает новые eMMC и программирует eFuse на загрузку.
Само по себе, конфигурация загрузки с eFuse - это благо, т.к. уже никакое внешнее окружение не может повлиять на конфигурацию загрузки. НО, после перевода конфигурации загрузки процессора с eFuse, нельзя перевести его в режим загрузки по USB с помощью джампера на материнской плате!
Для перехода загрузки по USB возможны два варианта:
1) Программный (если есть доступ к консоли) - выполнить команду "dd if=/dev/zero of=/dev/mmcblk0 bs=1024 count=10000 && sync"
2) Аппаратный (если по какой то причине не возможен вар.1) - при включении питания/сбросе соединить с землей вывод резистора показанного ниже на рисунке.
Причем только на момент включения питания или сброса, потом землю нужно отсоединить (т.к. эта манипуляция "отключает" eMMC интерфейс).
Важно не перепутать вывода у резистора, т.к. другой вывод подключен к 3,3В и можно устроить КЗ.


Attachment file: uploads/forum/forum-mass_eFuse_Burn.rar

UPD 19.05.2017
На FTP аккаунте для SODIMM модулей создал папку Boot/SK-iMX6S-SODIMM-Ind в которой лежит версия с обновляемым скриптом emm_format для полного форматирования флешки.

UPD 10.02.2019
В настоящее время выпускаются модули V1.E, в них изменен режим конфигурации eMMC на "normal speed" - материнскую плату дорабатыать уже не нужно.
Спуститься к концу Подняться к началу
Персональная информация
soldatic
Добавлено 15.05.2017 16:04 Сообщение: 2
soldatic
4

Пункты: 3394
Регистрация: 28.10.2015
Здравствуйте.

Попробовала реализовать Ваши инструкции на модулях
из партии 5шт , из которых 3 не грузятся на демоплате.
Сначала все реализовала на старом модуле (с коммерческой памятью и IMX). Все прошло удачно, только после перпрограммирования ядра и фс скриптом не видится как медиа устройство, но это не важно.

С новым модулем:
- нормально все прошло MfgTool2,
после чего в консоли вижу нормальную загрузку
- командой dd if=/dev/zero of=/dev/mmcblk0 bs=1024
count=10000 && sync успешно перевела в загрузку по USB
- а дальше скрипт mk-sd.sh отказывается:
ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda5 /dev/sdb
$ ./mk-sd.sh /dev/sdb

create the bootable SD card for sodimm_solo on device /dev/sdb
delete partition table [ERROR]
see mk-sd.log for more details


$ cat mk-sd.log
umount: /dev/sdb: not mounted
dd: не удалось открыть «/dev/sdb»: Носитель не найден
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 15.05.2017 16:44 Редактировалось 15.05.2017 16:45 Сообщение: 3
Pavel Ivanchenko
Admin
4.39

Пункты: 92788
Регистрация: 24.03.2009
Пол: Мужчина
Скрипт mk-sd.sh в виртуалке работать не будет, т.к. нужно еще и бинарники в виртуалке обновлять и этим пока не озадачивались.
Т.е. на данный момент программировать можно ТОЛЬКО через MFGTools.
В папку Mfgtools-Rel-4.0.0_130424_MX6S_OEM_UPDATER_SK\Profiles\MX6DL Linux Update\OS Firmware\ копируете rootfs.tar.gz (если правили u-boot - еще u-boot.imx) из папки images своей сборки и все.
Спуститься к концу Подняться к началу
Персональная информация
soldatic
Добавлено 16.05.2017 11:24 Сообщение: 4
soldatic
4

Пункты: 3394
Регистрация: 28.10.2015
Добрый день.
Скопировала rootfs.tar.gz в папку Mfgtools-Rel-4.0.0_130424_MX6S_OEM_UPDATER_SK\Profiles\MX6DL Linux Update\OS Firmware\ (111МБ).
Mfgtools начинает записывать, записывает uboot, затем начинает записывать rootfs, затем зависает и выдает ошибку.
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 16.05.2017 15:41 Сообщение: 5
Pavel Ivanchenko
Admin
4.39

Пункты: 92788
Регистрация: 24.03.2009
Пол: Мужчина
MFGTools при старте загружает по USB загрузчик, uImage_safe и передает управление.
uImage_safe это ядро Linux со встроенной корневой ФС.
После загрузки MFGTools по USB отправляет файлы и команды - см. ucl2.xml (раздел для sodimm).
...
Запускается скрипт форматирования флешки emmc_format, так вот в этой версии, для ускорения процесса (поэтому и приставка mass в названии) форматируется не вся флешка, соответственно потом при копировании у вас все встает.

Самое простое - изменить сценарий программирования - заменить скрипт emmc_format.
Вот пример ucl2.xml:
Код
<CMD state="Updater" type="push" body="send" file="emmc_format">Sending emmc_format</CMD>
<CMD state="Updater" type="push" body="$ cp $FILE /bin/emmc_format"/>
<CMD state="Updater" type="push" body="$ chmod 777 /bin/emmc_format"></CMD>
<CMD state="Updater" type="push" body="send" file="u-boot.imx">Sending U-boot</CMD>
<CMD state="Updater" type="push" body="$ cp $FILE /root/u-boot.imx"/>
<CMD state="Updater" type="push" body="$ dd if=/dev/zero of=/dev/mmcblk0 bs=1024 count=10000 && sync && sync">Clean partitions of eMMC</CMD>

Сам скрипт:
Код
#!/bin/sh

umount /dev/mmcblk0p1
sync

dd if=/dev/zero of=/dev/mmcblk0 bs=512 count=1000 && sync && sync
sfdisk --force -uM /dev/mmcblk0 << EOF
5,,83
EOF
#sfdisk --force -uM /dev/mmcblk0 << EOF
#5,100,83
#EOF

sync
mknod /dev/mmcblk0p1 b 179 1

umount /dev/mmcblk0p1 && sync && sync
mkfs.ext3 -L "Rootfs" /dev/mmcblk0p1
mkdir /mnt/mmcblk0p1
mknod /dev/mmcblk0p1 b 179 1
mount /dev/mmcblk0p1 /mnt/mmcblk0p1
Спуститься к концу Подняться к началу
Персональная информация
soldatic
Добавлено 18.05.2017 18:05 Сообщение: 6
soldatic
4

Пункты: 3394
Регистрация: 28.10.2015
Получилось.

1) скрипт emmc_format
Код

#!/bin/sh

umount /dev/mmcblk0p1
sync

dd if=/dev/zero of=/dev/mmcblk0 bs=512 count=16000000 && sync && sync
sfdisk --force -uM /dev/mmcblk0 << EOF
5,,83
EOF
sync
mknod /dev/mmcblk0p1 b 179 1

umount /dev/mmcblk0p1 && sync && sync
mkfs.ext3 -L "Rootfs" /dev/mmcblk0p1
mkdir /mnt/mmcblk0p1
mknod /dev/mmcblk0p1 b 179 1
mount /dev/mmcblk0p1 /mnt/mmcblk0p1


dd - форматирую один раз (очень долго)
затем комментирую и прошиваю без форматирования.
Также пропатчила файл drivers/mmc/core/mmc.c

Ну, в общем, удобоваримо.
Только, привыкла как карту памяти в виртуалке, а теперь не видится.
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 19.05.2017 09:07 Редактировалось 19.05.2017 09:07 Сообщение: 7
Pavel Ivanchenko
Admin
4.39

Пункты: 92788
Регистрация: 24.03.2009
Пол: Мужчина
Цитата
dd - форматирую один раз (очень долго)
А в чем смысл сего?
Форматировать ведь в разы быстрее (и наверное правильнее) ...
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 19.05.2017 09:47 Сообщение: 8
sasamy
4.71

Пункты: 83528
Регистрация: 14.08.2009
Цитата

А в чем смысл сего?


Тоже не понял смысла забивать всю флешь нулями, изначальный вариант

dd if=/dev/zero of=/dev/mmcblk0 bs=512 count=1000 && sync && sync

удаляет таблицу разделов и очищает переменные окружения uboot
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 19.05.2017 11:56 Сообщение: 9
Pavel Ivanchenko
Admin
4.39

Пункты: 92788
Регистрация: 24.03.2009
Пол: Мужчина
Цитата
И висит. Типа с флешкой никаких операций? Может, подправите скрипт правильно?
Может с пониманием дела подойдете к своим действиям?
Цитата
SK-iMX6S-SODIMM-Ind, новая eMMC

Цитата
Board: SK-iMX6-OEM:[ POR]
Boot Device: NAND
I2C: ready
DRAM: 512 MB
NAND: No NAND device found!!!
Спуститься к концу Подняться к началу
Персональная информация
incredi
Добавлено 19.05.2017 12:59 Редактировалось 19.05.2017 13:13 Сообщение: 10
incredi
0

Пункты: 3192
Регистрация: 11.12.2014
Дайте, пожалуйста, нормальный рабочий инструмент!
Код

Welcome to Buildroot - Initramfs
SK-iMX6-SODIMM_safe login: UTP: received command 'send'
UTP: sending Success to kernel for command send.
UTP: received command '$ cp $FILE /root/u-boot.imx'
UTP: executing "cp $FILE /root/u-boot.imx"
UTP: sending Success to kernel for command $ cp $FILE /root/u-boot.imx.
utp_poll: pass returned.
UTP: received command '$ dd if=/dev/zero of=/dev/mmcblk0 bs=1024 count=10000 && sync && sync'
UTP: executing "dd if=/dev/zero of=/dev/mmcblk0 bs=1024 count=10000 && sync && sync"
10000+0 records in
10000+0 records out
UTP: sending Success to kernel for command $ dd if=/dev/zero of=/dev/mmcblk0 bs=1024 count=10000 && sync && sync.
utp_poll: pass returned.
UTP: received command '$ /bin/emmc_format'
UTP: executing "/bin/emmc_format"
umount: can't umount /dev/mmcblk0p1: No such file or directory
Warning: /dev/mmcblk0 is not a block device
Disk /dev/mmcblk0: cannot get geometry

Disk /dev/mmcblk0: 1 cylinders, 255 heads, 63 sectors/track

sfdisk: ERROR: sector 0 does not have an msdos signature
/dev/mmcblk0: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = mebibytes of 1048576 bytes, blocks of 1024 bytes, counting from 0

Device Boot Start End MiB #blocks Id System
/dev/mmcblk0p1 0+ 7- 8- 8032 83 Linux
/dev/mmcblk0p2 0 - 0 0 0 Empty
/dev/mmcblk0p3 0 - 0 0 0 Empty
/dev/mmcblk0p4 0 - 0 0 0 Empty
Warning: no primary partition is marked bootable (active)
This does not matter for LILO, but the DOS MBR will not boot this disk.
Successfully wrote the new partition table

Re-reading the partition table ...
BLKRRPART: Inappropriate ioctl for device

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
umount: can't umount /dev/mmcblk0p1: Invalid argument
mke2fs 1.42.7 (21-Jan-2013)
mkfs.ext3: No such device or address while trying to determine filesystem size
mknod: /dev/mmcblk0p1: File exists
mount: mounting /dev/mmcblk0p1 on /mnt/mmcblk0p1 failed: No such device or address
UTP: sending Non-success to kernel for command $ /bin/emmc_format.
utp_poll: exit with status 65280
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Процессорные модули » SK-iMX6S/D-SODIMM