基于迅為3399開發(fā)板Android7-WiFi移植步驟 1 增加設(shè)備樹節(jié)點(diǎn) 在 /home/topeet/rk3399_7.1_industry/kernel/arch/arm64/boot/dts/rockchip/rk3399-topeet.dtsi 設(shè) 備 樹 中添加 WiFi 節(jié)點(diǎn),如下圖所示: ![]() wifi_chip_type 屬性表示 WiFi 器件的類型為 rtl8822cs。 查找 sdio0 節(jié)點(diǎn),注釋掉下面的語句,注釋掉這句是因?yàn)樽?sdio 設(shè)備時(shí),會注冊不上。 ![]() 2 修改內(nèi)核驅(qū)動 修改驅(qū)動的思路: 1) 將驅(qū)動文件拷貝內(nèi)核中 2) 在內(nèi)核中加載上添加的驅(qū)動 3) 我們提前了解下配置 wifi 固件一般是在源碼 drivers/net/wireless/rockchip_wlan/rkwifi/rk_wifi_config.c,wifi 模塊驅(qū)動在源碼 net/rfkill/rfkill-wlan.c 第一步,我們拷貝光盤資料下“iTOP-3399 開發(fā)板\02_iTOP-3399 開發(fā)資料匯總(不含光盤內(nèi)容)\13_ 嵌入式 Linux 開發(fā)指南(RK3399)手冊配套資料\6.Android 底層驅(qū)動\Android7wifi 移植\原廠 wifi 驅(qū)動” RTL8822CS_WiFi_linux_v5.12.1.1-0.20210125.tar.gz,此驅(qū)動是 wifi 模組的廠家提供的,我們將其放入內(nèi)核目錄 drivers/net/wireless/rockchip_wlan/下,并修改文件夾名稱為 rtl8822cs,如下圖所示: ![]() 接著修改以下文件: (1)修改 drivers/net/wireless/rockchip_wlan/Makefile 文件,添加以下內(nèi)容: obj-$(CONFIG_RTL8822CS) += rtl8822cs/ ![]() (2)修改 drivers/net/wireless/rockchip_wlan/Kconfig 文件,添加 source "drivers/net/wireless/rockchip_wlan/rtl8822cs/Kconfig ![]() (3)修改 drivers/net/wireless/rockchip_wlan/Kconfig/rtl8822cs 下的 Makefile 文件 將文件中的 CONFIG_PLATFORM_I386_PC 的值修改為 n 將文件中的 CONFIG_PLATFORM_ARM_RK3188 的值修改為 y 如下圖所示: ![]() 將如下圖所示所示的修改為 MODULE_NAME := 8822cs ![]() 如下圖所示,可以打開或關(guān)閉 debug 信息。 ![]() (4)修改 drivers/net/wireless/rockchip_wlan/Kconfig/rtl8822cs 下的 Kconfig 文件 將第一行的 RTL8822BS 修改為 RTL8822CS,這里是廠家的源碼寫錯了,不改正的話不會編譯到這個源碼目錄。 ![]() (5)然后在內(nèi)核目錄下(也就是 kernel 目錄下)輸入以下命令配置加載驅(qū)動。 make ARCH=arm64 menuconfig Device Drivers ---> ![]() (6)輸入以下命令,將保存好的.config 文件復(fù)制替換默認(rèn)的內(nèi)核配置 defconfig 文件 cp .config arch/arm64/configs/rockchip_defconfig (7)然后修改/home/topeet/rk3399_7.1_industry/kernel/net/rfkill/rfkill-wlan.c 文件,添加如下所示內(nèi)容。 } else if (strcmp(wifi_chip_type_string, "rtl8822cs") == 0) { type = WIFI_RTL8822CS; ![]() (8)然后修改/home/topeet/rk3399_7.1_industry/kernel/include/linux/rfkill-wlan.h 文件,添加如下內(nèi)容, 如下圖所示: WIFI_RTL_8822CS, ![]() 3 修改 HAl 層 (1)我們修改/home/topeet/rk3399_7.1_industry/hardware/libhardware_legacy/wifi/rk_wifi_ctrl.c 文件, 添加如下所示代碼,如下圖所示: {"RTL8822CS", "024c:c822"}, ![]() (2)將 strcpy(recoginze_wifi_chip, "APXXX");注釋掉,修改為 strcpy(recoginze_wifi_chip, "RTL8822CS"); strcpy(recoginze_wifi_chip, "RTL8822CS") ![]() (3)修改/home/topeet/rk3399_7.1_industry/hardware/libhardware_legacy/wifi/wifi.c 文件,添加代碼 #define RTL8822CS_DRIVER_MODULE_PATH "/system/lib/modules/8822cs.ko" ![]() 添加代碼,如下圖所示。 #define RTL8822CS_DRIVER_MODULE_NAME "8822cs" ![]() 添加代碼,如下圖所示: {"RTL8822CS", RTL8822CS_DRIVER_MODULE_NAME, UNKKOWN_DRIVER_MODULE_ARG}, ![]() 3.4APP 層 Android 桌面“設(shè)置”APP 里面連接 WiFi 的程序在源碼: packages/apps/Settings/src/com/android/settings/wifi/目錄下。此部分不需要修改。 (測試WIFI內(nèi)容請看下節(jié):測試 WiFi) ![]() |