wifi网卡RT3070在S3C2440的移植和使用

发布时间:2023-09-12  

一、配置内核选择WIFI驱动

1. 将usb wifi插到电脑,在ubuntu使用命令:# lsusb 查看wifi的PID:0x148f, VID:0x3070

2. 搭建环境

(使用的是arm-linux-gcc 4.3.2,内核为:linux 3.4.2)

1) 内核源码打补丁

 在终端执行以下命令:
 # tar xjf linux-3.4.2.tar.bz2
 # cd linux-3.4.2
 # patch -p1 < ../linux-3.4.2_camera_jz2440.patch
 # cp config_ok .config

2) 配置内核
    进入内核目录,根据网卡的VID/PID确定使用哪一个源码,搜索usb-wifi的 0x3070:
    # cd /work/system/linux-3.4.2/drivers/net/wireless
    # grep "0x3070" * -nR

回复--> rt2x00/rt2800usb.c:1077: { USB_DEVICE(0x148f, 0x3070) },
进入到对应目录/drivers/net/wireless/rt2x00的Makefile:obj-$(CONFIG_RT2800USB)     += rt2800usb.o, 可知需要配置项:CONFIG_RT2800USB。
查看对应的Kconfig文件: 

复制代码

复制代码

 1    config RT2800USB
 2         tristate "Ralink rt27xx/rt28xx/rt30xx (USB) support"
 3         depends on USB
 4         select RT2800_LIB
 5         select RT2X00_LIB_USB
 6         select RT2X00_LIB_FIRMWARE
 7         select RT2X00_LIB_CRYPTO
 8         select CRC_CCITT
 9         ---help---
10           This adds support for rt27xx/rt28xx/rt30xx wireless chipset family.
11           Supported chips: RT2770, RT2870 & RT3070, RT3071 & RT3072
12           When compiled as a module, this driver will be called "rt2800usb.ko".

复制代码

复制代码

因此,可知CONFIG_RT2800USB在make menuconfig配置界面的字符提示为:"Ralink rt27xx/rt28xx/rt30xx (USB) support" ,执行make menuconfig,搜索 /RT2800USB

根据目录进行配置成模块,然后对依赖项搜索,配置:
  │ Symbol: RT2X00 [=m]                                                                                      
  │ Type  : tristate                                                                                                      
  │ Prompt: Ralink driver support                                                                              
  │   Defined at drivers/net/wireless/rt2x00/Kconfig:1                                             
  │   Depends on: NETDEVICES [=y] && WLAN [=y] && MAC80211 [=y]                                             
  │   Location:                                                                                                  
  │     -> Device Drivers                                                                                     
  │       -> Network device support (NETDEVICES [=y])                                                        
  │         -> Wireless LAN (WLAN [=y]) 

以此类推,对其依赖项进行配置。
还有一项:  Library routines  ---> 
          {*} CRC-CCITT functions

即:

3)编译内核:

  # make uImage
4) 编译模块:
    # make modules
5) 拷贝这生成的四个文.ko文件到nfs文件系统目录:
   # ls *.ko
   # cp *.ko /work/nfs_root/fs_mini_mdev_new/lib/

二、 kernel和驱动在开发板运行

1. 将uImage烧写到开发板中,插上wifi执行lsusb查看设备是否存在。
  uboot命令行(默认方式烧写):
  set bootargs console=ttySAC0,115200 root=/dev/nfs nfsroot=192.168.1.8:/work/nfs_root/fs_mini_mdev_new ip=192.168.1.17
  set bootcmd 'nfs 32000000 192.168.7.124:/work/nfs_root/uImage; bootm 32000000'
  save
  boot

2. mount命令挂在文件目录,并加载编译的驱动模块:
     insmod rt2x00lib.ko   ...4个
     注意:——> rt2870.bin固件需要拷贝到开发板 /lib/firmmware目录下

3.  启动网卡:ifconfig wlan0 up,并使用# ifconfig -a 命令查看网卡状态。

4. 为wlan0配置ip:
     # ifconfig wlan0 192.168.73.6
     注意:这里配置IP要根据后面的热点(或者使用DHCP工具自动配置)进行配置, eth0和wifi不在一个网段;

三、wifi模块的配置和使用

3.1 概念: 认证/加密
    无线加密的多种方法,包括:WEP WPA TKIP EAP,他们之间的区别:
        http://wenku.baidu.com/link?url=DlLntlD490hAeIIbE-CO4QfAzgUC-gOTA7FCwS_XanOJMFzkyhQrFIB38ULKCcQIVFyDqqSWNWyq5kVtYAoJKjjf9pmZLu17-hVQ922WeaG
     例如:手机上WIFI热点有4种常用的"认证/加密":1) OPEN;  2)WEP;3) WPA(TKIP);4)WPA2(AES)

     无线网络的配置需要安装以下工具:iw, wpa_supplicant,dhcp

3.2 iw 工具
      旧工具iwconfig, iw是它的替代者, 可用于这2种"认证/加密": OPEN, WEP
  3.2.1 编译和安装
  a. 依赖库libnl安装
     -> tar xzf libnl-3.2.23.tar.gz
     -> cd libnl-3.2.23/
     -> ./configure --host=arm-linux --prefix=$PWD/tmp //配置编译目录为当前目录下的/tmp
      编译出现问题,方法:修改 lib/addr.c 添加宏(宏来自内核源码include/linux/socket.h)
     -> make
     -> make install

   拷贝库文件和头文件到arm-linux-gcc的路径目录下,用于后面的编译iw工具:

   把编译出来的头文件应该放入:/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include(注意程序v里报错时,是需要直接拷贝netlink/)
     -> cd tmp/include/libnl3
     -> sudo cp netlink -rf /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include 

    把编译出来的库文件应该放入:/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib  
    把编译出来的库文件应该放入NFS文件系统的lib目录:/work/nfs_root/fs_mini_mdev_new/lib

  b.安装iw
    -> tar xjf iw-3.11.tar.bz2
    -> cd iw-3.11/
    修改Makefile:
       CC = "arm-linux-gcc"
       NL3xFOUND := Y
       #LIBS += $(shell $(PKG_CONFIG) --libs $(NLLIBNAME))
       #CFLAGS += $(shell $(PKG_CONFIG) --cflags $(NLLIBNAME))
    在info.c的代码前面添加
       #define htole16(X)  (((((uint16_t)(X)) << 8) | ((uint16_t)(X) >> 8)) & 0xffff)

  将生成的iw工具拷贝到开发板;

  3.2.2 iw使用:
    iw list  // 列出WIFI网卡的性能
    ifconfig wlan0 up   //  ifconfig wlan0 down
    iw dev wlan0 scan   // 扫描WIFI AP
    iw wlan0 connect vivo  // 连接到WIFI AP:vivo (open)
    iw wlan0 connect vivo keys d:0:baiwenwang123 // 连接到WIFI AP:vivo (WEP) d: default, 0: 第0个密码   

    iw dev wlan0 link查看连接状态
    ifconfig wlan0 192.168.1.55(配置前,可用电脑链接vivo热点,并在终端上查看ip网段)
    ping 192.168.1.1
    iw wlan0 disconnect

  3.3. wpa_supplicant安装: 可用于上述4种"认证/加密"
  a. 编译依赖libopenssl
    -> tar xzf openssl-1.0.1d.tar.gz
    -> cd openssl-1.0.1d/
    -> ./config shared no-asm --prefix=$PWD/tmp
    修改Makefile:
       CC= arm-linux-gcc
       AR= arm-linux-ar $(ARFLAGS) r
       RANLIB= arm-linux-ranlib
       NM= arm-linux-nm
       MAKEDEPPROG= arm-linux-gcc

    -> make    

  -> make install     把编译出来的头文件应该放入:/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include

    把编译出来的库文件应该放入:/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib

    把编译出来的库文件应该放入NFS文件系统的lib目录:/work/nfs_root/fs_mini_mdev_new/lib(需要拷贝到开发板的)

  b. 安装wpa_supplicant
    -> tar xzf wpa_supplicant-2.0.tar.gz
    -> cd wpa_supplicant-2.0/wpa_supplicant/
    -> cp defconfig .config
    修改.config加上一行:
        CONFIG_LIBNL32=y
    修改Makefile:
        CC=arm-linux-gcc
    -> make
    -> make DESTDIR=$PWD/tmp install   //安装到当前下目录的tmp目录下

文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>