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

发布者:huanhui最新更新时间:2023-09-12 来源: elecfans关键字:S3C2440  移植 手机看文章 扫描二维码
随时随地手机看文章

一、配置内核选择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目录下

[1] [2] [3]
关键字:S3C2440  移植 引用地址:wifi网卡RT3070在S3C2440的移植和使用

上一篇:(一)s3c2440——GPIO(流水灯实验)
下一篇:S3C2440 音频解码芯片WM8976声卡驱动移植、madplay测试

推荐阅读最新更新时间:2024-11-11 16:59

一种基于WinCE6.0的数字调频收音机的设计
本设计利用数字收音机芯片Si4730,为基于WincE6.0的智能系统集成FM功能提供了一种很好的解决方案,该方案实现了全频手动与自动搜台等功能。 1 基于WinCE6.0的系统设计流程 如图1所示,基于WinCE 6.0的系统设计一般分为3个过程:针对不同的硬件平台设计BSP包,BSP包括Boot-loader、OAL和驱动程序;针对系统的需求,利用Platform Builder for CE 6.0选择合适的组件,构建操作系统并导出SDK;在SDK的支撑下开发应用程序。 WinCE 6.0与其早期版本相比,开发工具有了较大的变化。Platform Builder已经不是一个单独发行的工具,Platform B
[单片机]
一种基于WinCE6.0的数字调频收音机的设计
Exynos4412 内核移植(五)—— 驱动的移植
以移植自己制作的驱动,学习内核移植中的驱动移植,及 驱动程序的动态编译和静态编译 硬件环境: Linux 内核版本:Linux 3.14 主机:Ubuntu 12.04发行版 目标机:FS4412平台 交叉编译工具:arm-none-linux-gnueabi-gcc 一、静态编译 1、添加驱动文件 将写好的实验代码fs4412_led_drv.c 拷贝到 drivers/char 下 fs4412_led_drv.c 如下: #include linux/kernel.h #include linux/module.h #include linux/fs.h #include linux
[单片机]
Exynos4412 内核<font color='red'>移植</font>(五)—— 驱动的<font color='red'>移植</font>
移植u-boot-2010.03问题 --- No oob scheme defined for oobsize 32
1,找到u-boot-2010.03/drivers/mtd/nand下的nand_ids.c //{ NAND 2GiB 3,3V 8-bit , 0xD5, 0, 2048, 0, LP_OPTIONS}, { NAND 2GiB 3,3V 8-bit , 0xD5, 4096, 2048, 512*1024, LP_OPTIONS}, 2,找到u-boot-2010.03/include/linux/mtd下的mtd.h 第一处: //uint64_t addr; //uint64_t len; //uint64_t fail_addr; uint32_t addr; uint32_
[单片机]
ARM9(S3C2440)时钟与定时器
时钟概念 一、时钟脉冲:一个按一定电压幅度,一定时间间隔连续发出的脉冲信号。 二、时钟频率:单位时间(如一秒)内产生的时钟脉冲个数。 时钟作用 时钟信号时时序逻辑(如一些芯片要一定的延时时间才能工作)的基础,它用于决定逻辑单元中的状态何时更新。数字芯片中众多的晶体管都工作在开关状态,他们的导通和关断动作无不是按照时钟信号的节奏进行的。 (1)时钟产生-----晶振 优点:性能稳定,频率稳定,准确。 缺点:频率仅由晶体决定,通常是特定晶体被制成客户所需要的振荡器,导致成本,周期较长,不利于快速上市,而且难以获得非标准的频率。 (2)时钟产生-----PLL PLL(锁相环)合成器是一种更为复杂的系
[单片机]
基于ARM的嵌入式Linux移植真实体验(2)――BootLoader
BootLoader指系统启动后,在操作系统内核运行之前运行的一段小程序。通过BootLoader,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。通常,BootLoader是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的 BootLoader 几乎是不可能的。尽管如此,我们仍然可以对BootLoader归纳出一些通用的概念来,以指导用户特定的BootLoader设计与实现。 BootLoader 的实现依赖于CPU的体系结构,因此大多数 BootLoader 都分为stage1 和stage2 两大部分。依赖于CP
[单片机]
TQ2440移植u-boot-2010.06-rc1---6usb下载
以前做过usb下载的东东,现在把它搞到u-boot-2010.06-rc1上去. 网上有usb下载的代码,可以在这儿下载: http://blogimg.chinaunix.net/blog/upfile2/100109001526.bz2 一. 先编译过再说 1.下载后,解压到u-boot-2010.06-rc1/drivers/usb/slave目录 并在顶层Makefile中添加: LIBS += drivers/usb/slave/libusb_slave.a 2. 将driver/usb/slave/目录下所有C文件所个替换 a. #if defined(CONFIG_S3C2400) #include s
[单片机]
S3C2440地址空间的分配及启动过程
一、S3C2440地址空间的分配 1. s3c2440A 的存储器控制器有以下特性: l 大小端(通过软件选择) l 地址空间:每个bank有128M 的字节(总共1G字节/8个banks) l 可编程的访问位宽,bank0(16/32 位),其他bank(8/16/32 位) l 共8个存储器banks l 6 个是ROM,SRAM 等类型存储器bank l 2 个是可以作为ROM、SRAM、SDRAM 等存储器bank l 7 个固定的存储器bank起始地址 l 最后一个bank 的起始地址可调整 l 最后两个bank 大小可编程 l 所有存储器bank的访问周期可编程 l 总线访问周期可通过插入外部
[单片机]
<font color='red'>S3C2440</font>地址空间的分配及启动过程
Linux帧缓冲设备驱动程序框架及图形界面GUI的移植
硬件平台   S3C2410X是三星公司的基于ARM920T的S3C2410X芯片。S3C2410X集成了一个LCD控制器(支持STN和TFT带有触摸屏的液晶显示屏)、SDRAM、触摸屏、USB、SPI、SD和MMC等控制器,4个具有PWM功能的计时器和1个内部时钟,8通道的10位ADC,117位通用I/O口和24位外部中断源,8通道10位AD控制器,处理器工作频率最高达到203MHz。   S3C2410中的LCD控制器可支持单色/彩色LCD显示器。支持彩色TFT时,可提供4/8/12/16位颜色模式,其中16位颜色模式下可以显示65536种颜色。配置LCD控制器重要的一步是指定显示缓冲区,显示的内容就是从缓冲区中读出的,其大小
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved