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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM