Включить виртуальный порт Com, последовательное соединение (обновление)

788
Michael

Я работаю с платой IMX6, использую ядро ​​linux, u-boot и rootfs, сгенерированные из yocto. Я использовал одно из основных изображений. core-image-minimal-dev для создания образа ядра. Я добавил в usbutils как image_install в рецепте core-image-minimal-dev.

Я опубликовал предыдущий вопрос в поисках поддержки при подключении к порту USB2.0, и этот вопрос уже решен. Сейчас я хочу добиться того, чтобы устройство распознавалось как VCP. Мне нужно подключить внешнее устройство к USB2.0 и быть распознанным как tty соединение. В этот момент, когда я подключаю устройство все, что я получаю.

new full-speed USB device number 5 using ci_hdrc  usb 2-1: New USB device found, idVendor-10c4, idProduct=ea60 usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 2-1: Product: CP2104 USB to UART Bridge Controller usb 2-1: Manufacturer: Silicon Labs usb2-1: SerialNumber: 013C2C09 

в каталоге / dev / не происходит никаких изменений, как это должно быть. Я надеюсь увидеть что-то похожее на / dev / ttyUSB0. Где я могу написать приложение, которое будет общаться через последовательный порт, используя этот порт.

в ходе моих исследований я обнаружил несколько ссылок на то, что драйверы виртуальных COM-портов предварительно встроены в ядро ​​Linux. На сайте чипа FTDI я нашел набор инструкций с некоторыми инструкциями.

http://www.ftdichip.com/Support/Documents/AppNotes/AN_220_FTDI_Drivers_Installation_Guide_for_Linux.pdf

Я прошел шаги, чтобы добавить новое правило для VCP FTDI.

Я взял номер idproduct и idvendor с момента, когда устройство было подключено. Поскольку у меня нет команды udevcontrol_reload rules, загруженной в ОС, я просто сделал цикл питания. К сожалению, не было удачи.

Далее я внес изменения в ядро ​​через настройку меню.

bitbake -c menuconfig virtual / kernel USB_SERIAL_CONSOLE уже был включен на плате. Был помечен как поддержка USB Serial Converter. Я пошел и включил USB_SERIAL_CP210X, который был помечен как семейство контроллеров моста UART USB CP210x. когда я нажал, я получил всплывающее окно.

Эта функция зависит от другого, который был настроен как модуль. В результате эта функция будет построена как модуль.

после того, как USB CP210x был отмечен как выход из конфигурации меню и продолжил компиляцию ядра с помощью bitbake -f -c compile virtual / kernel, за которым следует bitbake core-image-minimal-dev

Я до сих пор не вижу vcp заполнить в / dev /

Я посетил базу данных драйверов ядра Linux и сообщил, что семейство контроллеров моста UART USB CP210x не имеет зависимостей. Поэтому я не понимаю, почему всплывающее окно говорит, что у него были другие зависимости.

Следующим, что я обнаружил в своем исследовании, была необходимость загрузки модуля в linux через insmod или mknod. Так что я посмотрел на это. Каждая из ссылок, которые я нашел, указала мне на компиляцию некоторых файлов .ko, которые находились в каталоге lib / modules / ... / serial /. Тем не менее, пройдя через rootfs для ОС, я не могу найти каталог модулей. либо ~ / lib /, либо / usr / lib

(ОБНОВИТЬ)

Итак, я настроил defconfig так, чтобы

config_usb_serial  config_usb_serial_ftdi_sio 

оба должны быть загружены, а не как модули.

Я нашел некоторую полезную информацию, которая включает создание mknod и затем insmod.

$ mknod /dev/ttyUSB0 c 188 0 $ insmod /lib/modules/4.1.15-1.0.0+g3924425/kernel/drivers/usb/serial/usbserial.ko vendor=0x067b product=0x2303 

для меня я хотел бы использовать драйвер cp2104 вместо универсального. У меня проблемы с тем, что у меня нет каталога модулей. В каталоге / lib /, где у меня должен быть каталог модулей, его нет. Любое понимание, почему я пропускаю каталог модулей?

Какие-либо предложения?

0

1 ответ на вопрос

0
djsmiley2k

Во-первых, если нет причин загружать его (или его deps) как модуль, я бы посмотрел на их статическое встраивание в ядро, чтобы вам не нужно было загружать их, или смотрел на используемый вами дистрибутив и то, как он загружается. модули .

Если вы думаете, что загрузили модуль правильно, но не уверены - используйте lsmod.

Если lsmod показывает cp210, значит, модуль уже загружен, и это не ваша проблема.

djsmiley2k, я новичок в yocto и манипулирую ядрами. Когда я попытался загрузить cp210, мне потребовалось сделать это как модуль, когда я нажал и по умолчанию , Я попытался lsmod по вашему предложению, и единственное, что было возвращено, выглядело как этот «Размер модуля, используемый» Это было все. Michael 6 лет назад 0