本文作为第一次编译驱动的记录,仅供以后参考回忆
思路
1,编写Makefile文件
2,在树莓派上本地编译
详细记录:
由于ASIX的驱动只是linux 2.6以上的内核,并启动源码文件,针对ARM平台,需要重新编译驱动文件。
在asix网站上下载最新的源码,重命名为axasix.c axasix.h,并且在源码中修改对应的头文件。
在kernel源文件中,找到drivers/net/usb中的makefile,修改如下内容
1 2 3 4 5 6 | obj-$(CONFIG_USB_LAN78XX) += lan78xx.o obj-y += axasix.o #obj-$(CONFIG_USB_NET_AX8817X) += asix.o #asix-y := asix_devices.o asix_common.o ax88172a.o #obj-$(CONFIG_USB_NET_AX88179_178A) += ax88179_178a.o obj-$(CONFIG_USB_NET_CDCETHER) += cdc_ether.o |
在axasix.h文件中,将判断kernel版本注释
1 2 3 4 5 6 7 8 9 10 11 12 | #define AX_RXCOE_FOPC 0x8000 //#if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 22) #define AX_RXCOE_DEF_CSUM (AX_RXCOE_IPCE | AX_RXCOE_IPVE | \ AX_RXCOE_V6VE | AX_RXCOE_TCPE | \ AX_RXCOE_UDPE | AX_RXCOE_ICV6 | \ AX_RXCOE_TCPV6 | AX_RXCOE_UDPV6) //#else //#define AX_RXCOE_DEF_CSUM (AX_RXCOE_IPCE | AX_RXCOE_IPVE | \ AX_RXCOE_TCPE | AX_RXCOE_UDPE) //#endif #define AX_RXCOE_64TE 0x0100 |
makefile文件修改完成
在树莓派上编译驱动过程主要参考了官方的文档
https://www.raspberrypi.org/documentation/linux/kernel/building.md
拍拍小站也给了详细的操作过程https://www.pypyn.com/archives/320/#comment-59
哔哩哔哩视频非常详细 https://www.bilibili.com/video/av91990721/
非常感谢小杨和客户陈工。