Получите IP-адрес на RaspberryPi 4 с изображением Yocto

Я использовал bitbake для создания образа Linux для моей платы raspberry pi 4, следуя инструкциям, приведенным в слое meta-raspberrypi (https://github.com/agherzan/meta-raspberrypi). Я могу подключиться к своей плате с помощью кабеля FTDI USB-UART и запустить minicom на моем хост-компьютере. Однако мне нужно передать файлы на мою доску с помощью SCP. Для этого мне нужен IP-адрес, и когда я выполняю команду ip на своей плате RPi4, я получаю вывод, показанный ниже, не показывающий IP-адреса, который я мог бы использовать. Не могли бы вы дать какое-нибудь руководство? Мне нужно что-то добавить в мои файлы conf или bblayers?

root@raspberrypi4-64:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq qlen 1000
    link/ether dc:a6:32:57:bb:1f brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
    link/ether dc:a6:32:57:bb:21 brd ff:ff:ff:ff:ff:ff

person moose    schedule 10.02.2021    source источник


Ответы (1)


Поскольку RaspberryPi 4 имеет интерфейсы Ethernet и WiFi, вы можете подключиться к сети, используя один или другой (или оба).

Если у вас есть кабель, подключенный к порту Ethernet, вам просто нужно запросить аренду DHCP. Вы сможете сделать это, запустив udhcpc -i eth0. Если команда udhcpc недоступна, вам нужно будет найти рецепт, содержащий ее (хотя может быть скрыт в файле конфигурации Busybox) или добавить любой другой DHCP-клиент в свой образ.

Если вы планируете подключиться к своей сети через Wi-Fi, вам необходимо сначала подключиться к сети, а затем запросить аренду DHCP. Первое можно сделать с помощью wpa_supplicant, connman, nmcli и т. Д. Они, вероятно, недоступны в вашем изображении, поэтому вам нужно сначала добавить один. Чтобы подключиться к wpa_supplicant, сделайте следующее: wpa_passphrase "<SSID>" > wpa.conf замените <SSID> на SSID (имя) сети, к которой вы хотите подключиться. Затем он будет ждать, пока вы введете пароль этой сети. Затем запустите wpa_supplicant -iwlan0 -cwpa.conf&. Это запустит соединение в фоновом режиме. Если в журналах соединение установлено успешно, можно продолжить. Затем запустите udhcpc -iwlan0, чтобы получить аренду DHCP, и все готово!

Если в вашей сети нет DHCP-сервера (например, прямое соединение с вашим хост-компьютером), вам необходимо назначить IP-адрес вручную, например: ip addr add <IP addr> dev <iface> заменив <IP addr> действительным (в той же подсети, что и другой компьютер (ы) в сеть) IP-адрес (и, возможно, подсеть после него? например, 192.168.1.153/24) и <iface> с eth0 или wlan0.

person qschulz    schedule 10.02.2021
comment
Спасибо, @qschulz. Я думаю, что для rpi4 лучше всего подойдет проводное соединение Ethernet. Однако я ожидаю, что в будущем буду разрабатывать целевое оборудование без блока Ethernet, а код Wi-Fi не будет запущен изначально. Мне интересно, как я собираюсь передавать / отлаживать код? Большая часть моего опыта связана с платформами ARM Cotex, которые используют либо JTAG, либо какое-либо последовательное соединение (например, UART / USB). Есть ли метод или вариант, который мне не хватает? Интересно, как разработчики телефонов Android загружают / отлаживают свой код. Нет порта Ethernet, и я бы подумал, что Wi-Fi - не лучшее соединение для разработчиков. Есть предположения? Спасибо! - person moose; 13.02.2021
comment
Если у вас есть поддержка USB OTG, вы можете использовать fastboot или adb, которые широко используются в Android AFAIK. В противном случае, если у вас есть только USB-хост, попробуйте достать адаптер USB-Ethernet и скомпилировать соответствующие драйверы в загрузчике и ядре, чтобы вы могли загрузить новое ядро ​​/ rootfs / dtb из загрузчика, а также отправить файлы в / из работающего Linux на вашей цели. Если вы хотите отправлять очень маленькие файлы, вы все равно можете использовать kermit или аналогичные последовательные протоколы, но пропускная способность, очевидно, ужасающая (= скорость вашего последовательного порта). - person qschulz; 14.02.2021
comment
У меня будет поддержка USB OTG, и как fastboot, так и adb были бы действительно полезны. Я думаю, что это тот путь, по которому я собираюсь пойти. Я думал, что сначала попробую это на моем RP4, но я не знал, как добавить эти инструменты в мою сборку yocto. Я сделал быстрый поиск и не смог найти подходящий слой для добавления. Если у вас есть какой-либо вклад, это было бы здорово. Я создал отдельный пост для этого вопроса stackoverflow.com/questions/66209136/adb-yocto-recipe. Спасибо! - person moose; 15.02.2021