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。

原文地址:https://www.cnblogs.com/y4247464/p/13389918.html