一种嵌入式设备多网口MAC地址分配方法与终端与流程

    专利2022-07-07  102


    本发明涉及计算机技术领域,特别涉及一种嵌入式设备多网口mac地址分配方法与终端。



    背景技术:

    在vpn(virtualprivatenetwork,虚拟专用网络),网安等设备上,要支持很多的网口,由于cpu资源有限,要使用switch芯片(交换芯片)来拓展网口个数,由于switch芯片使用dsa驱动(一种将交换芯片各个接口实体化的驱动框架),将switch芯片的网口变成独立实体的网口,但是这个过程中,所有网口的mac地址(mediaaccesscontroladdress,媒体存取控制位址,也称局域网地址、以太网地址和物理地址)都为上联口的mac地址,都是相同的,不符合产品要求,如果使用用户态程序手动将mac地址设置到每个网口,可能存在个别业务异常。



    技术实现要素:

    本发明所要解决的技术问题是:提供一种嵌入式设备多网口mac地址分配方法与终端,使嵌入式设备多网口mac地址各不相同的同时保证业务稳定。

    为了解决上述技术问题,本发明采用的技术方案为:

    一种嵌入式设备多网口mac地址分配方法,包括:

    s1、启动嵌入式系统的引导加载程序,读取预先存储的mac地址,并将所述mac地址写入dtb文件中;

    s2、启动内核,在加载dsa驱动时,获取所述dtb文件中的mac地址作为mac基地址,对所述mac基地址进行预设处理,得到连续、互不相同且数量与网口数量相同的网口mac地址,将每一个所述网口mac地址分别写入对应的网口的结构体中,并进行网口初始化;

    s3、启动文件系统。

    为了解决上述技术问题,本发明采用的另一种技术方案为:

    一种嵌入式设备多网口mac地址分配终端,包括处理器、存储器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

    s1、启动嵌入式系统的引导加载程序,读取预先存储的mac地址,并将所述mac地址写入dtb文件中;

    s2、启动内核,在加载dsa驱动时,获取所述dtb文件中的mac地址作为mac基地址,对所述mac基地址进行预设处理,得到连续、互不相同且数量与网口数量相同的网口mac地址,将每一个所述网口mac地址分别写入对应的网口的结构体中,并进行网口初始化;

    s3、启动文件系统。

    本发明的有益效果在于:本发明通过嵌入式系统的引导加载程序将mac基地址传入内核,由内核对基地址进行处理,保证了分配给各网口的mac地址各不相同,并在内核将mac地址写入各网口的结构体中,即在内核态时就对各网口进行地址分配以进行后续的网口初始化,保证了各网口处于正常状态,能够正常进行业务处理。

    附图说明

    图1为本发明实施例的一种嵌入式设备多网口mac地址分配方法的流程图;

    图2为本发明实施例的一种嵌入式设备多网口mac地址分配终端的结构图;

    图3为本发明实施例的一种嵌入式设备多网口mac地址分配方法的详细流程图;

    图4为本发明实施例的一种嵌入式设备多网口mac地址分配方法的一个步骤结果示意图;

    图5为本发明实施例的一种嵌入式设备多网口mac地址分配方法的方法运行结果示意图;

    标号说明:

    1、一种嵌入式设备多网口mac地址分配终端;2、处理器;3、存储器。

    具体实施方式

    为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。

    请参照图1以及图3,一种嵌入式设备多网口mac地址分配方法,包括:

    s1、启动嵌入式系统的引导加载程序,读取预先存储的mac地址,并将所述mac地址写入dtb文件中;

    s2、启动内核,在加载dsa驱动时,获取所述dtb文件中的mac地址作为mac基地址,对所述mac基地址进行预设处理,得到连续、互不相同且数量与网口数量相同的网口mac地址,将每一个所述网口mac地址分别写入对应的网口的结构体中,并进行网口初始化;

    s3、启动文件系统。

    从上述描述可知,本发明的有益效果在于:本发明通过嵌入式系统的引导加载程序将mac基地址传入内核,由内核对基地址进行处理,保证了分配给各网口的mac地址各不相同,并在内核将mac地址写入各网口的结构体中,即在内核态时就对各网口进行地址分配以进行后续的网口初始化,保证了各网口处于正常状态,能够正常进行业务处理。

    进一步的,所述步骤s1之前还包括:

    s01、获取当前设备网卡的mac地址,并存储写入到boot1分区的环境变量。

    由上述描述可知,由于mac地址保存以用户不易操作,并且不易丢失,易读取的位置为优,故将mac地址保存在boot1分区,因为嵌入式系统的引导加载程序使用boot0分区,嵌入式系统的引导加载程序源码下面也具有用户态读取boot的环境变量工具,方便准确写入,将mac地址写入boot1分区的环境变量,为最优地点。

    进一步的,所述步骤s1具体为:

    s11、启动嵌入式系统的引导加载程序,分别读取boot1分区的第一mac地址和boot0分区中的第二mac地址,比较所述第一mac地址和所述第二mac地址是否相同,若不相同,则将boot1分区中的第一mac地址作为第二mac地址覆盖写入boot0分区的环境变量,进入步骤s12,否则直接进入步骤s12;

    s12、在所述引导加载程序解析dtb文件时,将boot0分区中的第二mac地址写入dtb文件。

    由上述描述可知,本发明在将boot0分区中的第二mac地址写入dtb文件前,需要将第二mac地址与boot1中的mac地址进行比对,保证boot0中的第二mac地址是实时且正确的。

    进一步的,步骤s2中对所述mac基地址进行预设处理具体为:

    将所述mac基地址进行自加。

    由上述描述可知,本发明对mac地址进行自加,运算简单,以能够最快地得到连续且不相同的mac地址进行分配。

    进一步的,所述步骤s1中所述启动嵌入式系统的引导加载程序为uboot。

    由上述描述可知,所述启动嵌入式系统的引导加载程序为uboot作为本发明的一种具体实施例。

    请参照图2,一种嵌入式设备多网口mac地址分配终端,包括处理器、存储器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

    s1、启动嵌入式系统的引导加载程序,读取预先存储的mac地址,并将所述mac地址写入dtb文件中;

    s2、启动内核,在加载dsa驱动时,获取所述dtb文件中的mac地址作为mac基地址,对所述mac基地址进行预设处理,得到连续、互不相同且数量与网口数量相同的网口mac地址,将每一个所述网口mac地址分别写入对应的网口的结构体中,并进行网口初始化;

    s3、启动文件系统。

    从上述描述可知,本发明的有益效果在于:本发明通过嵌入式系统的引导加载程序将mac基地址传入内核,由内核对基地址进行处理,保证了分配给各网口的mac地址各不相同,并在内核将mac地址写入各网口的结构体中,即在内核态时就对各网口进行地址分配以进行后续的网口初始化,保证了各网口处于正常状态,能够正常进行业务处理。

    进一步的,所述处理器执行所述计算机程序时所述步骤s1之前还包括:

    s01、获取当前设备网卡的mac地址,并存储写入到boot1分区的环境变量。

    由上述描述可知,由于mac地址保存以用户不易操作,并且不易丢失,易读取的位置为优,故将mac地址保存在boot1分区,因为嵌入式系统的引导加载程序使用boot0分区,嵌入式系统的引导加载程序源码下面也具有用户态读取boot的环境变量工具,方便准确写入,将mac地址写入boot1分区的环境变量,为最优地点。

    进一步的,所述步骤s1具体为:

    s11、启动嵌入式系统的引导加载程序,分别读取boot1分区的第一mac地址和boot0分区中的第二mac地址,比较所述第一mac地址和所述第二mac地址是否相同,若不相同,则将boot1分区中的第一mac地址作为第二mac地址覆盖写入boot0分区的环境变量,进入步骤s12,否则直接进入步骤s12;

    s12、在所述引导加载程序解析dtb文件时,将boot0分区中的第二mac地址写入dtb文件。

    由上述描述可知,本发明在将boot0分区中的第二mac地址写入dtb文件前,需要将第二mac地址与boot1中的mac地址进行比对,保证boot0中的第二mac地址是实时且正确的。

    进一步的,步骤s2中对所述mac基地址进行预设处理具体为:

    将所述mac基地址进行自加。

    由上述描述可知,本发明对mac地址进行自加,运算简单,以能够最快地得到连续且不相同的mac地址进行分配。

    进一步的,所述步骤s1中所述启动嵌入式系统的引导加载程序为uboot。

    由上述描述可知,所述启动嵌入式系统的引导加载程序为uboot作为本发明的一种具体实施例。

    请参照图1、图3、图4以及图5,本发明的实施例一为:

    一种嵌入式设备多网口mac地址分配方法,包括:

    s01、获取当前设备网卡的mac地址,并存储写入到boot1分区的环境变量;

    本实施例中,由于mac地址保存以用户不易操作,并且不易丢失,易读取的位置为优,故将mac地址保存在boot1分区,因为uboot使用boot0分区,uboot源码下面也具有用户态读取boot的环境变量工具,方便准确写入,将mac地址写入boot1分区的环境变量,为最优地点。

    s1、启动嵌入式系统的引导加载程序,读取预先存储的mac地址,并将所述mac地址写入dtb文件中;

    所述步骤s1具体为:

    s11、启动嵌入式系统的引导加载程序,分别读取boot1分区的第一mac地址和boot0分区中的第二mac地址,比较所述第一mac地址和所述第二mac地址是否相同,若不相同,则将boot1分区中的第一mac地址作为第二mac地址覆盖写入boot0分区的环境变量,进入步骤s12,否则直接进入步骤s12;

    s12、在所述引导加载程序解析dtb文件时,将boot0分区中的第二mac地址写入dtb文件;

    所述步骤s1中所述启动嵌入式系统的引导加载程序为uboot;

    本实施例中,如图4所示,uboot每次开机自动执行,在读取boot1中的mac地址后,读出boot0中的mac地址,两个mac地址进行对比,若相同,直接返回,若不同,将boot1中的mac地址覆盖写入boot0环境变量,此时boot0分区中的mac地址为boot1分区中的mac地址。

    mac地址写入boot0环境后,uboot在解析dtb文件时,需要将mac地址设置写入到dtb文件,以便传递给内核,我们一般将mac基地址写入dtb文件中设备使用的switch芯片与cpu连接的上联口位置上,dtb文件为设备树文件。

    s2、启动内核,在加载dsa驱动时,获取所述dtb文件中的mac地址作为mac基地址,对所述mac基地址进行预设处理,得到连续、互不相同且数量与网口数量相同的网口mac地址,将每一个所述网口mac地址分别写入对应的网口的结构体中,并进行网口初始化;

    步骤s2中对所述mac基地址进行预设处理具体为:

    将所述mac基地址进行自加;

    s3、启动文件系统。

    本实施例中,内核启动时,当加载到dsa驱动时,内核获取dtb文件传递进来的mac地址,通过dsa驱动,在驱动将每个switch网口实体化的时候,将mac地址复制给相应网口,由于只有一个基地址,驱动要根据设备switch芯片和使用网口,将mac地址自加后,保存到该网口的结构体中。系统启动后的最终的结果,如图5所示。

    请参照图2,本发明的实施例二为:

    一种嵌入式设备多网口mac地址分配终端1,包括处理器2、存储器3及存储在存储器3上并可在处理器2上运行的计算机程序,所述处理器2执行所述计算机程序时实现以上实施例一中的步骤。

    综上所述,本发明提供的一种嵌入式设备多网口mac地址分配方法与终端,本发明通过嵌入式系统的引导加载程序将mac基地址传入内核,由内核对基地址进行处理,保证了分配给各网口的mac地址各不相同,并在内核将mac地址写入各网口的结构体中,即在内核态时就对各网口进行地址分配以进行后续的网口初始化,保证了各网口处于正常状态,能够正常进行业务处理;且本发明在读入mac地址时对其进行了校验,保证mac地址的正确性。

    以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。


    技术特征:

    1.一种嵌入式设备多网口mac地址分配方法,其特征在于,包括:

    s1、启动嵌入式系统的引导加载程序,读取预先存储的mac地址,并将所述mac地址写入dtb文件中;

    s2、启动内核,在加载dsa驱动时,获取所述dtb文件中的mac地址作为mac基地址,对所述mac基地址进行预设处理,得到连续、互不相同且数量与网口数量相同的网口mac地址,将每一个所述网口mac地址分别写入对应的网口的结构体中,并进行网口初始化;

    s3、启动文件系统。

    2.根据权利要求1所述的一种嵌入式设备多网口mac地址分配方法,其特征在于,所述步骤s1之前还包括:

    s01、获取当前设备网卡的mac地址,并存储写入到boot1分区的环境变量。

    3.根据权利要求2所述的一种嵌入式设备多网口mac地址分配方法,其特征在于,所述步骤s1具体为:

    s11、启动嵌入式系统的引导加载程序,分别读取boot1分区的第一mac地址和boot0分区中的第二mac地址,比较所述第一mac地址和所述第二mac地址是否相同,若不相同,则将boot1分区中的第一mac地址作为第二mac地址覆盖写入boot0分区的环境变量,进入步骤s12,否则直接进入步骤s12;

    s12、在所述引导加载程序解析dtb文件时,将boot0分区中的第二mac地址写入dtb文件。

    4.根据权利要求1所述的一种嵌入式设备多网口mac地址分配方法,其特征在于,步骤s2中对所述mac基地址进行预设处理具体为:

    将所述mac基地址进行自加。

    5.根据权利要求1所述的一种嵌入式设备多网口mac地址分配方法,其特征在于,所述步骤s1中所述启动嵌入式系统的引导加载程序为uboot。

    6.一种嵌入式设备多网口mac地址分配终端,包括处理器、存储器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:

    s1、启动嵌入式系统的引导加载程序,读取预先存储的mac地址,并将所述mac地址写入dtb文件中;

    s2、启动内核,在加载dsa驱动时,获取所述dtb文件中的mac地址作为mac基地址,对所述mac基地址进行预设处理,得到连续、互不相同且数量与网口数量相同的网口mac地址,将每一个所述网口mac地址分别写入对应的网口的结构体中,并进行网口初始化;

    s3、启动文件系统。

    7.根据权利要求6所述的一种嵌入式设备多网口mac地址分配终端,其特征在于,所述处理器执行所述计算机程序时所述步骤s1之前还包括:

    s01、获取当前设备网卡的mac地址,并存储写入到boot1分区的环境变量。

    8.根据权利要求7所述的一种嵌入式设备多网口mac地址分配终端,其特征在于,所述步骤s1具体为:

    s11、启动嵌入式系统的引导加载程序,分别读取boot1分区的第一mac地址和boot0分区中的第二mac地址,比较所述第一mac地址和所述第二mac地址是否相同,若不相同,则将boot1分区中的第一mac地址作为第二mac地址覆盖写入boot0分区的环境变量,进入步骤s12,否则直接进入步骤s12;

    s12、在所述引导加载程序解析dtb文件时,将boot0分区中的第二mac地址写入dtb文件。

    9.根据权利要求6所述的一种嵌入式设备多网口mac地址分配终端,其特征在于,步骤s2中对所述mac基地址进行预设处理具体为:

    将所述mac基地址进行自加。

    10.根据权利要求6所述的一种嵌入式设备多网口mac地址分配终端,其特征在于,所述步骤s1中所述启动嵌入式系统的引导加载程序为uboot。

    技术总结
    本发明公开了一种嵌入式设备多网口MAC地址分配方法与终端;本发明启动嵌入式系统的引导加载程序,读取预先存储的MAC地址,并将所述MAC地址写入dtb文件中;启动内核,在加载dsa驱动时,获取所述dtb文件中的MAC地址作为MAC基地址,对所述MAC基地址进行预设处理,得到连续、互不相同且数量与网口数量相同的网口MAC地址,将每一个所述网口MAC地址分别写入对应的网口的结构体中,并进行网口初始化;启动文件系统;本发明通过嵌入式系统的引导加载程序将MAC基地址传入内核,由内核对基地址进行处理,保证了分配给各网口的MAC地址各不相同,且在内核态时就对各网口进行地址分配并进行后续的网口初始化,保证了各网口处于正常状态,能够正常进行业务处理。

    技术研发人员:张水生
    受保护的技术使用者:福州创实讯联信息技术有限公司
    技术研发日:2020.12.10
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-7277.html

    最新回复(0)