Как создать загрузочную флешку microSDHC, имея microSD?
Здравствуйте. Есть устройство с embedded linux и некой программой, которая управляет этим устройством. Внутрь устройства ставится microSD флешка, на которой два раздела. Один содержит образ uImage, второй - программу управления. Насколько я понимаю, сначала некий загрузчик устройства (прошитый во флеш-память) разворачивает linux, который содержится в этом uImage, а затем запускается программа со второго раздела флешки.
Есть также образ этой флешки, сделанный HDD Raw Copy Tool.
Для того, чтобы все работало, раньше достаточно было купить microSD-флешку, развернуть на нее образ с помощью HDD Raw Copy Tool, вставить в устройство и все ок. Но сейчас с этим беда. MicroSD флешки днем с огнем не сыщешь, везде microSDHC. А развернуть на microSDHC образ, сделанный с microSD - не вариант, флешка просто не работает.
Соответственно, вопрос: каким образом можно скопировать флешку microSD на microSDHC? Или таких вариантов нет и придется вручную изучать разделы, создавать такую же таблицу разделов на чистой флешке, копировать данные и делать ее как-то загрузочной?
P.S.: еще не факт, конечно, что это заработает, так как может быть это устройство вообще не поддерживает microSDHC. Тогда придется как-то думать, как менять uBoot или uImage. Но это уже следующий этап, если не выйдет с простым копированием.
не претендую на правильность, но лично мое мнение - проверять вот это в первую очередь "устройство вообще не поддерживает microSDHC"
Т.к. на том же orangePI либо на андройд приставках со слотом SD карт(которые умеют в armbian) у меня работают microSD любого типа, записанные из образа....
образ снимался rDriveImage в винде, накатывается так же через кард-ридер.
Пока не ясно, поддерживает ли оно microSDHC. Собираю информацию по крупицам.
Пока что нашел, что процессор там стоит BlackFin ADSP-BF592. В спецификациях не нашел упоминаний mmc в периферии, которую он поддерживает.
Скорее всего, драйвер к mmc находится в зашитой флеш-памяти на плате. Ведь именно она вычитывается во время инициализации, а дальше уже нужно получать доступ к слоту и грузить с него образ линукса и программу.
После производства устройства, в него прошивают u-boot используя некий Byte Blaster. Я думаю, что там же находится и запакованный драйвер mmc.
Это почти все, что я знаю, пока. Варианта проверки вижу два:
1. просто перепаковать флешку и попробовать. 50/50, либо заработает, либо нет
2. каким-то образом научиться перепаковывать u-boot, искать там драйвер mmc, определять как-то, что он умеет читать, что нет, пытаться запаковать туда другой драйвер с поддержкой sdhc...
Я посчитал, что 1 вариант сильно проще. Хоть и не дает 100 процентного результата, т.е. если не прочитает, то это еще не значит, что устройство не поддерживает.
Еще не приходилось копаться в прошивках embedded-устройств.
Насчет вашего образа - не знаю. Мне где-то попадалась информация, что SD и SDHC отличаются. У них разные типы адресации, побайтовая и посекторная. Может быть, что-то еще. Соответственно, образ с полной копией SD-карты не будет работать на SDHC. Могу ошибаться.
Не пробовал, но я бы начал с Acronis True Image или USB Image Tool (https://www.alexpage.de/usb-image-tool/download/) для создания образа и потом бы его записал на другую карту с помощью Rufus
В общем, сделал я образ каждого раздела флешки (обычные образы, не побайтовые). Затем скопировал mbr и таблицу разделов с помощью dd на другую флешку и восстановил образы разделов уже на другую флешку.
Но все это не помогло, устройство с нее не грузится, видимо, простым копированием флешки не обойтись. Нужно каким-то образом ковырять бинарный u-boot, чтобы подменить там драйвер mmc, который читает только SD на драйвер, который читает SD и SDHC. Пока не ясно, как это сделать, изучаю.