栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Intel I350T4网卡 + ARM 开发板 的使用及出现的问题解决。

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Intel I350T4网卡 + ARM 开发板 的使用及出现的问题解决。

Intel I350T4网卡 + ARM 开发板 的使用及出现的问题解决。

最近在分析研究ARM 开发板对PCIE网卡的支持情况,主要是测试arm平台上网卡能否正常使用。
工作其实没多难,但是由于个人经验比较欠缺,还有一些其他原因导致工作一直进展不顺利,不过最终是顺利的完成了。下面主要讲解一些开发板如何编译网卡驱动和使用测试。

网卡设备: Intel I350T4 四口网卡设备
环境:Linux arm 4.19.65

pcie网卡设备驱动一般是作为内核模块去编译使用的,用户可以动态的加载和卸载,当然也可以讲网卡驱动加入到内核一起编译,这就涉及到kconfig 文件和make menuconfig 的一些内核的编译配置操作,这里主要讲第一种方法:驱动作为内核模块编译。

官方提供的install方式一般为:

make
make install

如果是Ubuntu系统并且带有内核源码,这样直接安装是没有问题的,但是在嵌入式设备中,由于内存的原因,Linux操作系统一般是没有源码,所以就需要交叉编译的方式来编译驱动,然后移植使用。
两点需要注意:
1.要指定源码路径
2.指定编译器和平台
所以要修改驱动源码中的Makefile

KDIR :=/home/zacha/kernel		#指定kernel 路径
PWD :=$(shell pwd)				#指定驱动源码路径
default:
	#@+$(call devkernelbuild,modules)
	$(MAKE) -C $(KDIR) M=$(PWD) CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm	#gcc交叉编译器和平台

然后直接make

编译成功,生成了igb.ko 的内核模块文件。
然后将其移到到开发板上,就可以了。

insmod igb.ko #加载驱动

当然,在编译过程中也遇到了问题,这里分享一下是什么问题和我是如何解决的,或许有小伙伴遇到同样的问题,供分析参考。

问题1:

make -C /home/zacha/yulong810/kernel M=/home/zacha/igb/igb-5.7.2/src CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm
make[1]: Entering directory ‘/home/zacha/yulong810/kernel’
Building modules, stage 2.
MODPOST 0 modules
make[1]: Leaving directory ‘/home/zacha/yulong810/kernel’

发现并没有生成驱动文件,明显的错误是没有进行编译,所以分析了他的编译选项,也没有问题,最后发现 行:obj-$(CONFIG_IGB) += igb.o 中 ,CONFIG_IGB 变量没有,导致模块不能正常编译,所以将其进行修改。

#obj-$(CONFIG_IGB) += igb.o
obj-m += igb.o

问题2:

error: implicit declaration of function ‘isdigit’ [-Werror=implicit-function-declaration]
if(!isdigit(*c) && *c != ‘.’)

isdigit() 函数找不到或未申明。

开发板的内核环境和实际的Ubuntu内核环境是不一样的,所以就导致头文件的差异,有些函数找不到,所以搜了一下isdigit。isdigit() 用来判断一个字符是否是十进制数字。位于中。
由于是开发板内核,文件位于./include/linux/ctype.h 下,所以在代码中加入

#include 

然后编译。成功!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/277473.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号