USB-хост не работает в initramfs [Yocto]

#usb #yocto #zynq #petalinux #initramfs

Вопрос:

Я пишу вам, чтобы спросить вас о следующем: Я работаю над пользовательским встроенным дистрибутивом Linux для платы на базе Zynq700. Одной из функций, которые необходимо добавить, является поддержка USB в режиме хоста, чего я добился.

Таким образом, с помощью rootfs у меня есть комбинация правил udev и записей fstab, которые позволяют автоматически подключать данный USB-накопитель при определенных условиях. Однако, если мы изменим файловую систему на initramfs, флэш-накопитель не только не будет автоматически монтироваться, но и не будет распознан.

Я посмотрел на вывод dmesg, lsusb и lsmod, чтобы убедиться в этом, и подтвердил, что функция драйвера не вызывается. Кроме того, я также замечаю, что USB-накопитель не получает никакого питания (HW правильный, потому что с тем же hdf и крышами он работает).

Есть ли какая-то особенность initramfs по сравнению с rootfs, которую я упускаю, которая оказывает такой эффект?

Заранее спасибо

Комментарии:

1. Обычно an initramfs — это просто файловая система меньшего размера для того же ядра, используемая для подготовки системы к монтированию реальной файловой системы. Однако часто initramfs не загружает модули ядра — в этом случае вам необходимо убедиться, что драйвер USB-хоста вашего чипсета и универсальный драйвер USB-накопителя являются встроенными (не динамически загружаемыми) модулями ядра.

2. Привет, Джастин, прежде всего, большое тебе спасибо за твой ответ. Как я и опасался, похоже, это и есть путь вперед. Тем не менее, я попытался загрузить драйвер USB, добавив KERNEL_MODULE_AUTOLOAD = "usb-storage" его в свой build/conf/local.conf . Является ли этот подход неправильным? Если да, то было бы целесообразно использовать задачу menuconfig ядра для ее настройки? (используя раздел [Драйверы устройств -gt; Поддержка USB])

3. Еще раз здравствуйте, используя menuconfig, USB-устройства теперь являются драйверами ядра, а не модулями ядра, как раньше. Чтобы быть уверенным, я использовал cat /lib/modules/lt;kernelgt;/modules.builtin и получаю на своем выходе то, что uas usb_storage usbcore scsi_mod usb_common присутствует. Есть какие-нибудь идеи?

4. Похоже, у вас есть все модули ядра, которые вам нужны как встроенные. Были ли зарегистрированы какие-либо шины USB? Вы можете проверить ls /sys/bus/usb/devices/usb* — должно быть usb0 и, возможно, больше.

5. Решенный. Причина: файлы ps7init платформы hw, связанные с FSBL