Tiny6410学习移植usb无线网卡(一)

时间:2022-07-21 16:06:05

  今天找来了一个上一年在TB上买来的水星无线网卡(MW150UH),之前用在台式电脑上,现在想试下能否在tiny6410开发板上使用呢。把无线网卡接入开发板上,SecureCRT就出现下面几行字:

  Tiny6410学习移植usb无线网卡(一)

  之前也有了解过USB子系统与热拔插,出现这几行是由于USB控制器发现总线电压变化(有USB设备接入),然后唤醒内核开始时创建的usb内核线程,这个内核线程通过控制usb控制器发出信号,读取usb设备的信息(应该每个usb设备都会把设备信息放到固定地址的eeprom上),并注册这个usb设备并链入usb的链表上。但是现在只出现这几条信息,说明内核并没添加usb无线网卡功能或者是通用的无线网卡驱动不支持这种型号。我是第一种情况。那么可以重新配置内核添加usb无线网卡功能,但是对于像我这样的初学者来说,不懂整个架构没法配置,所以就直接到网上找一个无线网卡驱动。了解到MW150UH的芯片是rtl8188eu,就下一个rtl8188eu for linux,具体的自己搜吧。

  下载的无线网卡驱动zip包里一般带有驱动还有工具,工具一般有wpa_supplicant和hostapd这2个,简单来说wpa_supplicant就是用来让无线网卡接入附近的热点,而hostapd是用来创建一个无线热点。

 

  一、驱动

  先看驱动,驱动目录如下:

  Tiny6410学习移植usb无线网卡(一)

  然后去os_dep/linux/os_intfs.c中查看usb设备表usb_device_id,确定是否支持rtl8188eu这个芯片:

  Tiny6410学习移植usb无线网卡(一)

  可以看到与上面idProduct对应,说明此驱动支持8188eu。一般下载的驱动会支持多种平台,所以在编译前需要在Makefile中根据具体设备修改,例如tiny6410芯片是S3C6410,用的编译器是arm-linux-gcc,需要修改:

  Tiny6410学习移植usb无线网卡(一)CONFIG_PLATFORM_I386_PC = y 改为 n,CONFIG_PLATFORM_ARM_S3C6K4 = n 改为 y

  Tiny6410学习移植usb无线网卡(一) 根据自己的环境修改KVER和KSRC,就是开发板内核版本号与源代码所在位置,如 KVER := 2.6.38 , KSRC ?= /home/a977/demo/linux-2.6.38

  之后编译得到驱动模块8188eu.ko文件。12MB的文件,比内核压缩镜像还大。把文件拷贝到开发板下,加载内核,这时就会出现一大堆调试信息,如:

  Tiny6410学习移植usb无线网卡(一)

  Tiny6410学习移植usb无线网卡(一)

   如果出现最后一条信息 registered new interface..... ,基本驱动成功一半。然后再输入ifconfig -a,看下是否有无线网卡:

  Tiny6410学习移植usb无线网卡(一)

  如果有,再输入ifconfig wlan0 up后,如果再次输入ifconfig看到wlan0,说明驱动成功了。否则如果中间出现内核崩溃等情况就说明驱动有问题,之前我找的另外一个就是这样。