【问题标题】:Get IP address on RaspberryPi 4 running Yocto image在运行 Yocto 映像的 RaspberryPi 4 上获取 IP 地址
【发布时间】:2021-05-13 19:43:57
【问题描述】:

按照 meta-raspberrypi 层 (https://github.com/agherzan/meta-raspberrypi) 中提供的说明,我使用 bitbake 为我的树莓派 4 板生成 Linux 映像。我可以使用 FTDI USB 到 UART 电缆连接到我的电路板并在我的主机上运行 minicom。但是,我需要使用 SCP 将文件传输到我的板上。为此,我需要 IP 地址,当我在我的 RPi4 板上执行“ip a”命令时,我得到下面的输出,显示没有我可以使用的 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

【问题讨论】:

    标签: raspberry-pi ip yocto scp meta-raspberrypi


    【解决方案1】:

    由于 RaspberryPi 4 提供以太网和 WiFi 接口,您可以使用其中一个(或两者)连接到网络。

    如果您的以太网端口连接了电缆,则只需申请 DHCP 租约。你应该可以通过运行udhcpc -i eth0 来做到这一点。如果udhcpc 命令不可用,您需要找到提供它的配方(尽管可能隐藏在 Busybox 配置文件中)或将任何其他 DHCP 客户端添加到您的映像中。

    如果您计划通过 WiFi 连接到您的网络,您需要先连接到网络,然后申请 DHCP 租用。前者可以使用wpa_supplicantconnmannmcli 等来完成。它们可能在您的图像中不可用,因此您需要先添加一个。要连接wpa_supplicant,请执行以下操作:wpa_passphrase "&lt;SSID&gt;" &gt; wpa.conf&lt;SSID&gt; 替换为您要连接的网络的SSID(名称)。然后它会等待你输入这个网络的密码。然后,运行wpa_supplicant -iwlan0 -cwpa.conf&amp;。这将在后台启动连接。如果日志中连接成功,则可以继续。然后,运行 udhcpc -iwlan0 获取 DHCP 租约,然后就可以开始了!

    如果您的网络上没有 DHCP 服务器(例如直接连接到您的主机),您需要手动分配一个 IP 地址,例如:ip addr add &lt;IP addr&gt; dev &lt;iface&gt;&lt;IP addr&gt; 替换为有效的(在同一子网中)网络中的其他计算机)IP 地址(可能是它之后的子网?例如192.168.1.153/24)和&lt;iface&gt;eth0wlan0

    【讨论】:

    • 谢谢,@qschulz。我认为对于 rpi4,有线以太网连接可能是最好的。但是,我希望将来会在没有以太网块的情况下为目标硬件开发,并且 wifi 代码最初不会启动并运行。我想知道如何传输/调试代码?我的大部分经验是在 ARM Cotex 平台上使用的,它使用 JTAG 或一些串行连接(例如:UART/USB)。有没有我缺少的方法或选项?我想知道 Android 手机开发人员如何加载/调试他们的代码。没有以太网端口,我认为 wifi 不是最好的开发连接。有什么想法吗?谢谢!
    • 如果你有 USB OTG 支持,你可以使用 fastboot 或 adb,它们在 Android AFAIK 上广泛使用。否则,如果您只有 USB 主机,请尝试使用 USB 转以太网适配器并在引导加载程序和内核中编译适当的驱动程序,以便您可以从引导加载程序下载新的内核/rootfs/dtb 并发送文件到/来自目标上正在运行的 Linux。如果您要发送非常小的文件,您仍然可以使用 kermit 或类似的串行协议,但带宽显然是可怕的(= 串行的波特率)。
    • 我会有 USB OTG 支持,fastboot 和 adb 都非常有用。我想这就是我要走的路。我想我会先在我的 RP4 上尝试它,但我不知道如何将这些工具添加到我的 yocto 构建中。我进行了快速搜索,找不到要添加的适当图层。如果您有任何意见,那就太好了。我为这个问题创建了一个单独的帖子stackoverflow.com/questions/66209136/adb-yocto-recipe。谢谢!
    猜你喜欢
    • 2018-04-10
    • 1970-01-01
    • 2020-12-10
    • 2010-11-04
    • 2014-10-01
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    相关资源
    最近更新 更多