0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

技术分享 | 开发板网口热插拔自动获取IP地址

启扬ARM嵌入式开发 2022-08-03 09:29 次阅读

客户在使用启扬板卡的过程中提出要求开发板支持网口热插拔自动获取ip地址的需求。

启扬工程师了解到需求后快速确定了解决思路:

通过ifplugd工具监听网口热插拔信息,并且执行指定脚本,脚本中使用udhcpc工具自动获取ip地址。

接下来将对操作过程进行介绍与分析。

编译环境准备✦

QIYANG

主机:ubuntu16.04

编译器:arm-linux-gnueabihf-gcc,版本4.7

开发板环境:ARM32

1

移植libdaemon

因为ifplugd依赖libdaemon库,所以我们需要先编译daemon。

笔者这里选择daemon的版本是官方git下来的版本,git链接如下:

git clone git://git.0pointer.de/libdaemon

git下来之后先执行./bootstrap.sh脚本,此脚本会根据配置环境自动生成configure等编译相关文件,生成之后配置

./configure--host=arm-linux-gnueabihf--prefix=/home/ylook/Tools/libdaemon/build,

脚本执行完成之后会检查配置等,这里会出现一个报错:

checking whether setpgrp takes no argument... configure: error: cannot check setpgrp when cross compiling

遇到这个报错可以在之前配置的configure中加入ac_cv_func_setpgrp_void=yes,即可解决。

最后通过make && make install会将所需的lib以及include文件生成到build文件夹下。

注意:最后用file命令检查一下文件架构,防止误用X86的库。

c6be8ed6-0f58-11ed-9ade-dac502259ad0.png

2

移植ifplugd

本次使用的编译器是4.7版本,因为版本较低,所以ifplugd选择的也是老版本——ifplugd-0.14.tar.gz。

编译过程需要daemon的库和头文件,笔者为了方便直接将库和头文件放到编译器的头文件与库中,准备完毕后直接解压文件,

随后配置./configure --host=arm-linux-gnueabihf --prefix=/home/ylook/Tools/ifplugd-0.14/build

这里会报lynx的错误,可直接在原先配置的configuer后添加“--disable-lynx”,就可解决,

即修改为./configure--host=arm-linux-gnueabihf--prefix=/home/ylook/Tools/ifplugd-0.14/build/ --disable-lynx,


此外还会报“ undefined reference to rpl_malloc”错误,解决方式是修改config.h.in,去掉其中的malloc。

配置完成后make && make install,同样会在build目录下生成我们需要的二进制文件。

注意:为了避免错误,最后依旧是用file命令检查文件架构,确认采用的是否为arm架构。

c6d8c8dc-0f58-11ed-9ade-dac502259ad0.png

3

配置相关环境

配置环境过程中,启扬开发板需要daemon的库文件以及编译出来的ifplugd二进制文件。我们将daemon库文件拷贝到/usr/lib下,二进制文件拷贝到/usr/sbin下,输入ifplugd -h命令可以看到成功运行。

c6f6c864-0f58-11ed-9ade-dac502259ad0.png

根据help信息,我们可以用以下两个命令监听两个网口:

ifplugd -i eth0 -r /etc/network/if.sh

ifplugd -i eth1-r /etc/network/if.sh

监听两个网口并且执行后面的脚本文件,如果你的文件系统里有/etc/network/interface文件,需要将里面的auto改为allow-hotplug。

c71f83d0-0f58-11ed-9ade-dac502259ad0.png

而if.sh里面的内容就是简单的检测并且dhcp。

c74fec5a-0f58-11ed-9ade-dac502259ad0.png

最后我们可以将上面两个命令设置开机自启动,这样就会自动up两个网口,哪怕没有插网线也是准备状态,当插入网线后就会自动获取ip地址。

注意可能会出现延迟,可以稍等一下查看。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开发板
    +关注

    关注

    25

    文章

    4434

    浏览量

    94021
收藏 人收藏

    评论

    相关推荐

    STM32F767ZI-Nucleo开发板跑官方HTTP例程有时候不能自动获取IP,为什么?

    STM32F767ZI-Nucleo开发板跑官方HTTP例程有时候不能自动获取IP,调试中发现只要是不能获取
    发表于 04-25 06:02

    CentOS虚拟机克隆后开机无法获取IP地址的解决策略

    克隆虚拟机后出现一台能获取IP地址,另外一台获取不到IP地址,查看MAC
    的头像 发表于 04-17 12:27 164次阅读
    CentOS虚拟机克隆后开机无法<b class='flag-5'>获取</b><b class='flag-5'>IP</b><b class='flag-5'>地址</b>的解决策略

    键盘热插拔和非热插拔的区别

    键盘热插拔和非热插拔的区别 键盘是计算机外设设备之一,热插拔是指在计算机运行中插入或拔出设备而无需重启计算机,非热插拔则需要重启计算机才能生效。键盘
    的头像 发表于 02-02 17:34 1436次阅读

    【米尔-瑞萨RZ/G2UL开发板】1.网络传输及多种登录方式

    连接开发板后,需要确认网段是否处于同一个,打开电脑的设置,网络和Internet。 选择更改适配器,选择连接开发板。如下所示 双击,点击属性,选择IPV4,然后双击,选择使用下面
    发表于 01-21 15:59

    热插拔是什么原理

    热插拔(Hot Swap)是一种允许在系统运行过程中,动态地插入或移除硬件设备的技术。这种技术在计算机硬件、通信设备和存储设备等领域得到了广泛应用。热插拔
    的头像 发表于 01-16 11:03 1074次阅读
    <b class='flag-5'>热插拔</b>是什么原理

    获取Telegram的用户IP地址

    最近有个需求,查了些资料发现,Telegram有语音通话功能,也可以类似QQ一样通过语音通话的连接获取对方的IP地址, Denis Simonov (原文为俄语)发表过一篇文章,演示了如何通过 Telegram 语音呼叫
    的头像 发表于 01-12 11:35 650次阅读
    <b class='flag-5'>获取</b>Telegram的用户<b class='flag-5'>IP</b><b class='flag-5'>地址</b>

    热插拔和非热插拔的区别

    或系统关闭或待机状态下进行。 热插拔技术的出现,极大地方便了电子设备的使用和维护,减少了因为插拔设备而导致的系统的关机和停机时间,并且降低了设备故障和损坏的风险。下面将从硬件和软件的角度,详细探讨
    的头像 发表于 12-28 10:01 1073次阅读

    如何修改网络配置(动态_静态IP)

    2.Windows下按键盘Win+R键打开“运行窗口”,输入cmd,打开终端 3.在终端输入ipconfig,查看与开发板同一段下的ip地址,可以看到Windows端
    发表于 11-09 15:40

    【米尔-STM32MP135开发板-入门级MPU试用】无笔记本ping开发板和虚拟机

    ,虚拟机,开发板在同一个网络中,网关都设置为一样,IP地址在同一段内。通常把IP地址设置静态
    发表于 09-05 22:45

    【Milk-V Duo 开发板免费体验】扩展板设计,功能测试

    开发板虽说小巧,但功能也是有限的,只能通过排针来扩展,有一些不方便,而且也 好扩展,就设计了一个扩展板。 扩展板尽量体积小一些,手头上只有HR911105A的
    发表于 07-28 14:50

    Kubernetes Pod如何获取IP地址呢?

    Kubernetes 网络模型的核心要求之一是每个 Pod 都拥有自己的 IP 地址并可以使用该 IP 地址进行通信。很多人刚开始使用 Kubernetes 时,还不清楚如何为每个 P
    的头像 发表于 07-21 10:00 540次阅读
    Kubernetes Pod如何<b class='flag-5'>获取</b><b class='flag-5'>IP</b><b class='flag-5'>地址</b>呢?

    Openwrt开发指南 第5章 设置开发板IP地址

    由于我们在开发过程中,可能会用到其他路由器,而它们的IP一般都是192.168.1.1,为了让开发板上的IP不与这些路由器的IP冲突,我们需
    的头像 发表于 06-27 09:12 3450次阅读
    Openwrt<b class='flag-5'>开发</b>指南 第5章 设置<b class='flag-5'>开发板</b>的<b class='flag-5'>IP</b><b class='flag-5'>地址</b>

    技术分享 | i.MX8M Plus开发板 固定IP地址以及单网口多IP设置

    以启扬IMX8MP开发板为例,给大家分享固定IP地址以及单网口多IP设置的步骤流程。固定IP地址
    的头像 发表于 06-21 17:41 813次阅读
    <b class='flag-5'>技术</b>分享 | i.MX8M Plus<b class='flag-5'>开发板</b> 固定<b class='flag-5'>IP</b><b class='flag-5'>地址</b>以及单网口多<b class='flag-5'>IP</b>设置

    了解热插拔热插拔电路设计过程示例

    高可用性系统中常见的两种系统功率级别(–48 V和+12 V)使用不同的热插拔保护配置。–48V 系统集成了低侧热插拔控制和调整 MOSFET;+12 V系统使用高边控制器和调整MOSFET。
    的头像 发表于 06-17 17:24 1191次阅读
    了解<b class='flag-5'>热插拔</b>:<b class='flag-5'>热插拔</b>电路设计过程示例

    5通道(3路+V和2路-V)热插拔参考设计

    本文介绍的5通道电路虽然只采用了一个MAX5927A 4通道热插拔控制器,却可以实现3路正电源和2路负电源的热插拔功能。图1电路满足以下负载供电和上电排序要求:
    的头像 发表于 06-10 16:39 969次阅读
    5通道(3路+V和2路-V)<b class='flag-5'>热插拔</b>参考设计