本文作爲第一次編譯驅動的記錄,僅供以後參考回憶
思路
1,編寫Makefile文件
2,在樹莓派上本地編譯
詳細記錄:
由於ASIX的驅動只是linux 2.6以上的內核,並啓動源碼文件,針對ARM平臺,需要重新編譯驅動文件。
在asix網站上下載最新的源碼,重命名爲axasix.c axasix.h,並且在源碼中修改對應的頭文件。
在kernel源文件中,找到drivers/net/usb中的makefile,修改如下內容
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版本註釋
#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/
非常感謝小楊和客戶陳工。