USB无线网卡驱动在ARM上的移植问题
无线网卡:wl-167g
ARM板:S3C2410
内核版本:2.4.18
gcc版本:2.95.3
驱动版本RT73_Linux_STA_Drv1.0.4.0
编译驱动通过,并生成rt73.o,使用insmod rt73.o可以将模块加载到系统中,显示:
rtusb init ====>
usb.c: registered new driver rt73
但是使用ifconfig rausb0 显示网卡信息时发现
rausb0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:64
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
物理地址显然不正确.并且在使用ifconfig rausb0 up命令之后,会显示
rt73 driver version - 1.0.4.0
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c0aa8000
*pgd = 30add801, *pmd = 30add801, *pte = 00000000, *ppte = 00000000
Internal error: Oops: ffffffff
CPU: 0
pc : [] lr : [] Not tainted
sp : c0aaddfc ip : 000001f0 fp : c0aade20
r10: 00000000 r9 : c73a7130 r8 : 00000000
r7 : 00000001 r6 : c025c6c0 r5 : 000001f0 r4 : c025c6c0
r3 : 000001f0 r2 : 00000000 r1 : 00000000 r0 : c025c6c0
Flags: nzCv IRQs on FIQs on Mode SVC_32 Segment user
Control: C000317F Table: 30AA8000 DAC: 00000015
Process ifconfig (pid: 67, stackpage=c0aad000)
Stack: (0xc0aaddec to 0xc0aae000)
dde0: c0042594 c0042154 20000013 ffffffff c025c6c0
de00: 000001f0 00000018 00000001 00000000 00000000 c0aade38 c0aade24 c0042594
de20: c0042110 00000978 c73a7148 c0aade98 c0aade3c c7338308 c0042498 c73a70b0
de40: c73a7080 c73a7098 c7380000 c0227ea0 c7380000 00000000 00000000 c0aadf0c
de60: bffffc84 c09fc400 c7320398 00000000 c0227ea0 00000000 00001002 00000000
de80: c0aadf0c 00000000 c0155458 c0aadeac c0aade9c c015547c c0155430 c09fc400
dea0: c0aadec4 c0aadeb0 c0152a2c c015546c c09fc400 00001043 c0aadee4 c0aadec8
dec0: c0154188 c0152970 00000000 c09fc400 00000000 c0aadf1c c0aadf54 c0aadee8
dee0: c0189244 c0154138 00000014 00000000 00000000 00000000 00008914 00031043
df00: 00000000 000d9d28 bffffed4 73756172 00003062 00000000 00000000 00031043
df20: 00000000 000d9d28 bffffed4 00008914 bffffc84 c09eab60 bffffc84 ffffffe7
df40: c0aac000 000b82b0 c0aadf70 c0aadf58 c018b82c c0188f30 c3968d20 00008914
df60: 00000003 c0aadf80 c0aadf74 c014b6f4 c018b508 c0aadfa4 c0aadf84 c0059e00
df80: c014b6dc bffffc84 bffffedc 00000004 00000036 c001d9a4 00000000 c0aadfa8
dfa0: c001d820 c0059c14 bffffc84 c00238fc 00000003 00008914 bffffc84 00001043
dfc0: bffffc84 bffffedc 00000004 000b8238 00000000 0003c298 000b82b0 00000003
dfe0: 00000002 bffffbb8 00019bd0 00072824 20000010 00000003 bf7ff5ff f7ff7eff
Backtrace:
Function entered at [] from []
Function entered at [] from []
r5 = C73A7148 r4 = 00000978
Function entered at [] from []
Function entered at [] from []
r4 = C09FC400
Function entered at [] from []
r5 = 00001043 r4 = C09FC400
Function entered at [] from []
r7 = C0AADF1C r6 = 00000000 r5 = C09FC400 r4 = 00000000
Function entered at [] from []
Function entered at [] from []
r6 = 00000003 r5 = 00008914 r4 = C3968D20
Function entered at [] from []
Function entered at [] from []
r8 = C001D9A4 r7 = 00000036 r6 = 00000004 r5 = BFFFFEDC
r4 = BFFFFC84
Code: e3530000 0a000002 e20c3e1f e3530020 (15822000)
Kernel panic: Aiee, killing interrupt handler!
In interrupt handler - not syncing
我发现在这个结构体中,将 WirelessPacket申请的空间减少,则在kmalloc时就会运行一段时间后才报错,估计是申请内存的问题
可是开发板的内存有64M呢,应该没问题啊
typedef struct __TX_BUFFER{
TXD_STRUC TxDesc;
HEADER_802_11 NullFrame;
PSPOLL_FRAME PsPollPacket;
RTS_FRAME RTSFrame;
UCHAR WirelessPacket[2342];
} TX_BUFFER, *PTX_BUFFER;
ARM板:S3C2410
内核版本:2.4.18
gcc版本:2.95.3
驱动版本RT73_Linux_STA_Drv1.0.4.0
编译驱动通过,并生成rt73.o,使用insmod rt73.o可以将模块加载到系统中,显示:
rtusb init ====>
usb.c: registered new driver rt73
但是使用ifconfig rausb0 显示网卡信息时发现
rausb0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:64
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
物理地址显然不正确.并且在使用ifconfig rausb0 up命令之后,会显示
rt73 driver version - 1.0.4.0
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c0aa8000
*pgd = 30add801, *pmd = 30add801, *pte = 00000000, *ppte = 00000000
Internal error: Oops: ffffffff
CPU: 0
pc : [] lr : [] Not tainted
sp : c0aaddfc ip : 000001f0 fp : c0aade20
r10: 00000000 r9 : c73a7130 r8 : 00000000
r7 : 00000001 r6 : c025c6c0 r5 : 000001f0 r4 : c025c6c0
r3 : 000001f0 r2 : 00000000 r1 : 00000000 r0 : c025c6c0
Flags: nzCv IRQs on FIQs on Mode SVC_32 Segment user
Control: C000317F Table: 30AA8000 DAC: 00000015
Process ifconfig (pid: 67, stackpage=c0aad000)
Stack: (0xc0aaddec to 0xc0aae000)
dde0: c0042594 c0042154 20000013 ffffffff c025c6c0
de00: 000001f0 00000018 00000001 00000000 00000000 c0aade38 c0aade24 c0042594
de20: c0042110 00000978 c73a7148 c0aade98 c0aade3c c7338308 c0042498 c73a70b0
de40: c73a7080 c73a7098 c7380000 c0227ea0 c7380000 00000000 00000000 c0aadf0c
de60: bffffc84 c09fc400 c7320398 00000000 c0227ea0 00000000 00001002 00000000
de80: c0aadf0c 00000000 c0155458 c0aadeac c0aade9c c015547c c0155430 c09fc400
dea0: c0aadec4 c0aadeb0 c0152a2c c015546c c09fc400 00001043 c0aadee4 c0aadec8
dec0: c0154188 c0152970 00000000 c09fc400 00000000 c0aadf1c c0aadf54 c0aadee8
dee0: c0189244 c0154138 00000014 00000000 00000000 00000000 00008914 00031043
df00: 00000000 000d9d28 bffffed4 73756172 00003062 00000000 00000000 00031043
df20: 00000000 000d9d28 bffffed4 00008914 bffffc84 c09eab60 bffffc84 ffffffe7
df40: c0aac000 000b82b0 c0aadf70 c0aadf58 c018b82c c0188f30 c3968d20 00008914
df60: 00000003 c0aadf80 c0aadf74 c014b6f4 c018b508 c0aadfa4 c0aadf84 c0059e00
df80: c014b6dc bffffc84 bffffedc 00000004 00000036 c001d9a4 00000000 c0aadfa8
dfa0: c001d820 c0059c14 bffffc84 c00238fc 00000003 00008914 bffffc84 00001043
dfc0: bffffc84 bffffedc 00000004 000b8238 00000000 0003c298 000b82b0 00000003
dfe0: 00000002 bffffbb8 00019bd0 00072824 20000010 00000003 bf7ff5ff f7ff7eff
Backtrace:
Function entered at [] from []
Function entered at [] from []
r5 = C73A7148 r4 = 00000978
Function entered at [] from []
Function entered at [] from []
r4 = C09FC400
Function entered at [] from []
r5 = 00001043 r4 = C09FC400
Function entered at [] from []
r7 = C0AADF1C r6 = 00000000 r5 = C09FC400 r4 = 00000000
Function entered at [] from []
Function entered at [] from []
r6 = 00000003 r5 = 00008914 r4 = C3968D20
Function entered at [] from []
Function entered at [] from []
r8 = C001D9A4 r7 = 00000036 r6 = 00000004 r5 = BFFFFEDC
r4 = BFFFFC84
Code: e3530000 0a000002 e20c3e1f e3530020 (15822000)
Kernel panic: Aiee, killing interrupt handler!
In interrupt handler - not syncing
我发现在这个结构体中,将 WirelessPacket申请的空间减少,则在kmalloc时就会运行一段时间后才报错,估计是申请内存的问题
可是开发板的内存有64M呢,应该没问题啊
typedef struct __TX_BUFFER{
TXD_STRUC TxDesc;
HEADER_802_11 NullFrame;
PSPOLL_FRAME PsPollPacket;
RTS_FRAME RTSFrame;
UCHAR WirelessPacket[2342];
} TX_BUFFER, *PTX_BUFFER;
...全文
相关推荐
AM335x USB无线网卡移植和使用手册-综合文档
六、手册的重要性"AM335x USB无线网卡移植和使用手册"提供了详细的步骤指导和问题解决策略,对于开发者来说是宝贵的参考资料。
RTL8188FTV/RTL8188FU Linux驱动,成功移植到全志A40i上
**测试验证**:连接RTL8188FTV/RTL8188FU无线网卡,检查网络功能是否正常,如扫描无线网络、连接、发送和接收数据等。整个移植过程需要对Linux内核、驱动编程和ARM架构有深入理解。
Linux下USB无线网卡WL-167G、TL-WN321G驱动安装过程详解
**移植到ARM平台** 如果计划将驱动程序移植到ARM架构的嵌入式设备,需要确保驱动程序是跨平台的,可能还需要调整编译选项以适应ARM处理器。此外,可能需要交叉编译工具链来构建驱动。
基于ARM的WIFI无线传输系统设计.doc
4 无线网卡驱动程序设计针对USB-WIFI,设计了专门的驱动程序,使得ARM处理器能够识别并控制该设备。
linux下rt3070wifi网卡的驱动移植
本文将深入探讨如何在Linux下移植RT3070无线网卡的驱动程序。首先,了解RT3070芯片。


驱动开发/核心开发

