USB无线网卡的Linux驱动移植
( )增 加 D OP支 持 2 H
操 作 系 统 为 Wid ws Ln x Ma _ 。 n o / iu / c】 ]
1 移 植 要 求
移 植 目 标 是 在 原 有 ARM 监 测 系 统 的 基 础 上 实 现
配置 : ro @ l ah s ts] ma eme u o f o t o lo t e t # c k n c ni g
达 1O Mb s I E 8 2 1 n ; 作 模 式 Ad— Ho 5 p (E E 0 . 1 ) 工 c和
I fa tu te 选 ; 密 特 性 为 6 / 2 nr sr cr 可 加 4 1 8位 W E WP P、 A/
文 件 替 换 完 毕 进 行 内核 编 译 :
ma l ke z mag e
② 修 改 Ma ei 。 k fe l
修 改 第 8行 , 置 可 执 行 文 件 安 装 路 径 : 设
PREF X一 / s/o a/ rls I u r lc lwiees
生 成 内核 zma e 下 载 到 目标 板 。在 内核 编译 的过 I g后 程 中 , 会 出现 许 多 错 误 , 要 是 C O语 法 错 误 、 调 用 还 主 9 所 函 数 数 据 类 型不 匹 配 、 符 号 未 定 义 等 问题 。 主要 的 修 改 段
选 择 [ ei r e]+- ew rigsp ot- [ t D v eD i r- [ t okn u p r] ̄ Ne— c v N - w ri pi s。务 必 选 中“ ak t ok t和 “P: ok got n] n o P c e sc e” I DH—
CP s p o t “ t r a k tfle i g fa e r ( ti— u p r”、 Ne wo k p c e it rn r m wo k Ne fl
tos 实 现 。首 先 下 载 wiees t os 2 . a. z 然 后 解 o l来 rls— o l. 9 trg , 压、 编译 、 装 。下 面 介 绍 具 体 步 骤 。 安
① 解压 。
t rz vfwiee s t ol. a x r ls o s 29. a .g tr z
U B 无 线 网 卡 的 L n x驱 动 移 植 * S iu
赵 秋 亮 , 良儿 , 玉 良 李 刘
( 江 海 洋 学 院 机 电工 程 学 院 , 山 3 6 0 ) 浙 舟 1 0 0
引 言
C 0MFAS T C 一 1 0 US 无 线 网 卡 使 用 F 5 NS B
成 。具 体 配 置 : C 操 作 系 统 为 V P Mw r Wok tt n . ae r s i 5 5 ao
首 先 将 L n x . . 4内核 中 的 n te ie h wiee s iu 2 6 2 ed vc. 、 rls.
h i h n lr h拷 贝 至 Liu 2 6 2内 核 相 应 目 录 下 。 、w a de. n x . .1
然 后 以 Ln x .. 4内 核 为蓝 本 进 行 文 件 建 立 、 改 和 替 i 262 u 修
s r t中 的 ci p
RESOLV CONF= ” ec rs l. o { / t/e ov cn ”
—
修 改 为
RES LV C O ONF= ” t / e ov c n ” / mp rs t.o f
—
若 直 接 将 驱 动 使 , 出 现 大 将
US B无 线 网 卡 功 能 扩 展 , 系 统 提 供 数 据 远 程 无 线 采 集 为 方 案 。原 ARM 监 测 系统 是 在 优 龙 YL 4 0开 发 板 上 开 E2 4
发 的 , Liu 其 n x内 核 版 本 为 2 6 1 . 。 US . .27 B无 线 网 卡 是 外部无线 网络系统提 供的指定 产品 C OMFAS C 一 T F 1 O , 主 芯 片 Re l k 8 8 S 的 L n x内 核 版 本 要 求 5 NS 其 at 1 8 U e iu 是 2 6 1 ~2 6 3 。也 就 是 说 , 个 移 植 过 程 要 求 US ..8 . .3 整 B 无 线 网 卡 驱 动 必 须 是 Re le 1 8 U, 工 作 环 境 是 atk 8 8 S 且 Ln x. . 2 7 iu 2 6 1 . 。Re l k公 司 对 8 8 S 主芯 片驱 动 提 供 at e 18U 的建议是 P C机 Feo aL n x2 6 2 d r iu . . 4测 试 通 过 。经 测 试 ,
wPA2 WP —P K/ A2一P K( 、 A S wP S TKI / P AES ; 持 的 )支
( )增 加 WL N支 持 1 A
选 择 [ ei r e]一 [ ew rig sp ot D v e Di r c v N t okn u p r]一
[ rls L Wi es AN( o-a a i ] Wi l s AN di r e n nhmrd ) - o +[ r e e s L r es v
u r lc la m/ . .1 bn ; u y o 安 装 位 置 为 /e t s/o a/ r 3 4 / i/ B s b x ts/ b s b x; 件 系 统 为 / et rof/ 文 件 系 统 生 成 工 具 为 uyo 文 ts/o ts ;
mk rmf ; B无 线 网 卡 驱 动 源 码 为/ et8 8 s / r — ca s US ts/ 1 8 u di v
& Re Ha . ( n x 2 4 2 ) 硬 件 为 优 龙 YL 2 4 d t9 0 Liu . . 0 ; E 4 0开 发 板 ; 作 系 统 为 Liu .6 2 7 安 装 位 置 为 /e t 操 n x 2 .1 . , ts/
ye 4 0 l2 4
—
I E 82 1n无 线 技 术 , 线 传 输 速 率 最 高 达 10Mb s E E 0 .1 无 5 p 。 相 比传 统 的 5 p E E 0 . 1 产 品 , 有 更 高 的 无 4Mb s E 8 2 1 g I 拥 线 带 宽 , 局 域 网 内 的 数 据 传 输 更 加 高 效 , 有 效 地 减 少 让 能
2 0 2年 第 7期 1
WW me n t c m. n w. s e . o c
经 验 交 流
② /n ld / e/目录 , h n lr h s c . ; icu e n t i a de . 、o k h. w ③ /n ld / o n /目录 ,o e h icu e s u d c r. ; ④ / e/ o e 目录 , e . 、k u fC wiee s C n ih n tc r/ d v C s b f. 、 rls. 、 e — g
b u. o r h;
2 5 安 装 wi l s o l 。 . r e —tos ] e s [
无 线 网卡 配 置 需 要 使 用 一 些 无 线 网 络 管 理 工 具 , 如 w a sp la tw rls tos等 。 本 项 目使 用 wi ls— p— u pi n 、 i es o l c e — r es e
2 2 Ln x内核 配 置 . i u 。 ]
进 入 内核 安 装 目 录/ et ye4 0 2 6 1 , 行 内 核 ts/ l2 4 . .2 运
—
R atk8 8 S 接 口 US 2 0 频 率 范 围 为 2 4 2 4 el 1 8 U, e B. , . ~ .8
GHz 支 持 I E8 2 1 n g b无 线 标 准 ; 线 速 率 最 高 可 , EE 0 . 1 / / 无
频 道 检 测 技 术 , 检 测 到 周 边 有 无 线 信 号 干 扰 时 , 自动 在 可 调 整 频 宽 模 式 , 开 信 道 干 扰 , 无 线 信 号 更 加 稳 定 。 当 避 使 干 扰 消 失 时 , 可 自动 捆 绑 空 闲 信 道 , 分 利 用 信 道 捆 绑 又 充
换 。需 要 替 换 的 文 本 清 单 为 :
① /n ld /iu /目 录 , rls.h s b f.h tx — ic e l x u n wi e s 、 k uf 、 e t e
s a c . n t e ie h、 l b h、p h、c p h、 o ke. e r h h、 e d vc . sa . i. im . s c t h;
tr” 项 。 e)选
另 外 , 需 要 u hp 还 d e c的 配 置 文 件 。拷 贝 B sb x 目 u yo 录/ x mpe/ d c e a ls u h p下 的 smpe sr t到 文 件 系 统/ s/ i l. ci p u r s ae u h p / , 重 命 名 为 d fut sr t h r/ d c c 下 并 ea l ci 。将 d fut . p ea l.
2 移 植 过 程
2 1 移 植 环 境 搭 建 .
移 植 过 程 采 用 VM 虚 拟 机 下 安 装 R d t. e Ha9 0来 完
* 浙 江 省 教育 厅 科 研 项 目 ( 0 9 8 8 ) 浙 江 省 科 技 厅 公 益 技 术 研 究 项 Y2 0 0 0 8 ;
2 3 Ln x内核 文件 修 改 . i u
量 错 误 。如 何 将 驱 动 移 植 到 L n x 2 6 1 . iu . . 2 7还 需 要 进 一
步研究 。
运 行 “ ca srof o ts ca s 生 成 根 文 件 系 mk rmf o tsro f. rmf”
USB无线网卡移植
USB无线网卡(Zydas)移植到Linux-2.6.22.6Kernel version :2.6.22.6Crosstool :arm-linux-gcc-3.4.11.配置内核:/*一般采用WiFi Zyda 2611的网卡,注意在内核中有一个ZB1201的无法驱动比较新的网卡*/Networking--->[*]Networking supportWireless--><*>Generic IEEE 802.11 Networking Stack (mac80211)<*>Generic IEEE 802.11 Networking Stack<*> Software MAC add-on to the IEEE 802.11 networking stack Device Drivers--->Netword device support--->Wireless LAN--->[*]Wireless LAN (IEEE 802.11)<M>ZyDAS ZD1211/ZD1211B USB-wireless support注意:要使用firmware,必须要在配置内核时选上:Device Drivers --->Generic Driver Options ---><*> Userspace firmware loading support否则会出现: Unknown symbol release_firmware 和: Unknown symbol request_firmware 的错误。
2.make uImage3.make modules /*编译动态模块*/4.tar xvjf zd1211-firmware-1.4.tar.bz2mkdir -p /lib/firmware/zd1211/cp zd1211-firmware/* lib/firmware/zd1211/5.此时应该安装应用层的工具.以便在Linux 在ifconfig 下能使用网络结点操作. 一般使用wireless_tools.29.tar.gz这一工具配置结点.cd /home/arm/work/sourcetar zxvf wireless_tools.29.tar.gzcd wireless_tools.29vi Makefile修改Makefile中的以下代码:## Compiler to use (modify this for cross compile).CC = gcc## Other tools you need to modify for cross compile (static lib only).AR = arRANLIB = ranlib修改后代码:## Compiler to use (modify this for cross compile).CC = arm-linux-gcc## Other tools you need to modify for cross compile (static lib only).AR = arm-linux-arRANLIB = arm-linux-ranlib6.再执行make,编译完成后,将生成的iwconfig,iwlist文件拷贝到FL2440的根文件系统中的/bin目录下,将libiw.so.29拷贝到/lib目录下(这里我是用NFS挂PC机上的根文件系统):cp iwconfig iwlist /home/arm/rootfs/bin/cp libiw.so.29 /home/arm/rootfs/lib/7.启动开发板FL2440,执行insmod zd1211rw.ko 后插入无线网卡显示如下:# usb 1-1.1: new full speed USB device using s3c2410-ohci and address 3usb 1-1.1: configuration #1 chosen from 1 choiceusb 1-1.1: reset full speed USB device using s3c2410-ohci and address 3zd1211rw 1-1.1:1.0: firmware version 4725zd1211rw 1-1.1:1.0: zd1211b chip 0ace:1215 v4810 full 00-02-72 AL2230_RF pa0 g-Szd1211rw 1-1.1:1.0: eth1如果网卡安装成功,应该能在用cat /proc/net/wireless 目录下看到网卡,( 注意,在2.6.21以前,要配置CONFIG_NET_RADIO才会显示这个文件系统.更高的版本是自动支持的.):Inter-| sta-| Quality | Discarded packets | Missed | WEface | tus | link level noise | nwid crypt frag retry misc | beacon | 22eth1: 0000 0 0 0 0 0 0 0 0 0由以上看到无线网卡为eth1.8.启动FL2440开发板,进入linux命令行后,执行ifconfig eth1 up,启动无线网卡。
Linux内核移植与USB无线网卡驱动的研究与实现的开题报告
Linux内核移植与USB无线网卡驱动的研究与实现的开题报告一、选题背景随着无线网络的不断普及,无线网卡也成为了人们日常使用电脑和网络的必备设备之一。
而Linux作为一款开源操作系统,具有稳定性高、安全性好、自由度大等优点,在服务器、嵌入式设备等领域得到广泛应用。
因此,实现Linux内核的移植以及USB无线网卡驱动的开发,对于推动Linux技术在无线网络领域的应用具有重要意义。
二、选题意义本课题的研究意义主要包括以下几个方面:1.推进Linux技术在无线网络领域的应用:无线网络已经成为人们生活和工作中必不可少的一部分,而Linux作为一款广泛应用的操作系统,其在无线网络领域的应用具有重要意义。
2.提高嵌入式Linux内核移植的技能:嵌入式Linux内核移植是将Linux操作系统移植到嵌入式设备中的过程,掌握此技能对于嵌入式开发者来说至关重要。
3.加深对USB无线网卡驱动的理解:USB无线网卡作为上网的重要设备之一,了解其驱动的实现方法对于日常使用和开发无线网络应用程序具有重要意义。
三、研究内容和技术路线本课题的主要研究内容为Linux内核移植和USB无线网卡驱动的研究与实现。
具体技术路线如下:1.进行嵌入式设备的基础设置:搭建开发环境、完成所需工具链的安装和编译,构建内核与文件系统等。
2.进行Linux内核的移植:根据目标硬件平台的各种设备和外设等特点,进行系统内核的移植和设置,并测试内核。
3.开发USB无线网卡驱动:了解USB无线网卡的驱动机制,进行驱动程序设计与开发,完成网卡与Linux内核的驱动程序的交互模块的程序。
4.进行无线网络测试:安装Linux系统及无线网卡驱动程序,完成站点间无线通信测试,分析测试结果并进行优化。
四、预期成果本课题主要的预期成果为:1.实现嵌入式Linux内核的移植;2.开发USB无线网卡驱动程序,实现与内核的交互;3.完成无线网络的测试,获得测试结果并进行优化;4.形成相关实验报告和学术论文。
linux-2.6.22下USB驱动移植
linux-2.6.22下USB驱动移植一、代码修改修改在arch/arm/mach-s3c2410目录下的mach-smdk2410.c,添加如下内容/**********************add by nick*************************************/static struct s3c2410_hcd_info usb_ljd2410_info = {.port[0] = {.flags = S3C_HCDFLG_USED}};int usb_ljd2410_init(void){unsigned long upllvalue = (0x7812)|(0x024)|(0x03);printk(“USB Control, (c) 2006 sbc2410\n”);s3c_device_usb.dev.platform_data = &usb_ljd2410_info;while(upllvalue!=__raw_readl(S3C2410_UPLLCON)){__raw_writel(upllvalue,S3C2410_UPLLCON);mdelay(1);}return 0;}/***************************end add**********************/同时将usb_ljd2410_init()函数添加到smdk2410_map_io函数里面进行初始化,如下所示:static void __init smdk2410_map_io(void){s3c24xx_init_io(smdk2410_iodesc, ARRAY_SIZE(smdk2410_iodesc));# Linux100中文网/s3c24xx_init_clocks(0);s3c24xx_init_uarts(smdk2410_uartcfgs, ARRAY_SIZE(smdk2410_uartcfgs));usb_ljd2410_init();}//注意,不能忘了添加头文件#include asm/arch/regs-clock.h>#include asm/arch/usb-control.h>#include linux/device.h>#include linux/delay.h>修改后的整个文件如下:#include linux/kernel.h>#include linux/types.h>#include linux/interrupt.h>#include linux/list.h>#include linux/timer.h>#include linux/init.h>#include linux/serial_core.h>#include linux/platform_device.h>#include “asm-arm/arch-s3c2410/regs-cs8900.h”#include asm/mach/arch.h>#include asm/mach/map.h>#include asm/mach/irq.h>#include asm/hardware.h>#include asm/io.h>#include asm/irq.h>#include asm/mach-types.h>#include asm/arch/regs-serial.h>#include asm/arch/fb.h>#include asm/plat-s3c24xx/devs.h>#include asm/plat-s3c24xx/cpu.h>#include asm/plat-s3c24xx/common-smdk.h>#include asm/arch/regs-clock.h>#include asm/arch/usb-control.h>#include linux/device.h>#include linux/delay.h>static struct map_desc smdk2410_iodesc[] __initdata = {/* nothing here yet */{vSMDK2410_ETH_IO,pSMDK2410_ETH_IO,SZ_1M,MT_DEVICE}};#define UCON S3C2410_UCON_DEFAULT#define ULCON S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB#define UFCON S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODEstatic struct s3c2410_uartcfg smdk2410_uartcfgs[] __initdata = {[0] = {.hwport = 0,.flags = 0,.ucon = UCON,.ulcon = ULCON,.ufcon = UFCON,},[1] = {.hwport = 1,.flags = 0,.ucon = UCON,.ulcon = ULCON,.ufcon = UFCON,},[2] = {.hwport = 2,.flags = 0,.ucon = UCON,.ulcon = ULCON,.ufcon = UFCON,}};//nick LCD Driver 2009.3.22/* LCD driver info *//* Configuration for 800*480 */static struct s3c2410fb_mach_info ljd2410_tft_cfg __initdata = {.type = S3C2410_LCDCON1_TFT,.regs = {.lcdcon1 = S3C2410_LCDCON1_TFT16BPP |S3C2410_LCDCON1_TFT |S3C2410_LCDCON1_CLKV AL(0x01),.lcdcon2 = S3C2410_LCDCON2_VBPD(39) |S3C2410_LCDCON2_LINEV AL(479) | /*480*/S3C2410_LCDCON2_VFPD(19) |S3C2410_LCDCON2_VSPW(3),.lcdcon3 = S3C2410_LCDCON3_HBPD(49) |S3C2410_LCDCON3_HOZV AL(799) | /* 800 */S3C2410_LCDCON3_HFPD(19),.lcdcon4 = S3C2410_LCDCON4_MV AL(13) |S3C2410_LCDCON4_HSPW(99),.lcdcon5 = S3C2410_LCDCON5_FRM565 |S3C2410_LCDCON5_INVVLINE |S3C2410_LCDCON5_INVVFRAME |S3C2410_LCDCON5_PWREN |S3C2410_LCDCON5_HWSWP,},.lpcsel = 0x00,.gpccon= 0xaaaaaaaa,.gpccon_mask= 0xffffffff,.gpcup= 0xffffffff,.gpcup_mask= 0xffffffff,.gpdcon= 0xaaaaaaaa,.gpdcon_mask= 0xffffffff,.gpdup= 0xffffffff,.gpdup_mask= 0xffffffff,.width =800,.height = 480,.xres = {.min = 800,.max = 800,.defval = 800,},.yres = {.min = 480,.max = 480,.defval = 480,},.bpp = {.min = 16,.max = 16,.defval = 16,},};//nick LCD/**********************add by nick*************************************/static struct s3c2410_hcd_info usb_ljd2410_info = {.port[0] = {.flags = S3C_HCDFLG_USED}};int usb_ljd2410_init(void){unsigned long upllvalue = (0x7812)|(0x024)|(0x03);printk(“USB Control, (c) 2006 sbc2410\n”);s3c_device_usb.dev.platform_data = &usb_ljd2410_info;while(upllvalue!=__raw_readl(S3C2410_UPLLCON)){__raw_writel(upllvalue,S3C2410_UPLLCON);mdelay(1);}return 0;}/***************************end add**********************/static struct platform_device *smdk2410_devices[] __initdata = {&s3c_device_usb,&s3c_device_lcd,&s3c_device_wdt,&s3c_device_i2c,&s3c_device_iis,};static void __init smdk2410_map_io(void){s3c24xx_init_io(smdk2410_iodesc, ARRAY_SIZE(smdk2410_iodesc));s3c24xx_init_clocks(0);s3c24xx_init_uarts(smdk2410_uartcfgs, ARRAY_SIZE(smdk2410_uartcfgs));usb_ljd2410_init();}static void __init smdk2410_init(void){s3c24xx_fb_set_platdata(&ljd2410_tft_cfg);platform_add_devices(smdk2410_devices, ARRAY_SIZE(smdk2410_devices));smdk_machine_init();}MACHINE_START(SMDK2410, “SMDK2410”) /* @TODO: request a new identifier and switch* to SMDK2410 *//* Maintainer: Jonas Dietsche */.phys_io = S3C2410_PA_UART,.io_pg_offst = (((u32)S3C24XX_V A_UART) >> 18) & 0xfffc,.boot_params = S3C2410_SDRAM_PA + 0x100,.map_io = smdk2410_map_io,.init_irq = s3c24xx_init_irq,.init_machine = smdk2410_init,.timer = &s3c24xx_timer,MACHINE_END下面这个连接有大虾们对USB驱动移植的讨论Device Drivers --->Generic Driver Options --->Hotplug firmware loading supportBlock devices --->Low Performance USB Block driverSCSI device support --->SCSI generic supportProbe all LUNs on each SCSI deviceUSB support --->Support for Host-side USBUSB device filesystemOHCI HCD supportUSB Mass Storage supportUSB Monitor3、加入了MSDOS fs和VFAT fs的支持。
linux usb wifi驱动开发原理
linux usb wifi驱动开发原理Linux USB WiFi驱动开发原理一、引言随着无线网络的普及,WiFi成为了人们生活中不可或缺的一部分。
而在Linux操作系统中,为了支持各种WiFi设备,需要进行对应的驱动开发。
本文将介绍Linux USB WiFi驱动开发的原理和过程。
二、USB WiFi驱动开发的基本原理1. USB接口USB(Universal Serial Bus)是一种通用的串行总线标准,用于连接计算机与外部设备。
USB WiFi设备通过USB接口与计算机通信,传输数据和控制命令。
2. 驱动程序驱动程序是用于操作和控制硬件设备的软件。
USB WiFi驱动程序负责与USB WiFi设备进行通信,实现数据的传输和接收。
驱动程序需要与操作系统紧密结合,通过操作系统提供的API接口与设备进行交互。
三、USB WiFi驱动开发的过程1. 设备识别与初始化USB WiFi设备插入计算机后,操作系统会通过USB子系统进行设备的识别和初始化。
在Linux系统中,USB设备的识别和初始化由USB核心驱动完成。
核心驱动会根据设备的VID(Vendor ID)和PID (Product ID)来匹配对应的驱动程序。
2. 驱动程序注册驱动程序需要在Linux系统中进行注册,以便系统能够正确识别和加载驱动。
注册过程通常包括向系统注册设备类型、设备ID等信息。
3. 设备操作接口的实现驱动程序需要实现设备操作接口,包括设备的打开、关闭、读取数据、写入数据等功能。
这些操作接口是通过USB子系统提供的API 来实现的。
4. 数据传输与控制USB WiFi驱动程序需要实现数据的传输和控制功能。
数据传输主要包括从设备读取数据和向设备写入数据,而控制功能包括设置设备参数、配置网络等操作。
5. 错误处理与调试在USB WiFi驱动开发中,错误处理和调试是非常重要的一部分。
驱动程序需要处理各种异常情况,如设备断开连接、传输错误等。
linux下安装USB无线网卡驱动
linux下安装USB无线网卡驱动linux使用ndiswrapper安装USB无线网卡驱动,按照文档的步骤,绝对可以成功,我们公司都这么安装的。
安装方法及步骤:一、准备工作2、到/projects/ndiswrapper下载最新的ndiswrapper包,我的版本是ndiswrapper-1.52.tar.gz3、准备好网卡在Winxp下的驱动程序。
驱动程序最好是最新的,指定给XP用的。
二、安装及配置1、安装(1)解压:tar -zxvf ndiswrapper-1.52.tar.gz(2)进入ndiswrapper-1.52:cd ndiswrapper-1.52(3)编译:make //在此操作之前必需先把编译环境搭建好,即:安装好开发环境。
(4)安装:make install //如果不采取默认的安装路径,则可以用。
configure ――prefix=“/etc/local"来指定安装目录。
//此目录是自建。
(5)查看安装后的版本ndiswrapper -v | grep //此处似乎不对。
如安装成功则显示version: 1.51(6)获取该无线网卡的WindowsXP驱动,(7)进入该驱动所在目录:cd /home/tsm/dwl_g520(8)安装无线网卡驱动:ndiswrapper -i net5211.inf(9)查看驱动是否安装:ndiswrapper -l //如:显示net5211(驱动名称):driver installed(10)写入配置文件:ndiswrapper -mndiswrapper -mandiswrapper -mi(11)启动后模块自动加载:modprobe ndiswrapper注:安装出现问题的仔细按照下面小问题的步骤会解决问题的:小问题:我是用ndiswrapper安装windows下的inf驱动的sony本本384M内存,4M集成显存,usb1.0接口,跑windows速度比较慢,就像装个轻量级的操作系统。
ARM板TL_WN725N usb wifi Linux Driver 移植
ARM板TL_WN725N USB Wifi Driver 移植内容描述:2014-12-15,TL_WN725N USB Wifi Linux Driver 移植。
操作1:确定型号插入TP-link USB wifi,提示UT@utcooker:/data # 插入前后lsusbBus 001 Device 007: ID 0bda:8179得知idVendor=0bda, idProduct=8179,确认芯片型号为8188eu,TL-WN725N V2版本。
UT@utcooker:/data # netcfgsit0 DOWN 0.0.0.0/0 0x00000080 00:00:00:00:00:00lo UP 127.0.0.1/8 0x00000049 00:00:00:00:00:00ip6tnl0 DOWN 0.0.0.0/0 0x00000080 00:00:00:00:00:00操作2:测试驱动1)Realtek官方暂无8188eu linux 驱动。
下载相近型号芯片驱动源码。
进入os_dep\linux\usb_intf.c 查看RTL8192C_USB_IDS无{USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8187)}2)github 下载驱动rtl8188eu-master.tar (经测试,热插拔有问题)rtl8188EUS_linux_v4.1.4_6773.20130222.tar.gz(可用)RTL8188EUS_RTL8189ES_linux_v4.1.7_9024.20130916.zip(可用)操作3:修改内核以RTL8188EUS_RTL8189ES_linux_v4.1.7_9024.20130916.zip为例,移植过程如下:1)确认linux内核有以下配置:[*] Networking support --->-*-Wireless ---><*> cfg80211 - wireless configuration API[*] cfg80211 wireless extensions compatibility2)打开makefileCONFIG_PLATFORM_I386_PC = y 改为CONFIG_PLATFORM_I386_PC = nCONFIG_PLATFORM_ARM_S3C2K4 =n 改CONFIG_PLATFORM_ARM_S3C2K4 = y 配置编译链及内核源码地址ifeq ($(CONFIG_PLATFORM_ARM_S3C2K4), y)EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIANARCH := armCROSS_COMPILE := /opt/FriendlyARM/gcc-toolschain/4.5.1/bin/arm-linux-KSRC := /svn/pengdonghui/Android_maize/linux-3.5-newEndif3)make –j32后得到8188eu.ko放入开发板:adb push 8188eu.ko /data加载驱动模块:UT@utcooker:/data # insmod 8188eu.ko[18668.230000] bFWReady == _FALSE call reset 8051...[18668.260000] usbcore: registered new interface driver rtl8188eu 查看网络设备:UT@utcooker:/data # ifconfig -a…wlan0 Link encap:Ethernet HWaddr 08:57:00:98:6B:31BROADCAST MULTICAST MTU:1500 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)此时,此时能看到网络接口,Android界面setting 无法打开wifi。
Hisi3520+USBWIFI(RT3070)做路由器移植过程
Hisi3520+USBWIFI(RT3070)做路由器移植过程硬件平台:Hisi3520开发板Linux内核:linux-3.0.y说明:这是一个Hisi3520+RT3070WIFI作为路由器的移植过程!在做下面的过程中,我认为你是有个有点嵌入式开发经验的人,内核源码已经可以编译通过运行等!特别要强调,usb总线驱动一定要是好的。
下面的步骤也描述了如何利用sdk安装交叉编译器。
如需帮助,请联系孙怀亚。
第一步、下载Hi3520A_SDK_V1.0.2.0.tgz,这是海思的开发SDK,可以将第二步、解压缩海思SDK#tar -zxvf Hi3520A_SDK_V1.0.2.0.tgz修改sdk.Unpack文件#vim sdk.unpack将第一行的#!bin/sh改为#!bin/bash,如下图#./sdk.unpack解压完成后目录多出如下目录osdrv,mpp目录:进入osdrv目录#cd osdrv在osdrv目录下,有文件系统工具busybox,内核kernel,交叉编译工具toolchain,uboot 等,目录结构详细说明请看目录的readme_en.txt。
第三步、安装交叉编译器:进入toolchain目录进入arm-hisiv100-linux运行#./cross.install 安装脚本将自动帮你将交叉编译器安装到/opt目录下,同时在/etc/profile文件的最后一行加入环境变量,你可以看一下这两个地方的变动:可以看到/opt目录下多出了hisi-linux目录可以看到/etc/profile文件最后多出了如下几行:运行一下环境变量配置:#Source /etc/profile 这个将重新配置环境变量在中端中输入#arm-hisiv100-linux-gcc –v如果看到如上图信息说明你的交叉编译已经安装完毕,可以使用了!如果没有,你需查找原因,一般会解决的,如果实在不行,请联系孙怀亚。
Hisi3520+USBwifi做客户端的移植过程
USB_WIFI移植过程硬件平台:海思3520开发板Linux内核:linux-3.0.y交叉编译器:arm-hisi100-linux-gcc作者:孙怀亚QQ:413983254第1步:下载2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.bz2,这个文件可以在雷凌官网下载。
在做下面的过程中,我认为你是有点嵌入式开发经验的人,并且交叉编译器已经安装完毕,交叉编译器安装请参考交叉编译器安装与配置文档,内核源码已经可以编译通过运行等!特别要强调,usb总线驱动一定要是好的。
内核配置请参考内核裁剪与配置文档第2步:拷贝源码到ubuntu目录下,解压缩#Tar –jxvf2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.bz2解压#mv 2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO usb_wifi太长改个名# cd usb_wifi#ls可以看到目录如下第3步:编译#Make在os/linux/目录下生成一个rt5370sta.ko文件,在电脑上insmod,这样你的ubuntu便按装好wifi驱动了。
第4步:交叉编译,如果直接将刚才生成的.ko文件在海思3520开发上运行是不行的,你加载模块时会出现提示不识别的模块格式错误,原因是X86和arm平台架构原因。
那么怎么移植呢,首先到驱动源码目录修改makefile,主要是让驱动与内核源码配对!修改makefile如下:#Vim Makefile修改os/linux/config.mk#vim os/linux/config.mk修改如下支持wpa:找到,这里让去的支持WPA修改编译器:这里指的编译器的路径回到顶层执行make#make ARCH=arm CROSS_COMPILE=arm-hisiv100-linux-编译完毕在os/linux目录下生成:rt5370sta.ko在common中生产rt2870.bin第5步.移植到海思3520开发板上:拷贝刚才生成的.ko文件到开发板的目录下(随便哪个目录,只要你自己能找到):在开发板的etc目录下建立Wireless目录,在Wireless下建立RT2870STA目录,拷贝驱动源码目录下RT2870STA.dat到刚建立的文件夹下。
基于ARM的USB无线网卡Linux设备驱动设计
基于ARM的USB无线网卡Linux设备驱动设计作者:杨勇, 叶梅, 初元萍, 胡磊作者单位:中科院高能物理所北京100049相似文献(10条)1.学位论文周哲应用于无线视频监控的嵌入式Linux系统平台构建2009随着无线网络技术和嵌入式技术的发展,无线视频监控已经成为嵌入式系统应用的一个新的发展方向。
嵌入式系统由嵌入式操作系统和嵌入式硬件平台两部分组成:ARM架构是嵌入式设备中使用相当广泛的硬件平台;而随着Linux的发展,嵌入式Linux操作系统已经成为嵌入式领域的主流操作系统。
嵌入式Linux操作系统支持多种硬件平台,具有良好的移植性和网络传输特性。
本文所介绍的方案正是基于ARM9硬件平台和嵌入式Linux系统所构建的无线视频监控系统。
本文分为五个章节。
前三个章节分别介绍了无线视频监控系统和嵌入式系统的概念以及构建一般性嵌入式Linux操作系统的步骤和组成。
本文第四章的侧重点是介绍如何构建适用于无线视频监控的嵌入式Linux系统。
第四章从bootloader的移植、Linux kernel的移植以及相关驱动的开发移植、嵌入式根文件系统的构建三方面分别进行了阐述。
由于无线视频监控系统的特殊性,本文详细介绍了USB摄像头驱动模块和无线网卡驱动模块的代码架构以及工作方式。
在本文的第五章,作者介绍了本系统进行ad-hoc网络模式和infrastructure网络模式的配置方式以及在PC监控端所截获的视频监控图像。
在本文的最后部分,作者提出了对于通过嵌入式Linux系统来实现无线视频监控的未来展望。
2.期刊论文杨勇.叶梅.张秦艳.初元萍.胡磊.YANG Yong.YE Me.ZHANG Qin-yan.CHU Yuan-ping.HU Lei基于ARM的嵌入式Linux无线网卡设备驱动研究-核电子学与探测技术2010,30(4)介绍了D-Link无线网卡在嵌入式Linux下的驱动设计与实现.基于医用伽玛相机和小型SPECT设备的手持数据采集系统,首先搭建好嵌入式开发的软硬件环境,分析Linux内核USB驱动模块和网络驱动工作原理,然后针对D-Link无线网卡对通用的无线网卡驱动进行修改和交叉编译,最终移植到ARM平台上,建立嵌入式无线局域网,为进一步的无线网络研究搭建好开发平台.3.学位论文杨小铸基于嵌入式Linux的小型移动机器人远程控制系统设计2007本文对基于嵌入式Linux的小型移动机器人远程控制系统进行了 研究。
Linux下USB无线网卡驱动程序移植的实现
5期
任
厦等 : L inux下 U SB 无线网卡驱动程序移植的实现
75
源文件, 如果每次均手工键入 gcc 命令进行编译的 话, 会非常不方便。因此, 人们通常利用 m ake 工具 来自动完成 编译工作。 m akef ile 文件就是 m ake 工 具用来完成并自动维护编译工作的。它需要按照某 种语法进行编写, 其中说明了如何编译各个源文件 并连接生成可执行文件, 并定义了源文件之间的依 赖关系。当修改了其中某个源文件时 , 如果其他源 文件依赖于该文件 , 则也要重新编译所有依赖该文 件的源文件。 默认情况下 , GNU m ake 工具在当前工 作目录 中按如下顺序搜索 m akefile : * GNUm ake file * m akefile * M akefile 在 UN I X 系统中 , 习惯使用 M akef ile 作为 m ak file 文件。如果要使用其他文件作为 m akefile , 则可 利用类似下面的 m ake命令选项指定 m akefile文件: $ m ake - fM akefile . debug 3 . 1 m akefile的基本结构 m akefile中一般包含如下内容 : ( 1)需要由 m ake 工具创建的项目, 通常是目标 文件和可执行文件。通常使用 目标 ( target) 一词 来表示要创建的项目; ( 2)要创建的项目依赖于哪些文件 ; ( 3)创建每个项目时需要运行的命令。 例如 , 假设现在有一个 C ++ 源文件 tes. t C, 该 源文件包含有 自定义的头文件 tes. t h, 则目标文件 tes. t o 明确依赖于两个源文件: tes. t C 和 tes. t h 。另 外, 只希望利用 g+ + 命令来生成 tes. t o 目标文件。 这时 , 就可以利用 如下的 m akefile 来定义 tes. t o的 创建规则 : tes. t o : tes. t C tes.t h g+ + - c - g tes. tC 从上面的例子注意到, 第一行指定 tes. t o 为目 标, 并且依赖于 tes. t C 和 tes. t h 文件。随后的行指 定了如何从目标所依赖的文件建立目标。 当 tes. t C 或 tes.t h 文件在编译之后又被修改, 则 m ake工具可自动重新编译 tes. t o , 如果在前后两 次编译之间, tes. t C 和 tes. t h 均没 有被修 改, 而且 tes. t o 还存在 的话, 就没有必要 重新编译。这种依 赖关系在多源文件的程序编译中尤其重要。通过这 种依赖关系的定义 , m ake工具可避免许多不必要的 编译工作。当然, 利用 Shell脚本也可以达到自动编 译的效果 , 但是 , Shell脚本将全部编译任何源文件, 包括那些不必要重新编译 的源文件, 而 m ake 工具
