Настройка UART/COM в Linux с использованием виртуальной машины Hyper-V Generation 2

Настройка UART/COM в Linux с использованием виртуальной машины Hyper-V Generation 2

Я установил Linux Mint x64 в Hyper-V как виртуальную машину второго поколения на моем рабочем столе Windows 10. Я хотел бы подключить USB->Serial преобразователь (FT232RL) к виртуальной машине, чтобы я мог программировать и отлаживать встроенное оборудование. В Windows FT232RL отображается как "USB Serial Port (COMx)" и работает нормально. Когда я использую VirtualBox, я могу просто подключить или отключить COM-порт от виртуальной машины, и все работает нормально.

В отличие от ВМ поколения 2 в Hyper-V в настройках не отображаются COM-порты/именованные каналы, поэтому я не уверен, как получить доступ к соответствующим настройкам. Есть статьяздесь(больше деталей), который показывает, чего я хочу добиться, за исключением того, что я использую Linux вместо Windows в качестве гостевой ОС.

Итак, как мне это настроить? Я уже посмотрел на setserial в Linux, но пока не нашел решения.

решение1

Итак, похоже, что со временем я выяснил, что есть как минимум три способа заставить это работать.

Первый довольно прост, используя Remote Desktop для доступа к виртуальной машине вместо Hyper-V Launcher. Конечно, для этого требуется, чтобы гостевая ОС имела сервер удаленного рабочего стола и брандмауэр, открытый и IP-адрес был в диапазоне хоста. Используя RDP, вы можете перейти в Show Options -> Local Resources/Local devices and resources -> More -> Select 'Ports'. Затем подключитесь как обычно.

Это решение подходит только для виртуальных машин поколения 1, поскольку оно не создает именованный канал на хостовой ОС. Виртуальные машины поколения 1 позволяют пользователю создавать именованный канал через меню настроек виртуальных машин. Второе решение — использоватьКОМПАЙП. Это включает использование настроек hyper-v для настройки именованного канала на одном из COM-портов, например MySerialPort на COM1 (создает путь именованного канала: \.\pipe\MySerialPort). Затем на хостовой ОС запустите администраторский PS и выполните команду типа: COMpipe.exe -b 115200 -c \\.\COM5 -p \\.\pipe\MySerialPortгде COM5 — это COM-порт на хостовой ОС, который вы пытаетесь использовать. Если все работает, вы сможете использовать COM1 в гостевой ОС и напрямую сопоставить его с COM5 на хосте. По опыту, ошибка GLE=5 означает, что именованный канал не создан в гостевой ОС.

Третье решение гораздо сложнее и описаноздесь(резервная ссылка). Это включает в себя сборку hub4com и запуск com0com (также в качестве администратора) и нескольких других скриптов с проектом hub4com как на гостевой, так и на хостовой ОС.

Кстати, вы можете сопоставить COM-порт с именованным каналом (его необходимо создать каким-либо приложением) с помощьюУстановить-VMComPortи просмотрите сопоставления с помощьюПолучить-VMComPort. Это необходимо для виртуальных машин Gen 2 Hyper-V, поскольку COM-портыневидимый(см. примечание в разделе FAQ по поколению 2) в настройках при настройке виртуальных машин поколения 2.

Связанный контент