7

全志V3S嵌入式驱动开发(网卡驱动)

 1 year ago
source link: https://blog.csdn.net/feixiaoxing/article/details/130937022
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

全志V3S嵌入式驱动开发(网卡驱动)

嵌入式-老费 已于 2023-05-29 22:04:27 修改 44

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        一开始上来就说网卡,好像有点不太对劲。这主要是因为如果开发板可以连接网络的话,可以帮我们节约很多的时间,开发效率也会得到提高。另外一方面,v3s自身也比较特殊,因为它自己集成了mac和phy,所以驱动本身并不是那么好写。好在v3s帮助客户做好了这一点,我们要做的只是需要把内核升级到4.14.y就可以,其他什么都不用做。

        查看翻了一下,在之前4.10.y版本里面,sun8i-v3s.dtsi文件当中根本没有emac的内容,但是在4.14.y当中,我们看到了相关的脚本,所以果断把内核切到4.14.y,

55ccf0f66d024ff7bd2290313a40bfac.png

1、第一步,重新编译内核和dtb文件

        注意更换zImage和sun8i-v3s-licheepi-zero-dock.dtb。其中设备树文件一定要跟着替换,这是至关重要的。

2、启动开发板、插上网线

        输入root密码之后,我们输入ifconfig,提示并没有网卡。这是什么情况?其实主要是因为还没有手动把网卡启动开来。只要输入ifconfig eth0 up即可,



newCodeMoreWhite.png

        这个时候再输入ifconfig,就会发现多了一个eth0的网卡。这就是需要配置的部分,继续输入ip、netmask和gateway。



newCodeMoreWhite.png

        通过ifconfig查看,可以发现当前addr、bcast和mask都已经配置上了。为了进一步验证判断开发板和电脑之间是否通信正常,可以输入ping命令来验证,

        从打印来看一切正常,没有什么问题。

3、通过网络验证第一个用户侧程序

        开发到现在,我们还没有开发过应用程序。不妨写一个简单的hello来验证下,像这样,

        使用交叉编译器编译一下即可,

arm-linux-gnueabihf-gcc hello.c -g -o hello

        编译好了,关键是我们怎么把程序从虚拟机拷贝到开发板呢。关于这个流程,可以这么来做,首先,把程序从虚拟机拷贝到windows目录下,

 sudo cp hello /media/sf_Downloads/

        接着,对于hello所在的目录,用python命令将其设置为web服务器的起始目录,

C:\Python39\python.exe  -m http.server 9000 --bind 192.168.0.101 -d C:\Users\feixiaoxing\Downloads

        最后一步就比较简单了,那就是用开发板上面的wget命令下载hello文件,

        注意,这个时候,hello文件还没有被当成是可执行文件,所以需要chmod一下才能执行,

4、继续验证第一个驱动文件

        前面我们说了应用程序是怎么写的,这个时候就可以看下驱动是怎么编写的,其实步骤差不多,首先准备驱动文件,



newCodeMoreWhite.png

        因为驱动本身是和kernel强绑定在一起的,所以一般情况下还需要写一个makefile,其中KDIR的位置十分重要,

        此时,所需要做的就是输入make命令即可,这样就可以生成ko文件。生成了hello.ko之后,接着就需要把这个文件copy到开发板上面,流程和copy应用层的执行文件是一样的,这里略过。

        为了验证我们的驱动是否正确,可以通过insmod、lsmod和rmmod这个三个命令,并结合相关打印来综合进行判断。

        有了网络驱动,确实可以提高我们开发的效率。除了串口之外,网络几乎是嵌入式开发最重要的开发方式。当然,它不仅仅可以接收外部的命令控制,还可以和各种传感器进行通信,这样就能构成一个基本的嵌入式系统产品。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK