• Hi3559A添加WiFi模块


    基于HI3559A,Hi3559AV100_SDK_V2.0.3.1,cfg80211

    主要分为两部分:

    1、在内核中添加WIFI模块,并编译出ko文件到文件系统

    2、编译WiFi工具wpa及相关库,制作Rootfs

    一、在内核中添加wifi功能

    1、将bcmdhd的驱动文件夹放在内核的linux-x-x/drivers/net/wireless目录下

     2、修改drivers/net/wireless的Kconfig文件,添加如下:

    source "drivers/net/wireless/bcmdhd/Kconfig"

    3、修改drivers/net/wireless/Makefile,添加如下:

    obj-$(CONFIG_BCMDHD)  += bcmdhd/

    4、进入coning配置WiFi

     括号里指定了固件在roofs内的路径,在制作人roofs的时候,要把固件添加进去。

    5、修改GPIO相关配置

    在bcmdhd驱动文件夹下dhd_gpio.c

    static int gpio_wl_reg_on = 174; // WL_REG_ON is input pin of WLAN module
    #ifdef CUSTOMER_OOB
    static int gpio_wl_host_wake = 0; // WL_HOST_WAKE is output pin of WLAN module
    #endif

    搜索一下reg_on,将WL_REG_ON都给改了

    修改设备树文件,添加SDIO节点

    6、编译内核之前配置

    在osdrv目录下,make myconfig

     将驱动单独编译为模块

    二、制作roofs

    1、编译相关库与工具、roofs

     注意编译时,将生成的文件指定输入到文件夹,然后通过makefile遍进文件系统

     1 ......
     2 ##########################################################################################
     3 #task [4]    prepare rootfs
     4 ##########################################################################################
     5 hirootfs_prepare: prepare
     6     @echo -e $(GREEN)"---------task [4] prepare rootfs "  $(DONE)
     7 ifeq ($(OSDRV_DIR)/pub/$(PUB_ROOTFS), $(wildcard $(OSDRV_DIR)/pub/$(PUB_ROOTFS)))
     8     pushd $(OSDRV_DIR)/pub/$(PUB_ROOTFS); chmod +w usr/bin; chmod +w usr/sbin; chmod +w sbin; popd
     9     rm $(OSDRV_DIR)/pub/$(PUB_ROOTFS)* -rf
    10 endif
    11     tar xzf $(OSDRV_DIR)/rootfs_scripts/rootfs.tgz -C $(OSDRV_DIR)/pub
    12     mv $(OSDRV_DIR)/pub/rootfs $(OSDRV_DIR)/pub/$(PUB_ROOTFS)
    13     echo $(TOOLCHAIN_DIR)/$(TOOLCHAIN_RUNTIME_LIB)   $(TOOLCHAIN_RUNTIME_LIB_C)
    14     tar xzf $(TOOLCHAIN_DIR)/$(TOOLCHAIN_RUNTIME_LIB)/$(TOOLCHAIN_RUNTIME_LIB_C) -C $(OSDRV_DIR)/pub/$(PUB_ROOTFS)
    15     pushd $(OSDRV_DIR)/pub/$(PUB_ROOTFS); $(OSDRV_CROSS)-strip ./lib/*; popd
    16     mv $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/lib $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/lib64
    17     mkdir $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/lib
    18     mv $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/lib64/ld-2.24.so  $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/lib
    19     rm $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/lib64/ld-linux-aarch64.so.1
    20     cd $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/lib;ln -s ld-2.24.so ld-linux-aarch64.so.1;cd -
    21     cp $(OSDRV_DIR)/../mpp/out/linux/multi-core/ko/*  $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/komod/ -af
    22     chmod +x $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/komod/load*
    23     mkdir -p $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/root/app
    24     mkdir -p $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/usr/share/udhcpc
    25     mkdir -p $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/usr/man
    26     mkdir -p $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/system/etc/firmware/
    27     # 在此后添加
    28     cp ~/backup/root_file/*          $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/root/ -af 
    29 
    30 
    31     cp ~/backup/wifi_app/firmware/*      $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/system/etc/firmware/
    32     cp ~/backup/wifi_app/bin/*             $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/usr/bin/
    33     cp ~/backup/wifi_app/rootfs_lib/*   $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/usr/lib/
    34     cp ~/backup/wifi_app/_install/bin/*   $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/usr/bin
    35     cp ~/backup/wifi_app/_install/lib/*.so   $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/usr/lib/
    36     cp ~/backup/wifi_app/_install/lib/*.so.* $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/usr/lib/
    37     cp ~/backup/wifi_app/_install/man/*   $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/usr/man/ -rf
    38     cp ~/backup/wifi_app/_install/sbin/*   $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/usr/sbin/
    39     cp ~/backup/wifi_app/_install/share/*   $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/usr/share/ -rf
    40     cp ~/backup/wifi_app/_install/etc/*     $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/etc/ -rf
    41     # cp /home/shanon/backup/rcS          $(OSDRV_DIR)/pub/$(PUB_ROOTFS)/etc/init.d/ -af
    42 
    43 ......
    Makefile-rootfs

    相关文件都在backup目录下。root_file目录下是一些脚本文件,

    烧进板子后,运行脚本配置网络。

    注意

    在编译内核模块时,会生成ko文件,需要将相关的ko文件拷贝到根文件系统下的/lib目录下

     modules文件在编译内核模块下会输出到:

    Hi3559AV100_SDK_board_v2/osdrv/pub/rootfs_glibc_multi-core_arm64/lib/modules/4.9.37/kernel$

    将kernel文件夹及其以下的文件都拷贝到/lib/modules/4.9.37/目录下,其中就包含了bcmdhd.ko和cfg80211.ko和 mac80211.ko

     总言之,将编译模块后的4.9.37目录下的除build目录和source目录的其他文件与文件夹拷贝到文件系统的/lib/modules/4.9.37目录下即可。

     注意:

    修改了SDIO与WL_Reg_on引脚,对应的uboot表格里面的引脚配置也要修改,生成新的uboot。

  • 相关阅读:
    结对项目--四则运算“软件”之升级版
    个人项目--多元四则运算
    《构建之法》1-5章后感
    git bash的安装与配置
    随笔
    numpy数组及处理:效率对比
    完整的中英文词频统计
    组合数据类型,英文词频统计
    9.13作业2(完整温度转换、数字游戏、解析身份证号...)
    Mad Libs游戏,华氏与摄氏转换
  • 原文地址:https://www.cnblogs.com/y4247464/p/13389918.html
Copyright © 2020-2023  润新知