Работаю на комплекте
iMX6S-OEM + SK-iMX6/53/50-MB.
Собираю в виртуальной машине систему с Qtcreatpr. Все собирается без ошибок, карта записывается, но с неё загрузка не идёт.
Переключатели все как надо, карта вставлена в слот X1.
Если войти в меню uboot, то картина такая: mmcinfo в упор не видит карту, если она в слоте X1, но нормально видит её,
если она в слоте X23 (на материнской плате).
После загрузки (штатной системой), где бы не стояла карта, она прекрасно монтируется в файловую систему.
Карта Mirex microSDHC 4Gb, class4. В других системах нормально работает.
И ещё. При сборке и "заливке" распознаётся как /dev/mmcblk0, но не как /dev/sd*
Кто-то сталкивался с подобным? Есть решение?
какая версия buildroot - я так понял с ядром 3.10.17 ?
как вы заходите в меню u-boot если загрузка не идет ? убут грузится но в убуте SD не работает ? плата точно с SD загружается а не с NAND - посмотрите версию убута в логе. Если процессор грузится с SD но в убут не видит карту - попропбуйте изменить настройки пинов
А на что это всё менять?
Собираю я "по книжке", то есть по документации, стараясь вообще не делать (пока) шагов ни влево ни вправо. Пока не понял систему в целом.
Процессор НЕ ГРУЗИТСЯ с SD. Или же я не знаю куда смотреть?
Попробуйте сами посмотреть первый десяток строк при загрузке (см. вложение 1).
Это всё при том, что SD установлена, J1 замкнут.
А во вложении 2 можете увидеть как эта карта монтируется, вот с таким имененм.
Как видите из макроса, почти каждый пин имеет настройки электрических параметров ввода-вывода.
В вашем случае карту явно не устраивают такие параметры (т.к. в запущенном ядре эта карта работает, а там уже свои параметры пинов применяются).
Применяем эвристический метод и метод исключения, судя по названию определений в макросе к скоростным параметрам относятся - PAD_CTL_SPEED_LOW, PAD_CTL_SRE_FAST и PAD_CTL_DSE_80ohm , соответственно их и нужно "проверять".
Не уверен наверняка, но скорее всего карту не устраивает PAD_CTL_SPEED_LOW попробуйте заменить на MED (или FAST, если такой есть в определениях).
PAD_CTL_DSE_80ohm явно можно заменить на PAD_CTL_DSE_40ohm, а то там даже для UART выставлено 40Ом, а для более высокоскоростного USDHS выставили 80Ом.
А можно пояснить немного подробней про процесс загрузки: где место uboot.
Обычная схема- это BIOS инициирует загрузку по своему прошитому списку. Как я понимаю- uboot- это уже работа программы, которая продолжает загрузку, обращаясь к внешнему устройству, вынимая образ ОС ну, и так далее.
То есть отсутствие обращения вообще к SD карте- это вроде бы как BIOS её не видит. Как мне точно узнать, что к карте вообще была хоть попытка обращения со стороны модуля.
Ведь если BIOS не увидит карту, то всё бесполезно. Будет упорно и последовательно продолжаться загрузка NAND, то есть старого uboot, а не того, что я перекомпилирую.
найдите на freescale/nxp i.MX 6Solo/6DualLite Applications Processor Reference Manual
и почитайте Chapter 8 System Boot
откроете много интересного для себя..
если на пальцах - при включение питания в АРМе запускается внутренний нестираемый загрузчик, который в зависимости от настроек ищет и загружает блок с заданного носителя (nor, nand, mmc etc) и передает этому блоку управление..
частным случаем этим блоком может быть т.н. u-boot - многофункциональная программа второго уровня, которая выполняет определенную последовательность скриптов из своих/пользовательских настроек..
всё это расписано на каждом углу в интернете, достаточно сформулировать запрос и внимательно погуглить..
Спасибо за ссылку и довольно подробный ответ.
Я уже начинаю кое-что нащупывать, хотя не совсем понятно как так и почему.
Закончу построение и пару экспериментов и отпишусь о результатах.
Предварительно: кроме прочего, моя карта в виртуальной машине опознаётся не как /dev/sdb, а как /dev/mmcblk0. Связано это с тем, что мой встроенный Card Reader "посажен" не на SCSI шину, а на USB шину (/dev/sdb- устройства на SCSI). Похоже, что это мешает, как минимум приходится редактировать файл mk-sd.sh
Хотя при корректно построенной системе сборки такая разница в именах не должна влиять на работоспособность. Компьютеров с подобными встроенными Card Reader-ми достаточно много и не все пользуются специальными отдельными устройствами чтения карт. Хотя через него (я пробовал Transcend) как раз опознаётся как /dev/sdb.
Но точнее опишусь (I hope) завтра.
видимо речь о х86 системе и виртуалке для сборки под АРМ.. ералаш с имена устройств может быть связан с правилами для udev-a и собственно аппаратурой.. вместо mmcblk можно прописать хоть gorshock и будет работать.. в х86 копаюсь редко и ничего путного подсказать не смогу.. едиственное, посоветую внимательно править скрипты, чтобы не потереть виртуальный hdd/ssd, или, что еще хуже - реальный винт с данными.. и стараться делать бекапы..
из любопытства - это ноутбук или десктопная платформа? обычно встроенные ридеры - это удел ноутбуков, а внешние для десктопов - это выносной ридер на USB.. возможно я тут ошибаюсь..
Первоначальный файл сильно другой, это точно. В новом разделы диска это переменная, а в первоначальном- конкретные цифры, так сказать "абсолютные пути".
Но теперь доверие к тому Libuntu, на который мне дали ссылку "подорвано". Откуда там не работающий сценарий? Может быть "впопыхах" мне прислали FTP ссылку на какой-то промежуточный, "лабораторный" вариант?
Тем более, что у него есть ещё одна неприятность. В ходе экспериментов с внешним CardReader-ом я обнаружил, что Libuntu не распознаёт порты USB 3.0. Во всяком случае не обнаружил CardReader вставленный в такой порт (сам CardReader на это рассчитан, на нём написано).
Вот какие файлы я скачал по ссылке:
iMX6_Libuntu_build_machine
SK-iMX6-OEM_linux_build_machine
Пользуюсь первым, Lubuntu 14.
Второй это Ubuntu 10.
Работаю я на ноутбуке. 10Гб, 64 разряда, VMWare Workstation 12 Player.