#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