1. 程式人生 > >wifi 移植過程

wifi 移植過程

1:關於wifi 匯流排sdio的配置,前面的部落格已經說過2:這一章主要描述wifi移植WL_REG_ON 主要用於上電,休眠的時候,請保持該GPIO上電,否則會丟失wifi內部的狀態,導致wifi喚醒失敗;WL_HOST_WAKE 主要用於wifi裝置有資料的時候,喚醒CPU,進入中斷,關於中斷流程上面已經說過。3:主要包含的檔案有: 1>: bcmdhd.ko wifi驅動模組 2>:fw_bcmdhd_bin; wifi韌體 3>nvram.txt wifi的配置資訊 4>dhd 或者wl 用於使用者測試4:make menuconfig CONFIG_CFG80211=m 使用cfg80211.ko 5:將驅動加入核心 kernel/driver/net/wireless/bcmdhd/ 6: 在kernel/driver/net/wireless/Kconfig 加入 source "driver/net/wireless/bcmdhd/Kconfig" 7: 在kernel/driver/net/wireless/Makefile 加入 obj-$(CONFIG_BCMDHD) += bcmdhd/8:make menuconfig9:wifi GPIO配置 host_wakeWL_REG_ON
10:修改BroadConfig.mk# WifiBOARD_WLAN_VENDOR := broadcom#for broadcom vendorifeq ($(BOARD_WLAN_VENDOR),broadcom)BOARD_WLAN_DEVICE := bcmdhdWPA_SUPPLICANT_VERSION := VER_0_8_XTARGET_KERNEL_MODULES := \ kernel_imx/drivers/net/wireless/bcmdhd/bcmdhd.ko:system/lib/modules/bcmdhd.ko \ kernel_imx/net/wireless/cfg80211.ko:system/lib/modules/cfg80211.koBOARD_WPA_SUPPLICANT_DRIVER := NL80211BOARD_HOSTAPD_DRIVER := NL80211BOARD_HOSTAPD_PRIVATE_LIB_BCM := lib_driver_cmd_bcmdhdBOARD_WPA_SUPPLICANT_PRIVATE_LIB_BCM := lib_driver_cmd_bcmdhdWIFI_DRIVER_FW_PATH_PARAM := "/sys/module/bcmdhd/parameters/firmware_path"WIFI_DRIVER_MODULE_PATH := "/system/lib/modules/bcmdhd.ko"WIFI_DRIVER_MODULE_NAME := "bcmdhd"WIFI_DRIVER_MODULE_ARG := "iface_name=wlan firmware_path=/system/vendor/firmware/fw_bcmdhd.bin nvram_path=/system/vendor/firmware/nvram.txt"SW_BOARD_USR_WIFI := bcm4335WIFI_DRIVER_FW_PATH_STA := "/system/vendor/firmware/fw_bcmdhd.bin"WIFI_DRIVER_FW_PATH_AP := "/system/vendor/firmware/fw_bcmdhd_ap.bin"BCM_NVRAM_SRC_FILE := "/system/vendor/firmware/nvram.txt"BCM_CONFIG_SRC_FILE := "/system/etc/firmware/config.txt"11:修改init.rcservice p2p_supplicant /system/bin/wpa_supplicant \ -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \ -I/system/etc/wifi/p2p_supplicant_overlay.conf -N \ -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ -I/system/etc/wifi/wpa_supplicant_overlay.conf \ -O/data/misc/wifi/sockets -puse_p2p_group_interface=1 \ -e/data/misc/wifi/entropy.bin
[email protected]
:wpa_wlan0 class main socket wpa_wlan0 dgram 660 wifi wifi disabled oneshotservice wpa_supplicant /system/bin/wpa_supplicant \ -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ -I/system/etc/wifi/wpa_supplicant_overlay.conf \ -O/data/misc/wifi/sockets \ -e/data/misc/wifi/entropy.bin
[email protected]
:wpa_wlan0 socket wpa_wlan0 dgram 660 wifi wifi class main disabled oneshotwpa_ctil 與wpa_supplicant 主要使用socket通訊,套接字目錄: 1:/dev/socket/wpa_wlan0 2:/data/misc/wifi/sockets/
int wifi_connect_on_socket_path(const char *path)
{
    char supp_status[PROPERTY_VALUE_MAX] = {'\0'};

    /* Make sure supplicant is running */
    if (!property_get(supplicant_prop_name, supp_status, NULL)
            || strcmp(supp_status, "running") != 0) {
        ALOGE("Supplicant not running, cannot connect");
        return -1;
    }

    ctrl_conn = wpa_ctrl_open(path);
    if (ctrl_conn == NULL) {
        ALOGE("Unable to open connection to supplicant on \"%s\": %s",
             path, strerror(errno));
        return -1;
    }
    monitor_conn = wpa_ctrl_open(path);
    if (monitor_conn == NULL) {
        wpa_ctrl_close(ctrl_conn);
        ctrl_conn = NULL;
        return -1;
    }
    if (wpa_ctrl_attach(monitor_conn) != 0) {
        wpa_ctrl_close(monitor_conn);
        wpa_ctrl_close(ctrl_conn);
        ctrl_conn = monitor_conn = NULL;
        return -1;
    }

    if (socketpair(AF_UNIX, SOCK_STREAM, 0, exit_sockets) == -1) {
        wpa_ctrl_close(monitor_conn);
        wpa_ctrl_close(ctrl_conn);
        ctrl_conn = monitor_conn = NULL;
        return -1;
    }

    return 0;
}

/* Establishes the control and monitor socket connections on the interface */
int wifi_connect_to_supplicant()
{
    static char path[PATH_MAX];

    if (access(IFACE_DIR, F_OK) == 0) {
        snprintf(path, sizeof(path), "%s/%s", IFACE_DIR, primary_iface);//primary_iface = wlan0
    } else {
        snprintf(path, sizeof(path), "@android:wpa_%s", primary_iface);
    }
    return wifi_connect_on_socket_path(path);
}
12:除錯 1:insmod cfg80211.ko 2: insmode bcmdhd.koifconfig wlan0 up 檢視wifi驅動是否載入正常,如果不正常一般是GPIO配置不正確,上電時序錯誤等,需要使用示波器測試時序,可以測試SDIO是否有資料。13:修改hal層根據自定義二個.ko ,修改hal層,載入wifi驅動

相關推薦

wifi 移植過程

1:關於wifi 匯流排sdio的配置,前面的部落格已經說過2:這一章主要描述wifi移植WL_REG_ON 主要用於上電,休眠的時候,請保持該GPIO上電,否則會丟失wifi內部的狀態,導致wifi喚醒失敗;WL_HOST_WAKE 主要用於wifi裝置有資料的時候,喚醒C

AM335X移植SDIO WIFI過程

最近一需要移植了SDIO WIFI到3.2版本核心。因為之前已經成功移植了3.14核心,所以整個過程花了一個下午就完成了。 話不多說,先交待一下平臺: CPU:TI AM3352 600M OS:ubuntu core 12.04 for arm SDK版本:TI SDK

驅動移植過程中DMA內存相關接口替換

linux sylixos dma 1. 相關概念介紹及移植簡介 1.1 物理地址與總線地址 1)物理地址是與CPU相關的。在CPU的地址信號線上產生的就是物理地址,在程序指令中的的虛擬地址經過段映射和頁面映射後,就生成了物理地址,這個物理地址被放到CPU的地址線上。

rtmp向IR601移植過程(無功能步驟,只有移植步驟)

安裝 crypto usr 默認 flag arch librtmp AR www 1.main.c中添加頭文件: #include "rtmp_sys.h" #include "log.h" #include "rtmp.h" 2.功能代碼編寫 3.添加頭文件地址 交

tslib 1.4 qt4.8.6移植過程記錄

重新編譯 官網 .com main where 不顯示 接口 刪掉 etc 工作原因需要把原JAVA界面移植成QT界面,觸摸驅動這個坑填了好久,今天終於搞定了,也怪自己經驗不足吧。記錄一下忘了以後還可以看看,設置的環境變量都是機器上的,如果需要使用得改改 下載tslib1.

記錄Ubuntu 14.04 下安裝無線網卡驅動解決無法連接WiFi過程

less bsp 14. 要求 driver name ora ubunt 14.04 新電腦安裝了Ubuntu 14.04,但是網絡連接中只有以太網而沒有WiFi的選項. 打開System Setting系統設置-Software&Updates軟件&更新

linux2.6.32系統移植過程總結

經歷了好長時間的折磨,終於搞定了一個移植的最簡單的linux+根檔案系統,過程很曲折,很痛苦,不過還是很有收穫的…^_^ 製作的整個過程中最折磨人的還是根檔案系統的製作,在最終發現問題竟然在核心上,太弱了,最開始沒發現問題在哪裡。具體的移植過程,需要修改哪些引數,網上都有教程,很詳細

Linux系統移植過程

1.確定工具鏈 在主Makefile確定 2.確定平臺 make tiny4412_config   //tiny4412_config  需要在boards.cfg檔案下查詢板子名 生成了include/config.h 和include/config.mk 3.編譯 ma

基於Exynos4412 cortex A9開發板的無線網絡卡驅動移植過程

移植無線網絡卡的驅動: 準備工作: 1.無線網絡卡 2.首先在這個官網上[www.realtek.com.tw](無線網絡卡),下載相應網絡卡的驅動,本次下載的名稱為: 0001RTL8188

基於ROS的服務機器人移植過程編譯問題彙總

為方便後續工作,寫下部落格彙總服務機器人v1.0程式碼移植到筆記本上遇到的一些編譯錯誤問題。1、工作空間包含的src如下2、編譯   1)初次編譯錯誤:CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkinConfi

android之wifi移植全過程

一、1.編譯核心,生成驅動模組      在核心的根目錄下執行make      生成libertas.ko 和libertas_sdio.ko      [*] Networking support  --->            [*]   Wireless  --->           

AT91SAM9G45上電啟動和bootstrap移植過程

上面的圖示已經說的很清楚了,一般裸機第一次上電啟動是通過SAM-BA或者DBGU往儲存器下載正確的程式,之後可以從其它一些儲存器啟動,比如片外norflash,nandflash,dataflash等等。我手裡有塊at91sam9m10g45-ek的開發板,就是從EBI0 CS3上的nandflash啟動的,

usb wifi移植終於搞定了

1.選的wifi晶片是rtl8188cus 2.選的開發包是0001-RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911.zip 3.編譯8192cu.ko 4.編譯iwconfig工具 5.編譯wpa工具 6.移植到板上 1>

Exynos4412 Uboot 移植(五)—— Uboot 移植過程

Uboot 版本:u-boot-2013.01 開發板:FS_4412 平臺(Exynos4412,可以根據自己的板子修改,只要是4412的過程都是一樣的) 一、建立自己的平臺 1、下載原始碼 我們可以在下面這個網站上下載最新的和以前任一版本的uboot ftp://ft

關於Realtek RTL8188EU wifi移植要知道的

    目前可以使用wireless-tools 或wpa_supplicant工具來配置無線網路。請記住重要的一點是,對無線網路的配置是全域性性的,而非針對具體的介面。     wpa_supplicant是一個較好的選擇,但缺點是它不支援所有的驅動。請瀏覽wpa_su

HISI3518E WIFI移植(ap模式)

一、修改makefile和os/linux/config.mk 1、選擇模式(不定義WIFI_MODE,預設為空)         ifeq ($(WIFI_MODE),)              RT28xx_MODE = AP 2、PLATFORM平臺選擇(這一步

x1000e rtl wifi 移植

前情提要 這次是要換一個 wifi 晶片,就把這個換的過程記錄下來,因為自己也是新手,很多東西都是自己一點點摸出來的,就希望一些東西能對跟我一樣,新入門的人有些幫助,能快速入門。 基本設施 基於 君正 x1000e, halley2 wifi 由原君正的換到 r

linux移植過程出現“can't open /dev/tq2440_serial0: No such file or directory”

解決辦法:在檔案系統中,/etc/inittab 中 tq2440_serial0::askfirst:-/bin/sh改為console::askfirst:-/bin/sh 原因:1)檔案系統中/etc/inittab檔案的作用:我們知道在Linux的核心被載入之後,機

RTL8723藍芽wifi移植8723bu系列

8723buwifi 軟體包下載 http://download.csdn.net/detail/qqchangjianfei/9554279 WIFI:            增加路徑 linux/kernel/kernel-3.4.39/drivers/net/wir

RK3399嵌入式開發板QT下wifi 移植方法

RK3399的CPU採用big.LITTLE大小核架構,雙Cortex-A72大核+四Cortex-A53小核結構,對整數、浮點、記憶體等作了大幅優化,在整體效能、功耗及核心面積三個方面都具革命性提升。 RK3399的GPU採用四核ARM新一代高階影象處理器Ma