WiFi驱动移植到Linux

WiFi驱动移植到Linux
WiFi驱动移植到Linux

linux下移植之WIFI驱动

2010-05-14 22:27

1.前言

硬件平台: imx27+sd8686

软件平台: linux

内核: 2.6.27

2.移植思想

1, WIFI 模块本身和 cpu 之间的接口;

我们的模块和 cpu 之间的接口是 sdio 的,也就是说必须要先保证SDIO 本身是工作的,与SD卡,MMC属于同类型。主要用到这几个GPIO引脚SD0...SD3,SD2_CMD,SD2_CLK,以及复位引脚PB24.

2, WIFI 模块本身的上电时序;

模块都有它自己的规律,所以必须要根据 spec 了解它本身的上电过程,严格遵守;

3,以太网接口的创建;

我们的 WIFI 模块本身是建立在 SDIO 口之上的,而对上都是提供以太网接口的,所以必须要保证这个接口以及创建;

4,特殊处理;

不同的模块都有它特别的地方,比如我们用的是 8686 和 compo 也就是说它和蓝牙共用天线,所以需要在初始化的时候做特殊的处理,发送特殊的命令,才能工作;

3.移植过程

1,sdio本身是通过gpio口模拟的,所以需要对gpio口进行配置;

static mfp_cfg_t littleton_mmc3_pins[] = {

GPIO7_2_MMC3_DAT0,

GPIO8_2_MMC3_DAT1,

GPIO9_2_MMC3_DAT2,

GPIO10_2_MMC3_DAT3,

GPIO103_MMC3_CLK,

GPIO105_MMC3_CMD,

};

2,wifi模块本身的初始化;

#define MFP_WIFI_V18_ENABLE (GPIO26_GPIO)

#define MFP_WLAN_RESETN (GPIO99_GPIO)

#define WIFI_WAKEUP_HOST (GPIO104_GPIO) /*error must be changed*/

#define WLAN_ENABLE_PIN 26

#define WLAN_RESET_PIN 99

#define M200_B

#ifdef M200_B

#define BT_RESET_PIN EXT1_GPIO(1)

#define BT_RESET_GPIO (GPIO1_2_GPIO)

#else

#define BT_RESET_GPIO (GPIO6_2_GPIO)

#define BT_RESET_PIN EXT1_GPIO(6)

#endif

static mfp_cfg_t lin2008_wifibt_pins[] = {

MFP_WIFI_V18_ENABLE,

MFP_WLAN_RESETN,

WIFI_WAKEUP_HOST,/*wakeup host*/

};

static mfp_cfg_t lin2008_wifibt_pins2[] = {

MFP_WIFI_V18_ENABLE,

};

static int wifibt_power_status;

int lin2008_poweron_wifibt_board(void)

{

if (!wifibt_power_status) {

mxc_mfp_config(ARRAY_AND_SIZE(lin2008_wifibt_pins)) ;

gpio_direction_output(WLAN_ENABLE_PIN, 1);

gpio_direction_output(WLAN_RESET_PIN, 1);

gpio_direction_output(BT_RESET_PIN,1);

mdelay(10);

gpio_direction_output(BT_RESET_PIN, 0);

gpio_direction_output(WLAN_RESET_PIN, 0);

// bt need > 5 ms to reset

mdelay(5);

gpio_direction_output(BT_RESET_PIN, 1);

gpio_direction_output(WLAN_RESET_PIN, 1);

wifibt_power_status++;

return 0;

}

wifibt_power_status++;

return 1;

}

int lin2008_poweroff_wifibt_board(void)

{

wifibt_power_status--;

if (!wifibt_power_status) {

mxc_mfp_config(ARRAY_AND_SIZE(lin2008_wifibt_pins2) );

gpio_direction_output(WLAN_ENABLE_PIN, 0);

return 0;

}

return 1;

}

3,以太网接口的创建

这里在 android 平台上要做特殊的处理,也就是 firmware 的位置要放好,否则加载 firmware 始终不成功,那么以太网接口就不会被创建了;

需要把 helper_sd.bin 放在 /lib/firmware/mrvl 下面(若没有,则创建一个);

把 sd8686.bin 放在 /lib/firmware/mrvl 下面(同上);

4,特殊的处理

对于 8686 模块需要做特殊的处理,在注册完以太网接口以后,需

要添加下面这段话 :

{

#define BCA_CFG_NUM_OF_MODES 4

#define BCA_CFG_SINGLE_ANT_WITH_COEX 0

#define BCA_CFG_DUAL_ANT_WITH_COEX 1

#define BCA_CFG_SINGLE_ANT_FOR_BT_ONLY 2

#define BCA_CFG_MRVL_DEFAULT 3

#define BCA_CONFIG BCA_CFG_SINGLE_ANT_WITH_COEX

static u32 BCACfgTbl[BCA_CFG_NUM_OF_MODES][3] = {

//0xA5F0, 0xA58C, 0xA5A0

{ 0xa027181c, 0x40214, 0xd24d}, //Mode 0: Single ANT with COEX enable

{ 0xa027181c, 0x40211, 0xd24d}, //Mode 1: Dual ANT with COEX enable

{ 0xa027181c, 0x40222, 0xd21c}, //Mode 2: single ANT for BT only

{ 0xa027801d, 0x18000, 0xd21c}, //Mode 3: Marvell default

};

wlan_offset_value RegBuffer;

RegBuffer.offset = (0xA5F0);

RegBuffer.value = BCACfgTbl[BCA_CONFIG][0];

wlan_prepare_cmd(priv,

HostCmd_CMD_MAC_REG_ACCESS,

HostCmd_ACT_GEN_SET,

HostCmd_OPTION_WAITFORRSP,

0,&RegBuffer);

RegBuffer.offset =(0xA58C);

RegBuffer.value = BCACfgTbl[BCA_CONFIG][1];

wlan_prepare_cmd(priv,

HostCmd_CMD_MAC_REG_ACCESS,

HostCmd_ACT_GEN_SET,

HostCmd_OPTION_WAITFORRSP,

0,&RegBuffer);

RegBuffer.offset = (0xA5A0);

RegBuffer.value = BCACfgTbl[BCA_CONFIG][2];

wlan_prepare_cmd(priv,

HostCmd_CMD_MAC_REG_ACCESS,

HostCmd_ACT_GEN_SET,

HostCmd_OPTION_WAITFORRSP,

0,&RegBuffer);

}

基本上这样就可以工作了;

4.其它问题

Sdio 口默认是用的 3.2V 这里需要修改相关的地方强制设成是1.8V ,否则 SDIO 接口将无法工作;

Linux平台上需要移植一些上层软件才能验证,比如

iwconfig , iwlist 等。

测试步骤:

ifconfig eth0 up

iwlist eth0 scanning

如果能扫描到 AP 那么证明基本已经 OK 了;

iwconfig eth0

iwlist eth0 freq

可以查看设备的相关信息,查看各项是否正常。

现在,就可以 ping 通 IP 地址了;

5.常见问题

1, WIFI 驱动注册 sdio 驱动的时候出错,也就是 probe 函数未被调用?

需要检查 sdio 设备本身是否被检测到,内核是通过发送特定的命令来检测是 sdio 是 SD 卡还是 mmc 的,

在 mmc_rescan 函数里面可以看到 sdio 设备的加载过程,有可能就是你的电压设置不对;

2,以太网接口一直出不来或者说 firmware 加载失败?

这里需要确保 firmware 是否正确被加载,很可能是它找不到对应的 firmware ,可以通过添加打印信息看看,它的路径到底是在什么地方,对于 wifi 来说 helper_sd.bin 需要放在 /lib/firmware/ 下面,而

sd8686.bin 需要放在 /lib/firmware/mrvl 下面;

3,一切正常,但是调用 iwlist eth0 scanning 的时候,扫描不到任何结果,出现NO scan results?

这时候需要做特殊的处理,比如共存代码的设置,是否正常等,通常可以判断有没有中断上来,以此区分到底是模块和 cpu 的连接问题还是模块本身的设置问题;

4,工作一段时间后不正常

这个有可能是蓝牙模块需要进行初始化,因为它们是共用天线,有时候不起蓝牙模块对应的 40M 时钟就不起来;

本人参照:https://www.360docs.net/doc/9c11226419.html,/u2/67984/showart_2113942.html 此博客而移植成功的。

在此感谢wylhistory!

linux -- 嵌入式linux下wifi无线网卡驱动

插入模块驱动

[root@WEIYAN wifi]$ insmod zd1211rw.ko

usb 1-1: reset full speed USB device using s3c2410-ohci and address 3

zd1211rw 1-1:1.0: phy2

usbcore: registered new interface driver zd1211rw

打开无线网卡

[root@WEIYAN wifi]$ ifconfig wlan0 up

zd1211rw 1-1:1.0: firmware version 4725

zd1211rw 1-1:1.0: zd1211b chip 0ace:1215 v4810 full 00-1d-0f UW2453_RF pa0 -7---

扫描频道

[root@WEIYAN wifi]$ ./wftools/iwlist wlan0 scanning

wlan0 Scan completed :

Cell 01 - Address: 00:0E:4E:81:02:4D

ESSID:"WEIYAN"

Mode:Master

Channel:6

Frequency:2.437 GHz (Channel 6)

Quality=11/100 Signal level=62/100

Encryption key:off

Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s

Extra:tsf=00000000004c3c37

设置essid和无线网卡ip地址,并关闭原来的dm9000

[root@WEIYAN wifi]$ ./wftools/iwconfig wlan0 essid WEIYAN

[root@WEIYAN wifi]$ ./wftools/iwconfig wlan0 192.168.1.100

[root@WEIYAN wifi]$ ifconfig eth0 down

测试与路由的连通性

[root@WEIYAN wifi]$ ping 192.168.1.254

PING 192.168.1.254 (192.168.1.254): 56 data bytes

64 bytes from 192.168.1.254: seq=0 ttl=255 time=10.997 ms

64 bytes from 192.168.1.254: seq=1 ttl=255 time=4.399 ms

64 bytes from 192.168.1.254: seq=2 ttl=255 time=3.915 ms

通过无线网卡的nfs挂载测试

[root@WEIYAN wifi]$ mount -t nfs -o nolock 192.168.1.108:/new_disk/tftp/ /mnt

[root@WEIYAN wifi]$ ls /mnt

1.mp3 g_file_storage.ko mplayer tslib.tar.gz

2.mpg gspca.ko mplayer_no_v4l u-boot.bin

3.wav led_drv.ko rootfs.jffs2 uImage

abxtest madplay rootfs.yaffs2

通过无线网卡播放mp3

[root@WEIYAN wifi]$ /opt/madplay /mnt/1.mp3

MPEG Audio Decoder 0.15.2 (beta) - Copyright (C) 2000-2004 Robert Leslie et al.

UDA1341:audio_set_dsp_speed:44100 prescaler:99

Title: 05.Forever Love

192k

Artist: 王力宏

Orchestra: https://www.360docs.net/doc/9c11226419.html,

CoUDA1341:audio_set_dsp_speed:22050 prescaler:231

nductor: https://www.360docs.net/doc/9c11226419.html,

Lyricist: https://www.360docs.net/doc/9c11226419.html,

Album: 心中的日月

Track: 05

Year: 2004

Publisher: https://www.360docs.net/doc/9c11226419.html,

Genre: Pop

Station: https://www.360docs.net/doc/9c11226419.html,

Comment: 清晰

1039 frames decoded (0:00:27.1), +0.8 dB peak amplitude, 40 clipped samples 通过无线网卡播放视频

[root@WEIYAN wifi]$ /opt/mplayer /mnt/2.mpg -ac mad

MPlayer 1.0rc2-3.4.1 (C) 2000-2007 MPlayer Team

CPU: ARM

Playing /mnt/2.mpg.

MPEG-PS file format detected.

VIDEO: MPEG1 384x288 (aspect 1) 29.970 fps 1638.4 kbps (204.8 kbyte/s)

================================================ ==========================

Opening video decoder: [mpegpes] MPEG 1/2 Video passthrough

A: 25.9 V: 26.1 A-V: -0.149 ct: 1.128 782/782 79% 47% 17.5% 428 0

Exiting... (End of file)

嵌入式蓝牙文件传送方案的实现

嵌入式蓝牙文件传送方案的实现 摘要:针对蓝牙技术在无线通信中的应用需求,基于ARM9微处理器S3C2440的嵌入式系统,设计并实现了蓝牙文件传送方案。系统已经通过板级验证及实际应用测试,完全实现系统设计功能。关键词:嵌入式;蓝牙;单点传送;多点传送 蓝牙是一种低成本、短距离无线通信技术,工作频段使用全球统一开放的2.4 GHz的ISM 频段[1],并将此频段分为79个跳频点,采用跳频技术,增强了蓝牙通信的可靠性。蓝牙技术现已被广泛应用于无线通信领域中,如个人无线通信设备、无线网络通信以及各种传宣系统[2]。利用蓝牙技术实现不同类型的文件传送是蓝牙通信的重要应用,而传统的基于蓝牙1.0规范的蓝牙通信只支持单点传输,随着蓝牙技术的发展,蓝牙 2.0规范中增加了EDR(Enhance Data Rate)技术,提高了蓝牙数据传输的吞吐量,为蓝牙多点通信提供了条件。本文依据蓝牙2.0规范,结合TDD技术,在实现了单点文件传送的基础上,成功完成了嵌入式系统对远程蓝牙设备的多点文件传送方案,并应用个人区域网络技术实现了嵌入式系统与PC机之间的网络文件传送,扩展了蓝牙通信在网络领域的应用。蓝牙文件传送和网络文件传送功能为广告产业及其他信息发布相关产业提供了广阔的发展空间,具有良好的市场前景。1 方案设计概述方案设计以ARM嵌入式系统作为硬件实现平台,并基于Linux操作系统,完成蓝牙文件传送方案。文件单点传送方案依据对象交换协议OBEX(Object Exchange),利用蓝牙官方协议栈BlueZ以及openobex上层应用函数库实现对象推送功能,从而完成对远程设备的文件单点传送。文件多点传送方案将在底层应用全双工时分复用(TDD)技术以及EDR (Enhance Data Rate)技术实现蓝牙数据通道共享和宽带、高吞吐量数据发送,在上层以文件单点传送方案为基础,辅以嵌入式技术建立并管理多个文件发送进程,完成文件向多个远程设备的同时发送,加入了重发机制以保证文件多点传送的可靠性。此外,基于个人区域网络技术的网络文件传送功能,使用户可在PC机端以FTP方式访问并更新嵌入式系统中的文件。 2 方案硬件架构本方案基于ARM硬件开发平台,以SAMSUNG S3C2440作为核心处理器,并与64 MB SDRAM和64 MB Flash共同组成核心嵌入式系统,运行ARM-Linux-2.6.12内核操作系统,其中内核配置蓝牙子系统,可为USB蓝牙适配器提供驱动。蓝牙适配器作为系统的核心通信部件接至USB Device接口,并通过适配器完成文件传送功能。同时本硬件系统易于功能扩展和系统移植,开发人员可通过USB Host接口将操作系统内核以及上层应用程序下载到SDRAM或烧写至Flash中,并通过RS232串口对应用程序进程调试。硬件整体架构。 3 方案软件框架软件框架主要由蓝牙核心协议、会话层协议以及上层应用程序构成,。其中蓝牙核心协议包括:RF协议、基带(Baseband)协议、LMP、L2CAP,主要完成蓝牙数据由逻辑链路层到实际物理通道的控制和处理。 会话层协议将建立对应功能的模型描述,并定义相关操作方法,为上层应用程序提供接口。其中RFCOMM协议提供对基于L2CAP协议的串口仿真,基于ETSI07.10,可支持在两个蓝牙设备之间同时保持高达60路的通信连接。其次,本方案利用服务发现协议(SDP)获取周边蓝牙设备服务信息,并自动筛选出带有对象推送服务的远程设备作为发送目标,此协议由BlueZ 所提供的接口函数实现。而OBEX作为实现文件传送的核心协议,将为被传送文件建立对象模型,并面向对象及传送过程定义对应操作方法,以实现文件传送。PAN协议用于建立蓝牙无线网络与以太网之间的访问点,以完成与TCP/IP之间的无缝连接。上层应用程序将基于应用层协议所提供的接口函数,主要依据对象交换协议(OBEX)实现对象推送(OBEX PUSH)功能,从而完成文件的单点传送,并在此基础上,结合Linux多进程技术实现文件多点传送。此外,利用BlueZ提供的PAN工具实现嵌入式系统与PC机之间的组网,完成网络文件传送功能。4 文

单片机wifi方案

WIFI设备配置 一、模块性能: 工作模式:基础网络和Ad-Hoc网络 网络类型:802.11b/g 加密方式:64/128位wep加密 发射功率:20dbm 功耗:150mA@3.3V 距离:可视50m Tcp/ip协议栈:Lwip 操作系统:无 速率:UDP的速度180-200KB/s 二、w ifi初始化默认配置及使用 模块默认配置: ?网络类型:adhoc ?创建网络名称:marvel ?加密方式:无加密 ?ip地址:192.168.10.10 ?子网掩码:255.255.255.0 ?默认网关:192.168.10.1 ?DNS服务器:202.96.134.133 ?UDP连接:udp对任意IP和端口号应答 ?TCP客户端192.168.10.10:8080 TCP服务器:192.168.10.100:8080 ?模块内置有web配置页,修改相应配置登陆http://192.168.10.10 Demo使用 模块上电以后会自动创建一个“计算机到计算机”的adhoc网络,名称为“marvel”。PC端只需打开无线网络管理软件,并搜索网络即可找到“marvel”。直接连接到“marvel”,并将无线网卡的IP修改为192.168.10.0/24网段,如下图所示:

图1 PC端IP地址配置 经由以上配置及连接,接下来可以测试模块工作性能,模块内建有192.168.10.10:8080端口至任意IP地址和端口的UDP回显连接,以及192.168.10.10:8080-192.168.10.100:8080的tcp连接,模块作TCP客户端使用。 1)测试网络是否连通,使用ping命令执行ping 192.168.10.10,得到结果如下: 图2 ping命令测试结果 2)Udp回显测试 图3 UDP测试结果

linux网卡驱动的配置

RedHat5.1下安装Realtek8168网卡驱动 1.先识别机器上的网卡型号: [root@localhost kernel]#kudzu --probe --class=network 2、使用命令查看kernel包是否都装全了,具体如下: [root@localhost kernel]# rpm -qa | grep kernel 如果装全了,会显示如下几个包: kernel-xen-devel-2.6.18-8.el5 kernel-devel-2.6.18-8.el5 kernel-2.6.18-8.el5 kernel-xen-2.6.18-8.el5 kernel-headers-2.6.18-8.el5 如果没有装全,就在redhat enterprise Linux 5.0第一个ISO的Server文件目录下可以找到对应的包,拷贝到某一具体目录下,进入目录后,用如下命令就可以进行安装: [root@localhost kernel]# rpm -ivh kernel-devel-2.6.18-8.el5.x86_64.rpm

注意:如果不装全这些包,在网卡编译时就会报错说找不到src目录文件。 用如下命令查看GCC是否安装,通常都装上的,还是检查一下比较好。 [root@localhost 2.6.18-8.el5]# whereis -b gcc gcc : /usr/bin/gcc /usr/lib/gcc /usr/libexec/gcc 3、将r8168-8.aaa.bb.tar.bz2解压出来变成r8168-8.aaa.bb文件夹形式,拷到U盘 在redhat下挂载U盘: 插入U盘 [root@localhost kernel]#mount /dev/sdb1 /mnt/usb 4.将r8168-8.aaa.bb文件夹拷都本地,如/home目录下 首先将u盘中的驱动程序包拷贝到/home目录下 [root@localhost media]# cp r8168-8\[1\].011.00.tar.bz2 /home/ [root@localhost media]# cd /home/ [root@localhost home]# ls r8168-8[1].011.00.tar.bz2 5.其次解压驱动程序包 [root@localhost home]# tar -vjxf r8168-8\[1\].011.00.tar.bz2

蓝牙协议栈BlueZ的移植与开发

蓝牙协议栈BlueZ的移植与开发* 欧阳鑫 于红岩 吕杨 (昆明理工大学信息工程与自动化学院,昆明,650051) 摘要:蓝牙技术是当前国内外科技界和产业界研究开发的热点技术,其应用范围包括手机、PDA、信息家电设备等领域,蓝牙技术在嵌入式系统上必将得到广泛的应用。而要在嵌入式系统上提供蓝牙开发支持,蓝牙协议栈的移植是关键。本文分析了蓝牙协议栈BlueZ体系结构,详细介绍了在S3C2410开发板上移植BlueZ的步骤,建立了嵌入式蓝牙应用开发平台,并提出了用BlueZ 开发蓝牙应用程序的思路。 关键字:蓝牙技术;蓝牙协议栈BlueZ;移植;S3C2410;Linux 中图分类号:TP368.1 文献标识码:A BlueZ Porting and Programming Ou Yangxin,Yu Hongyan,Lv Yang (College of Information Engineering and Automation,Kunming University of Science and Technology,Kunming 650051,China) Abstract: Bluetooth technology is the focused on by the domestic and overseas research institutes. This technology is widely used in mobile phone, PDA, and Information Appliance devices. In the future,bluetooth technology will be widely used in embedded system. Built some bluetooth applications on embedded system,the key technology is porting bluetooth protocol suites to platform. In this paper,we study the BlueZ architecture,describe the steps of Porting BlueZ to S3C2410 Platform in detail,and build the embedded bluetooth application programming platform. In the end, we also give the idea of bluetooth programming. Keywords: bluetooth technology,bluetooth protocol suites BlueZ,porting, S3C2410, Linux 1引言 蓝牙技术是一项低价格、低功耗的射频技术,它能使蓝牙设备实现近距离无线通信。由于蓝牙技术有广泛的应用前景,它已成为当前国内外科技界和产业界研究开发的热点技术。Linux 操作系统的开放的蓝牙协议栈主要包括IBM公司的BlueDrekar,Nokia公司的Affix, Axis公司的OpenBT和官方协议栈BlueZ[1]。BlueZ是公布在Internet上的免费蓝牙协议栈,由于它结构简单,应用方便,具有灵活、高效和模块化的特点且具有较强的兼容性,因此BlueZ已经成为Linux操作系统下的官方的蓝牙协议栈。 S3C2410x是三星公司推出的一款高性价比32位的RISC处理器,内含一个由ARM公司设计的ARM920T核,具有低功耗高性能的特点,适用于对价格及功耗敏感的场合。本文使用的S3C2410开发板主要包含以下部件:S3C2410x芯片,32MB Nor Flash,64MB SDRAM,IIC存储器接口,LCD控制器,UART接口,一个USB(Host)接口。 利用S3C2410开发板上的USB接口,可以外扩蓝牙适配器,但S3C2410开发板上没有实现蓝牙设备驱动。本文对蓝牙协议栈BlueZ进行分析,移植BlueZ到开发板上实现蓝牙设备驱动,提出了使用BlueZ开发蓝牙应用程序的基本思路。 *基金项目:云南省自然科学基金项目(2004F0024M)。

我来说linux移植过程

我对linux移植过程的整体理解 首先,要开始移植一个操作系统,我们要明白为什么要移植。因为我们要在另外一个平台上用到操作系统,为什么要用操作系统,不用行不行?这个问题的答案不是行或不行来回答。单片机,ARM7都没有操作系统,我们直接对寄存器进行操作进而实现我们需要的功能也是可以。但是,一些大型的项目设计牵涉很多到工程的创建,单纯对裸机进行操作会显得杂乱庞大这时候需要一个操作系统。 操作系统的功能能。我们用到操作系统,一方面可以控制我们的硬件和维护我们的硬件,另一方面可以为我们得应用程序提供服务。呵呵,这样说还是很抽象,具体到项目中就可以感受到操作系统的好处。 Linux操作系统的移植说白了总共三大部分:一,内核的重新编译。二,bootloader的重新编译。三,文件系统的制作。在这里要解释这些名词也很不好说的明白,首先,一个完整的操作系统是包括这三大部分的,内核、Bootloader、文件系统。我们知道Linux有很多版本,不同的版本只是文件系统不一样而内核的本质都是一样的。 那么,我们开始进行移植。首先是内核。1.我们需要下载一个内核源码,这个在网上很好下载,下载后,保存下。2.把这个压缩包复制到ubuntu(我用的版本)里,一般复制到/home/dong/SoftEmbed(我的目录,呵呵),然后呢,我们需要对这个内核进行修改重新编译,为什么要这样做,因为我们要让内核为我们的ARM服务,所以需要修改一些东西的。至于具体如何修改,我已经写在另外一个文档里了。3.修改的内容主要是 Makefile(设置体系架构为arm,设置交叉编译器)、时钟频率(我们板子的频率)、内核配置(进入内核配置主要是设置一些选项以适合我们的开发板)。具体设置步骤我会另加说明。4.设置好后我们需要重新编译内核,用的是make zImage命令。编译后就生成了我们自己编译好的内核,呵呵。 接下来,进行文件系统的移植。我们需要一个Yaffs2文件系统压缩包。1.复制这个压缩包到/home/dong/SoftEmede(我自己在ubuntu里建的目录,呵呵),2.解压,会生成一个文件夹。3.给内核打补丁,通过执行 ./patsh-ker.sh c /内核目录。呵呵4.进入 make menuconfig中配置选项,要选择对yaffs2的支持,具体怎么设置我写在另一个文档。 接下来,我们进行根文件制作,需要一个制作工具 mkyaffs2image.taz.还是复制到我自己的目录下,解压,安装。接着,我们需要对Busybox的移植、配置,具体移植、配置步骤我另写,呵呵。最后是构建我们自己的文件系统,到此我们已经完成了内核移植和文件系统的制作。准备移植,呵呵。今天先写到这里,累了。

linux蓝牙驱动代码阅读笔记

导读: linux蓝牙驱动代码阅读笔记 转载时请注明出处和作者联系方式 作者联系方式:李先静 昨天看了一下介绍蓝牙协议文档,今天索性对照看了看kernel里的代码(bluez),这里记点笔记,还是继承了老毛病,只关注整体流程而忽略细节,先了解个大概,等真正需要时再仔细分析。 net/hci_core.c HCI在主机端的驱动主要是为上层提供一个统一的接口,让上层协议不依赖于具体硬件的实现。HCI在硬件中的固件与HCI在主机端的驱动通信方式有多种,比如像UART、USB 和PC Card等等。hci_core.c相当于一个框架,用于把各种具体通信方式胶合起来,并提供一些公共函数的实现。 hci_cmd_task是负责发送CMD的任务,它从hdev->cmd_q队列中取CMD,然后调用hci_send_frame把CMD发送出去,hci_send_frame又会调用实际的HCI驱动的send函数发送数据。 hci_rx_task是负责接收数据的任务,它从hdev->rx_q队列中取数据,然后根据数据的类型调用上层函数处理。数据包有三种类型: HCI_EVENT_PKT:用于处理一些通信事件,比如连接建立,连接断开,认证和加密等事件,这些事件控制协议状态的改变。 HCI_ACLDATA_PKT:异步非连接的数据包,通过hci_acldata_packet提交给上层的L2CAP协议处理(hci_proto[HCI_PROTO_L2CAP])。 HCI_SCODATA_PKT:同步面向连接的数据包,通过hci_scodata_packet提供给上层的SCO协议处理(hci_proto[HCI_PROTO_SCO])。 hci_tx_task是负责发送数据的任务,发送所有connection中的ACL和SCO数据,以及hdev->raw_q中的数据包。 HCI为上层提供的接口主要有: hci_send_sco:发送SCO数据包,把要发送的数据包放入connection的发送队列中,然后调度发送任务去发送。 hci_send_acl:发送ACL数据包,把要发送的数据包放入connection的发送队列中,然后调度发送任务去发送。 hci_send_cmd:发送命令数据,把要发送的数据包放入hdev->cmd_q队列中,然后调度命令发送任务去发送。 hci_register_proto/hci_unregister_proto:注册/注销上层协议,HCI会把接收到的数据转发给这些上层协议。 hci_register_dev/hci_unregister_dev: 注册/注销设备,HCI会把要发送的数据通过这些设备发送出去。 其它一些公共函数。 net/hci_conn.c 提供了一些连接管理,论证和加密的函数。 net/hci_event.c 事件处理函数,负责状态机的维护,这些事件通常会使连接从一个状态转换另一个状态。 hci_si_event:用于发送事件。 hci_event_packet:用于处理底层上报的事件,从hci_rx_task处调用过来。 net/hci_sock.c

WIFI安装说明书

wifi使用说明 wifi上网认证有三种:web+dhcp页面认证和天翼宽带客户端软件方式,pppoe拨号登录上网方式。wifi认证登录方式具体操作如以下说明: a: 使用pc连接中国电信chinanet热点 1. 使用web+dhcp页面认证方式 如果没有密码可以点击获取密码,会有短信发送到您手机上,告知一个5小时时限的临时密码。如需要固定密码可以到营业厅申请。 账号密码认证成功后如下图 注意:不要关掉该网页,在wifi上网过程中,请将该网页要保持打开并最小化。 2. 使用天翼宽带客户端软件上网方式 先在设置项对wifi账号进行设置如图 然后进行wifi连接,如图 wifi连接成功后就可以正常上网了。 3. pppoe拨号认证登录上网方式,和家庭宽带拨号方式一样,把手机账号和密码输入就可 以上网,需要注意的是:①先要连接chinanet信号,才能进行下图拨号认证。②密码可以到营业厅进行绑定固定密码,这样就不需要每次获取新密码。web+dhcp页面认证方式由于port服务器问题,经常出现页面弹不出来情况,pppoe拨号方式可以正常认证上网。按照下面步骤设置pppoe拨号:首先如下图打开网络连接,创建一个新的拨号连接。 点击下一步: 选手动设置我的连接篇二:wifi路由器安装配置说明 v1 商圈网wifi路由器安装配置说明 v1 1-1、安装路由器天线,确认安装牢固。 1-2、连接路由器电源插口,确认电源指示灯亮。 2、商圈网路由器的wan 口连接商家路由器的lan 口。(商圈网路由器的wan 口是靠近电源的那个接口) 3、设置设备连接无线热点wifiportal-xxxxxx 4-1、进入首页,往下翻确认“网络”-“ipv4 wan 状态”是否已经获取到ip 4-2、修改ssid,点击“网络”-“无线”,选择“修改按”钮进入。 4-3、热点id 统一修改为“ixinjiekou@商户名”注意区分大小写。 4-4、然后选择“保存&应用”配置的按钮 4-5、设备重新连接到修改后的热点id “ixinjiekou@test” 4-6、然后打开浏览器,进入选择“系统”菜单-点击“重启”,选择“执行重启”。 5、待设备重启完毕,重新连接热点确认portal 页面可以弹出,并亲自认证确认可以上网。 6、告知用户使用方式,并确定其会使用。篇三:随身wifi驱动安装@简要操作说明 .cn zk-n2721(智开随身wifi) 驱动安装步骤 v1.0 2014-01-16 .cn 一、简介说明 驱动程序(device driver)全称为“设备驱动程序”,是一种可以使计算机中央处理器——cpu控制和使用设备的特殊程序,相当于硬件的接口,操作系统通过这个接口,控制硬

linux下安装编译网卡驱动的方法

linux下安装编译网卡驱动的方法 你还在为不知道linux下安装编译网卡驱动的方法而不知所措么?下面来是小编为大家收集的linux下安装编译网卡驱动的方法,欢迎大家阅读: linux下安装编译网卡驱动的方法 安装linux操作系统后发现没有网卡驱动,表现为 system → Administration → Network下Hardware列表为空。 以下为安装编译网卡驱动的过程,本人是菜鸟,以下是我从网上找的资料进行整理,并实际操作的过程,仅供借鉴。 一.检测linux系统内核版本和网卡类型,相关命令如下: uname -r 查看linux内核版本(uname -a 可显示所有信息)

lsmod 设备加载情况 ls /usr/share/hwdata 查看硬件设备 lspci 查看pci网卡设备ethernet controller 厂商和型号,modprobe **** ****为网卡型号,例如modprobe RTL8101E ,如果出错,说明模块不存在,该型号不识别 我在这一步时查找不到网卡型号,无奈只能由同时采购的其他相同型号预装win7的电脑下查看网卡型号,是个笨办法,嘿嘿…… 找到网卡型号后就到驱动之家下载了相应网卡的linux驱动,这些需要根据自己的实际情况下载,不多说了,重点是后面。 二.下载网卡驱动 Intel_e1000e-1.9.5.zip 为我下载的所需的网卡驱动,这个在linux下需自己编译. 三.安装网卡驱动

1.检测编译需要用到内核的源代码包和编译程序gcc。所以如果没有的话,要先装。 [root@localhost ~]# rpm -qa|grep kernel kernel-xen-2.6.18-8.el5 kernel-xen-devel-2.6.18-8.el5 kernel-headers-2.6.18-8.el5 [root@localhost ~]# rpm -qa|grep gcc gcc-c++-4.1.1-52.el5 libgcc-4.1.1-52.el5 gcc-4.1.1-52.el5 gcc-gfortran-4.1.1-52.el5 如果缺少kernel-xen-devel-2.6.18-8.el5,可以去安装光

bluez how to

Linux BlueZ Howto Bluetooth protocol stack for Linux Jan Beutel j.beutel@https://www.360docs.net/doc/9c11226419.html,,Maksim Krasnyanskiy maxk@https://www.360docs.net/doc/9c11226419.html, 14th November2001 1Introduction BlueZ is the of?cial Linux Bluetooth stack.It provides support for core Bluetooth layers and protocols. Bluez has many interesting features: Flexible,ef?cient and modular architecture Support for multiple Bluetooth devices Multithreaded data processing Hardware abstraction Standard socket interface to all layers Currently BlueZ consists of(see also?gure1): HCI Core HCI UART,USB and Virtual HCI device drivers L2CAP protocol module Con?guration and testing utilities 2Setting up BlueZ 2.1Obtaining BlueZ Y ou can download the BlueZ source from https://www.360docs.net/doc/9c11226419.html,.There is also an up to date CVS tree available there.

WIFI移植全过程

基于S3C S3C242424440的SDIO 卡WIFI 移植移植 1112/1112/yangjun yangjun yangjun 环境:Ubuntu10.10 LINUX2.26.38 交叉编译工具链:arm-linux-gcc 一、SDIO 设备驱动移植 1、 修改SD 卡驱动使内核支持SD 卡 修改文件:arch/arm/mach-s3c2440/mach-smdk2440.c 添加所需头文件: #include #include #include //增加平台设备对sd 卡的支持 static struct platform_device *smdk2440_devices[] __initdata = { &s3c_device_ohci, &s3c_device_lcd, &s3c_device_wdt, &s3c_device_i2c0, &s3c_device_iis, &s3c_device_sdi, }; //添加平台数据dev->platform_data static struct s3c24xx_mci_pdata smdk2440_mmc_cfg __initdata={ .gpio_detect = S3C2410_GPG(8),//此处保留为使用中断号8,看芯片手册 .set_power = NULL, .ocr_avail = MMC_VDD_32_33, }; 2、 在smdk2440_machine_init 中添加 s3c24xx_mci_set_platdata(&smdk2440_mmc_cfg); 二、配置内核以支持Marvel 无线WIFI 选择38内核中的wlan marwell sdio 模块

Linux蓝牙协议栈OpenBT及其应用程序开发

2003.10 电子设计应用  www.eaw.com.cn52 引言 Linux蓝牙协议栈主要有三个:OpenBT、BlueDrekar、BlueZ,其中OpenBT被认为在性价比上超过BlueDrekar和BlueZ,可运行于X86、ARM、MIPS、PowerPC等硬件平台,与任何2.x版本的Linux内核兼容,支持JAVA。本文介绍了OpenBT的 体系结构及其对互操作性的影响,并以客户机/服务器(C/S)实例说明如何在OpenBT上开发蓝牙应用程序。 OpenBT的体系结构 使用不同蓝牙协议栈的设备在通信时往往会遇到互操作性问题。开发者需要了解各种协议栈的体系 结构并考虑其差异。通过分析源 码,本文给出了如图1所示的OpenBT的体系结构。OpenBT包括HCI、L2CAP、SDP、SP、Networking、OpenBT Utility、后台 程序、内核接口8个模块,分别解释如下: * HCI模块由Driver、Transport子模块构成。Driver负责HCI命令、HCI事件和HCI数据接口;Transport提供USB、RS-232、UART的驱动。 * L2CAP模块由State Handle、Security子模块构成。State Handle负责运行L2CAP的状态机和数据的分段组装;Security负责L2CAP级别安全管理。 * SP模块由RFCOMM、串口仿真子模块组成。RFCOMM负责完成蓝牙RFCOMM协议中所描述的内容,核心是一个RFCOMM状态机;串口仿真负责提供接口。 * SDP模块负责完成蓝牙SDP协议中所描述的内容,在功能上分为XML文件管理、SDP查询处理和SDP响应处理三部分。 * Networking模块由PPP、Modem Emulation、TCS子模块构 Linux蓝牙协议栈OpenBT 及其应用程序开发 ■ 西安交通大学电信学院 马毅华 冯恩信 摘 要:本文分析了OpenBT软件体系结构,根据客户机/服务器模型的实例,介绍了OpenBT应用程 序的开发,并提出了一种实用的开发模式。 关键词:蓝牙技术;Linux;OpenBT

android wifi详细

Contents 1. Wifi扫盲 (2) 2. Android Wifi框架的结构图 (3) 3. wpa_supplient (3) 4. Netd (5) 5. FrameWork层架构 (5) 6. 情景分析 (5) 6.1. 情景1 (5) 6.2. 情景2 (8) 6.3. 情景3 (8) 7.Ad hoc的支持 (10) 8.wifi direct (12) 9.Soft ap支持 (12) 10.Wifi Tethering支持 (15) https://www.360docs.net/doc/9c11226419.html,b Tethering支持 (15) 12.Reverse usb Tethering (16) 13.Ethernet Tethering (17) 14.需要改动的地方 (17) 15.测试 (17) 16.调试中遇到的问题 (18)

1. Wifi扫盲 Access point:也叫hotspot(热点),家里的无线路由就是ap。 SoftAp:软ap,用无线网卡模拟ap的功能。 Wifi网络有两种模式: ?Infrastructure mode, in which wireless clients are connected to an access point. This is generally the default mode for 802.11b cards. ?Ad hoc mode, in which clients are connected to one another without any access point. 请参考https://www.360docs.net/doc/9c11226419.html,/contents/wifi/wifimodes.php3 我们既可以通过Ad hoc也可以通过SoftAp方式来实现共享网络(例如手机可以通过笔记本访问internet),但是原理不同。 这里只是简单的概括,详细的解释请google或百度。

在linux系统下如何安装网卡驱动

2011年研发二部工作 周报月报 作者:赵玉武 时间:2012-6-13

目录 一、整理漏扫系统的结构 (1) 1、整理NetScan目录中的程序。 (1) 2、整理proftpd目录中内容(插件的检测信息)。 (4) 3、整理proxyd目录中的安管(安管平台)。 (8) 二、熟悉Nessus的工作原理 (8) 1、Nessus扫描引擎的工作原理... 错误!未定义书签。 三、整理运行的整个流程.............. 错误!未定义书签。 1、通过客户端下发策略,上传到服务器上。错误!未定 义书签。 2、服务端:接收客户端下发的策略。错误!未定义书签。 3、服务端进行身份的认证....... 错误!未定义书签。

一、整理漏扫系统的结构 网卡是Linux服务器中最重要网络设备。据统计,Linux网络故障有35%在物理层、25%在数据链路层、10%在网络层、10%在传输层、10%在对话、7%在表示层、3%在应用层。由此可以看出,网络故障通常发生在网络七层模型的下三层,即物理层、链路层和网络层。对应于实际网络也就是使用的网络线缆、网卡、交换机、路由器等设备故障。Linux的网络实现是模仿FreeBSD的,它支持FreeBSD 的带有扩展的Sockets(套接字)和TCP/IP协议。它支持两个主机间的网络连接和Sockets通讯模型,实现了两种类型的Sockets:BSD Sockets和INET Sockets。它为不同的通信模型和服务质量提供了两种传输协议,即不可靠的、基于消息的UDP传输协议和可靠的、基于流的传输协议TCP,并且都是在IP网络协议上实现的。INET sockets 是在以上两个协议及IP协议之上实现的。 由于交换机、路由器通常独立于Linux或者其他操作系统。网卡设置故障是造成Linux 服务器故障最主要原因。可能因为硬件的质量或性能、磨损老化、人为误操作、不正确的网络设置、管理问题、Linux软件的BUG、系统受到黑客攻击和Linux病毒等原因造成。 Linux 服务器网卡故障排除的思路是:应当遵循先硬件后软件的方法。因为硬件如果出现物理损坏那么如何设定网卡都不能解决故障。解决问题的方法可以从自身Linux计算机的网卡查起,如果确定硬件没有问题了,再来考虑软件的设定。 1、网卡的选择 一般来说,2.4版本以后的 Linux可以支持的网卡芯片组数量已经很完备了,包括著名厂商如:Intel 以及使用广泛的 RealTek, Via 等网卡芯片都已经被支持,所以使用者可以很轻易的设定好他们的网

bluez 交叉编译--测试通过(参考了网上的教程,并做了修改)

bluez 交叉编译--测试通过(参考了网上的教程,并做了修改) arm-linux-gcc 4.3.3 ========================================== 我用到的几个库: bluez-lib-3.36.tar.gz expat-2.0.1.tar.gz dbus-1.2.16.tar.gz glib-2.22.4.tar.bz2 libusb-0.1.12.tar.gz bluez-utils-3.36.tar.gz ==================================================== /opt/libs 和/opt/utils是我自己编译时用的路径,你可以随便的选取。 1,编译安装bluez-lib-3.36.tar.gz 这个库不需要什么依赖,直接解压,配置,编译然后安装即可。 #tar zxvf bluez-lib-3.36.tar.gz #./configure --prefix=/opt/libs --host=arm-linux --target=arm-linux CC=arm-linux-gcc #make #make install 2,编译安装expat-2.0.1.tar.gz 这个库是后面的dbus依赖的,你也可以用libxml2来代替expat,官方网站上说dbus必须依赖于他们中的一个,我这里用的是expat-2.0.1.tar.gz。 #tar zxvf expat-2.0.1.tar.gz #./configure --prefix=/opt/libs --host=arm-linux --target=arm-linux CC=arm-linux-gcc #make #make install 3,编译安装dbus-1.2.16.tar.gz #tar zxvf dbus-1.2.16.tar.gz #echo ac_cv_have_abstract_sockets=yes>arm-linux.cache #./configure --prefix=/opt/libs --host=arm-linux --target=arm-linux CC="arm-linux-gcc -I/opt/libs/include -L/opt/libs/lib" --cache-file=arm-linux.cache --with-x=no #make #make install ======================================================= 4,编译安装glib-2.22.4.tar.bz2 #tar -zxjf glib-2.22.4.tar.bz2 #echo ac_cv_type_long_long=yes>arm-linux.cache #echo glib_cv_stack_grows=no>>arm-linux.cache #echo glib_cv_uscore=no>>arm-linux.cache #echo c_cv_func_posix_getpwuid_r=yes>>arm-linux.cache #echo ac_cv_func_posix_getgrgid_r=yes>>

WiFi的基本操作

1载入文件 1.1载入驱动文件 编译后驱动会生成在wifi_project/out/kmod目录下,拷贝所需的驱动到单板中。各个WiFi的驱动文件如下: mt7601u cfg80211.ko、mtprealloc.ko、mt7601Usta.ko rtl8188ftv cfg80211.ko、8188fu.ko rtl8188eus cfg80211.ko、8188eu.ko rtl8189ftv cfg80211.ko、8189fs.ko ap6181/ap6212/ap6212a/ap6214a/ap6255 cfg80211.ko、bcmdhd.ko cfg80211.ko文件请在kernel的net/wireless目录下拷贝。 驱动在单板上的目录不重要,比如可以放在/kmod目录。 1.2载入firmware文件 如果要使用Broadcom的ap6181芯片,请执行如下操作:

在单板上建立目录/etc/firmware,将wifi_project/firmware/sdio_ap6181文件夹下的 固件文件fw_bcm40181a2.bin、fw_bcm40181a2_apsta.bin和nvram.txt下载到单板 此目录下。ap6212/ap6212a/ap6214a/ap6255请拷贝wifi_project/firmware 对应目录 的firmware和nvram文件。 如果要使用MediaTek的mt7601u,请执行如下操作: 在单板上建立目录/etc/Wireless/RT2870STA,将 wifi_project/firmware/usb_mt7601u 文件夹下的固件MT7601USTA.dat下载到单板此目录下。 RealTek的芯片rtl8188ftv、rtl8188eus和rtl8189ftv不需要额外加载固件。 1.3载入工具 将wifi_project/out/lib目录下的libnl-genl.so.2.0.0、libnl.so.2.0.0拷贝到单板的/lib 目录。进入单板/lib目录,创建这两个文件的软链接: ln–s libnl-genl.so.2.0.0libnl-genl.so.2 ln–s libnl.so.2.0.0libnl.so.2 拷贝wifi_project/out/tools目录下的iwconfig、iwlist、iwpriv、iperf拷贝到单板的 /sbin目录下。这几个是调试工具,实际使用时可以不用拷贝这几个文件。

Linux下网卡驱动程序

Linux下8019网卡驱动程序 福建鑫诺通信有限公司陈光平(chenggp_fj@https://www.360docs.net/doc/9c11226419.html,) 本文以S3C44B0的CPU为例,详细解析了linux下RTL8019网卡驱动程序工作原理,其间知识大多来源互联网络,特别是浙大潘纲的论文,在此不一一列出,此文目的只是让嵌入式linux爱好者得到更多网卡驱动的资料,并获得交流机会,不足之处请指正 (一)、硬件相关部份 1、CPU与网卡的连接方式 (s3c44B0 CPU) (RTL 8019网卡) CPU与网卡接线图 上图为S3c44b0CPU和网卡的接线图,此接法并非固定,如接法不同,则牵涉到很多相应的改动,下面会详细分析不同之处 从硬件部门得到:网卡在CPU的存储空间上接BANK4,即0x08000000(看44B0手册)外部中断号为:EXTINT3 (irqs.h文件获得值为22) 上面两个值可以查CPU手册,或询问硬件设计人员 由上图可以知道以下数据: (1)、网卡与CPU地址线连接错开8位(A0接A8) (2)、总共连线,其实4根就足够用了,因为每根线可以译码4个地址空间,总共是16个地址空间,每个地址空间对应一个寄存器地址,而8019总共就是16个寄存器(3)、一般是跳线模式,不使用9346芯片 1-1 基地址算法 首先8019的基地址是300H(见RTL8019芯片资料:选择IO总线地址),但是有些硬件已在芯片中做过了偏移,比如我们的网卡已做了处理,基址已偏移到0x08000000, 那么因为网卡A0接CPU的A8,表示基地址左移8位,下一个寄存器reg0的地址就是:0x08000100(0000,0000,0001 0001,0000,0000) 还不理解的话我们看另一种接法:

linux 蓝牙编程 bluez

linux蓝牙编程bluez 收藏 从别的地方转了一篇蓝牙编程的,感觉比较详细,接下来自己慢慢验证一下。 实战Linux Bluetooth编程 实战Linux Bluetooth编程(一)协议栈概述 前言:随着嵌入式系统的飞速发展,很多嵌入式平台上需要Bluetooth设备和应用。但在Linux 下如何对 Bluetooth编程,一直没有一份很好的中文文档。Sam结合自己的工作,一步一步将一些有用的东西记录下来 ,希望对其它Linux下Bluetooth编程的朋友有点帮助。 一:Bluetooth基本概念: Bluetooth是爱立信、诺基亚、东芝、IBM和Intel 5家公司在1998年联合推出的一项无线网络技术。其宗旨 是提供一种短距离、低成本的无线传输应用技术。在行业协会筹备阶段,需要一个极具有表现力的名字来命 名这项高新技术。行业组织人员,在经过一夜关于欧洲历史和未来无限技术发展的讨论后,有些人认为用 Blatand国王的名字命名再合适不过了。Blatand国王将现在的挪威,瑞典和丹麦统一起来;就如同这项即将 面世的技术,将标准不一的短距离无线传输技术统一起来。 Intel负责半导体芯片和传输软件的开发,爱立信负责无线射频和移动电话软件的开发,IBM 和东芝负责笔记 本电脑接口规格的开发。 蓝牙是无线数据和语音传输的开放式标准,它将各种通信设备、计算机及其终端设备、各种数字数据系统、 甚至家用电器采用无线方式联接起来。它的传输距离为10cm~10m,如果增加功率或是加上某些外设便可达 到100m的传输距离。它采用2.4GHz ISM频段和调频、跳频技术,使用权向纠错编码、ARQ、TDD和基带协议。

相关文档
最新文档