arm linux 支持 wifi

背景:

  公司用的产品主板支持wifi接口,为了加强产品的功能,做wifi的底层支持。

概览

主要的流程如下:

内核配置 + 有关驱动的移植 + 软件的移植 + 软件的配置

内核配置

Networking support
        <*>   RF switch subsystem support  --->
                [*]   Power off on suspend (NEW)
                <*>   Generic rfkill regulator driver
                (防止使用wpa_supplicant会出现rfkill: Cannot open RFKILL  control device错误。)

        -*-   Wireless  --->
        <*>   cfg80211 - wireless configuration API
        [*]     nl80211 testmode command
        [*]     enable powersave by default
        [*]     cfg80211 wireless extensions compatibility
        <*>   Generic IEEE 802.11 Networking Stack  (mac80211)

作为AP热点的额外配置

Device Drivers  --->
   [*] Network device support  --->
        [*] Wireless LAN  --->
                        <*>    IEEE 802.11 for Host AP  (Prism2/2.5/3 and WEP/TKIP/CCMP)
                        [*]     Support downloading firmware  images with Host AP driver
                        [*]       Support for non-volatile  firmware download

软件移植

根据有关资料,移植wifi有关驱动各工具如下:

软件包 说明
WirelessTools 只支持WEP认证方式
wpa_supplicant 支持WPA认证方式
hostapd hostapd能够使得无线网卡切换为master模式,模拟AP(通常可以认为是路由器)功能软AP(Soft AP)
dhcpcd dhcpcd是DHCP client的实现,可以作为后台守护进程运行。

一个脚本编译 wpa_supplicant:

##
#    Copyright By Schips, All Rights Reserved
#    https://gitee.com/schips/
#    File Name:  make.sh
#    Created  :  Tue 10 Dec 2019 05:42:56 PM CST
#!/bin/sh
BUILD_HOST=arm-linux
ARM_GCC=${BUILD_HOST}-gcc
BASE=`pwd`
OUTPUT_PATH=${BASE}/install
OPENSSL=openssl-1.0.2t
WPA_SUPPLICANT=wpa_supplicant-0.7.3

make_dirs() {
    cd ${BASE}
    mkdir  compressed  install  source -p
}

download_package () {
    cd ${BASE}/compressed
    #下载包
    wget     https://www.openssl.org/source/${OPENSSL}.tar.gz
    wget -c http://w1.fi/releases/${WPA_SUPPLICANT}.tar.gz
}

tar_package () {
    cd ${BASE}/compressed
    ls * > /tmp/list.txt
    for TAR in `cat /tmp/list.txt`
    do
        tar -xf $TAR -C  ../source
    done
    rm -rf /tmp/list.txt
}

pre_make_ssl () {
    cd ${BASE}/source/${OPENSSL}
    startLine=`sed -n '/install_html_docs\:/=' Makefile |  awk -F\b '{ print $1 }'`
    echo $startLine
    # 为了避免 多行结果
    for startline in $startLine
    do
        lineAfter=99
        endLine=`expr $startline + 999`
        sed -i $startline','$endLine'd' Makefile
        echo "install_html_docs:" >> Makefile
        echo "\[email protected] skip by Schips" >> Makefile
        echo "install_docs:" >> Makefile
        echo "\[email protected] skip by Schips" >> Makefile
        echo "# DO NOT DELETE THIS LINE -- make depend  depends on it." >> Makefile
        break
    done
}

make_openssl () {
    cd ${BASE}/source/${OPENSSL}
    echo "SSL ABOUT"
        ./Configure --prefix=${OUTPUT_PATH}/${OPENSSL}  os/compiler:${ARM_GCC}
    pre_make_ssl
    make && make install
}
make_wpa () {
    cd ${BASE}/source/wpa*/wpa*
    cp defconfig .config
    echo "CC=${ARM_GCC} -L${OUTPUT_PATH}/${OPENSSL}/lib"  >> .config
    echo "CFLAGS += -I${OUTPUT_PATH}/${OPENSSL}/include"  >> .config
    echo "LIBS += -L${OUTPUT_PATH}/${OPENSSL}/lib" >>  .config
    make
}
make_dirs
download_package
tar_package
make_openssl
make_wpa

原文地址:https://www.cnblogs.com/schips/p/12168153.html

时间: 2024-08-03 04:08:45

arm linux 支持 wifi的相关文章

arm linux 启动之一:汇编启动到start_kernel

描述arm linux启动的概要过程,以S5PV210(Cortex A8)为例,本文描述第一个阶段. 一.arm linux的引导 uboot在引导arm linux(uImage镜像)到SDRAM之后,通过bootm命令对uImage镜像的64个字节头进行解释,获取linux的entry入口地址,并赋值给theKernel函数指针(一般该值是0x30008000),并将uboot的环境变量参数(如平台的内存块区域信息.linux启动命令信息bootargs等)按linux要求的tags形式放

嵌入式Linux利用Wifi搭建无线服务器(物联网实践之无线网关)

在 http://www.cnblogs.com/heat-man/p/4564539.html中,在嵌入式Linux开发板上我们从最底层实现了一个智能家居的远程控制系统,然而采取的是用网线连接到交换机上的,感觉老土.巧的是,来北京找工作,找到一家做Wifi模组的公司,这几天老大给我的任务是在min210上开发板上跑我们的Wifi模块,以便熟悉环境,好不容易昨天刚搞好,就把自己写的服务器架上试了试,md,无线的感觉就是不一样呀! 下面整理一下思路: 首先你需要一些硬件设施: ARM开发板,计算机

arm linux 启动之二:start_kernel到创建1号进程

本文介绍arm linux启动的第二部分,C语言编写,主要讲述start_kernel到1号进程的创建.主要讲述大概过程,以后再对子函数进行讲解. 一.start_kernel start_kernel位于init/main.c,主要完成linux一些子系统的初始化. 1)smp_setup_processor_id() 单CPU位为空. 2)lock_kernel() 锁CPU,linux是支持抢占的,多CPU时调用这个函数防止其他CPU抢占.3)tick_init() 时间相关初始化4)bo

学习ARM+Linux的很好的资料(转)

前段时间做了一个关于ARM9 2440资料的汇总帖,很高兴看到***和CSDN等论坛朋友们的支持和鼓励.当年学单片机的时候datasheet和学习资料基本都是在论坛上找到的,也遇到很多好心的高手朋友,耐心的回答我提出的问题.感激.图报,很简单的想法.希望这次整理的资料帖能对更多的嵌入式爱好者朋友带来帮助! PS:    在此特别感谢 古道热肠 版主把我的帖子加精,给小弟极大鼓舞! 嵌入式入门篇: 什么是嵌入式系统                         http://www.helloa

ARM Linux 3.x的设备树(Device Tree)【转】

转自:http://blog.csdn.net/21cnbao/article/details/8457546 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] ARM Device Tree起源 Device Tree组成和结构 DTS device tree source DTC device tree compiler Device Tree Blob dtb Binding Bootloader Device Tree引发的BSP和驱动变更 常用OF API 总结

ARM Linux 3.x的设备树(Device Tree)

1.    ARM Device Tree起源 在过去的ARM Linux中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥着大量的垃圾代码,相当多数的代码只是在描述板级细节,而这些板级细节对于内核来讲,不过是垃圾,如板上的platform设备.resource.i2c_board_info.spi_board_info以及各种硬件的platform_data.读者有兴趣可以统计下常见的s3c2410.s3c6410等板级目录,代码量在数万行.社区必须改变这种局面,

ARM+Linux 嵌入式开发环境搭建

这些都是自个从一月份开始学习ARM+Linux中遇到的问题做的笔记,我觉得很有用,所以分享出来! 因为没有老师教,自己琢磨遇到的问题很多,欢迎交流! -------------------------------------------------------------------------------------------------- 零点漂移队:封尘浪 ------------------------------------------------------------------

[转]ARM Linux 3.x Device Tree Usage

此文转自:http://blog.csdn.net/21cnbao/article/details/8457546 更详细内容可以参考官网 Device Tree 官网:http://devicetree.org/Device_Tree_Usage 1.    ARM Device Tree起源 Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a f*cking pain in the ass”,引发ARM Li

【转】ARM Linux 3.x的设备树(Device Tree)

原文网址:http://blog.csdn.net/21cnbao/article/details/8457546 1.    ARM Device Tree起源 Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a f*cking pain in the ass”,引发ARM Linux社区的地震,随后ARM社区进行了一系列的重大修正.在过去的ARM Linux中,arch/arm/plat-xxx和arch/a