近期需要把 wifi 無(wú)線網(wǎng)絡(luò)功能(RTL8822CS 模塊)移植到 iTOP-3399 開(kāi)發(fā)板,經(jīng)過(guò)一段時(shí)間研究, 調(diào)試,終于成功的將 wifi 功能移植到開(kāi)發(fā)板上面。
移植的環(huán)境:
1. iTOP-3399 開(kāi)發(fā)板+ RTL8822CS 模塊
2. Android 7.0
3. 搭建好編譯環(huán)境的 ubuntu16.04 64Bit 開(kāi)發(fā)環(huán)境
![](https://file.elecfans.com/web2/M00/1C/E1/poYBAGGOFPKAFunnAAESVIiHokg336.jpg)
移植步驟
80.3.1 增加設(shè)備樹(shù)節(jié)點(diǎn)
在 /home/topeet/rk3399_7.1_industry/kernel/arch/arm64/boot/dts/rockchip/rk3399-topeet.dtsi 設(shè) 備 樹(shù) 中 添加 WiFi 節(jié)點(diǎn),如下圖所示:
![](https://file.elecfans.com/web2/M00/1C/E1/poYBAGGOFPOAVCP7AAChhjgdC9I593.jpg)
wifi_chip_type 屬性表示 WiFi 器件的類(lèi)型為 rtl8822cs。
查找 sdio0 節(jié)點(diǎn),注釋掉下面的語(yǔ)句,注釋掉這句是因?yàn)樽?cè) sdio 設(shè)備時(shí),會(huì)注冊(cè)不上。
![](https://file.elecfans.com/web2/M00/1C/E1/poYBAGGOFPKACYghAACIYPoSItk275.jpg)
80.3.2 修改內(nèi)核驅(qū)動(dòng)
修改驅(qū)動(dòng)的思路:
1) 將驅(qū)動(dòng)文件拷貝內(nèi)核中
2) 在內(nèi)核中加載上添加的驅(qū)動(dòng)
3) 我們提前了解下配置 wifi 固件一般是在源碼
drivers/net/wireless/rockchip_wlan/rkwifi/rk_wifi_config.c,wifi 模塊驅(qū)動(dòng)在源碼 net/rfkill/rfkill-wlan.c
第一步,我們拷貝光盤(pán)資料下“
iTOP-3399 開(kāi)發(fā)板\02_iTOP-3399 開(kāi)發(fā)資料匯總(不含光盤(pán)內(nèi)容)\13_
嵌入式 Linux 開(kāi)發(fā)指南(RK3399)手冊(cè)配套資料\6.Android 底層驅(qū)動(dòng)\Android7wifi 移植\原廠 wifi 驅(qū)動(dòng)” RTL8822CS_WiFi_linux_v5.12.1.1-0.20210125.tar.gz,此驅(qū)動(dòng)是 wifi 模組的廠家提供的,我們將其放入內(nèi)核目 錄 drivers/net/wireless/rockchip_wlan/下,并修改文件夾名稱(chēng)為 rtl8822cs,如下圖所示:
![](https://file.elecfans.com/web2/M00/1C/E8/pYYBAGGOFPOACPgTAABfjLT2PTo231.jpg)
接著修改以下文件:
(1)修改 drivers/net/wireless/rockchip_wlan/Makefile 文件,添加以下內(nèi)容:
obj-$(CONFIG_RTL8822CS) += rtl8822cs/
![](https://file.elecfans.com/web2/M00/1C/E8/pYYBAGGOFPOAZpuHAADrXayuhW4323.jpg)
(2)修改 drivers/net/wireless/rockchip_wlan/Kconfig 文件,添加
source "drivers/net/wireless/rockchip_wlan/rtl8822cs/Kconfig"
![](https://file.elecfans.com/web2/M00/1C/E1/poYBAGGOFPSAJsWQAADxXodUu6Q424.jpg)
(3)修改 drivers/net/wireless/rockchip_wlan/Kconfig/rtl8822cs 下的 Makefile 文件
將文件中的 CONFIG_PLATFORM_I386_PC 的值修改為 n 將文件中的 ONFIG_PLATFORM_ARM_RK3188 的值修改為 y
如下圖所示:
![](https://file.elecfans.com/web2/M00/1C/E1/poYBAGGOFPOAEQBkAADD9eOIamI877.jpg)
將如下圖所示所示的修改為 MODULE_NAME := 8822cs
![](https://file.elecfans.com/web2/M00/1C/E8/pYYBAGGOFPOADi-gAABpwDzi0BA394.jpg)
如下圖所示,可以打開(kāi)或關(guān)閉 debug 信息。
![](https://file.elecfans.com/web2/M00/1C/E8/pYYBAGGOFPOAX1OfAABAQKmQ9Gk231.jpg)
(4)修改 drivers/net/wireless/rockchip_wlan/Kconfig/rtl8822cs 下的 Kconfig 文件
將第一行的 RTL8822BS 修改為 RTL8822CS,這里是廠家的源碼寫(xiě)錯(cuò)了,不改正的話不會(huì)編譯到這個(gè)源碼目錄。
![](https://file.elecfans.com/web2/M00/1C/E1/poYBAGGOFPOAAtxAAAAeZMeRDPE857.jpg)
(5)然后在內(nèi)核目錄下(也就是 kernel 目錄下)輸入以下命令配置加載驅(qū)動(dòng)。
![](https://file.elecfans.com/web2/M00/1C/E8/pYYBAGGOFPSAC2brAAA5JrlZNbY969.jpg)
![](https://file.elecfans.com/web2/M00/1C/E8/pYYBAGGOFPSAfEnPAACp7y9P8Lk778.jpg)
(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;
![](https://file.elecfans.com/web2/M00/1C/E1/poYBAGGOFPSAAh27AABtu6ncJ0M391.jpg)
(
8)然后修改/home/topeet/rk3399_7.1_industry/kernel/include/linux/rfkill-wlan.h 文件,添加如下內(nèi)容, 如下圖所示: WIFI_RTL_8822CS
![](https://file.elecfans.com/web2/M00/1C/E8/pYYBAGGOFPSAeqpPAABz5_K20Ik647.jpg)
80.3.3 修改 HAl 層
(1)我們修改/home/topeet/rk3399_7.1_industry/hardware/libhardware_legacy/wifi/rk_wifi_ctrl.c 文件, 添加如下所示代碼,如下圖所示:
{"RTL8822CS",
"024c:c822"},
![](https://file.elecfans.com/web2/M00/1C/E1/poYBAGGOFPSAIw0TAABh8zzny74853.jpg)
(2)將 strcpy(recoginze_wifi_chip, "APXXX");注釋掉,修改為 strcpy(recoginze_wifi_chip, "RTL8822CS"); strcpy(recoginze_wifi_chip, "RTL8822CS")
![](https://file.elecfans.com/web2/M00/1C/E8/pYYBAGGOFPWAKbXRAABrZwPNDjg709.jpg)
(3)修改/home/topeet/rk3399_7.1_industry/hardware/libhardware_legacy/wifi/wifi.c 文件,添加代碼 #define RTL8822CS_DRIVER_MODULE_PATH "/system/lib/modules/8822cs.ko"
![](https://file.elecfans.com/web2/M00/1C/E1/poYBAGGOFPWAf3zTAAEc66EBs9A751.jpg)
添加代碼,如下圖所示。
#define RTL8822CS_DRIVER_MODULE_NAME
"8822cs"
![](https://file.elecfans.com/web2/M00/1C/E1/poYBAGGOFPWATz1kAABg6_B7Pvc968.jpg)
添加代碼,如下圖所示:
{"RTL8822CS", RTL8822CS_DRIVER_MODULE_NAME, UNKKOWN_DRIVER_MODULE_ARG},
![](https://file.elecfans.com/web2/M00/1C/E8/pYYBAGGOFPWAX_rcAADT6MKm3T0760.jpg)
80.3.4APP 層
Android 桌面“設(shè)置”APP 里面連接 WiFi 的程序在源碼:
packages/apps/Settings/src/com/android/settings/wifi/目錄下。此部分不需要修改。
經(jīng)過(guò)上面的修改,然后重新編譯 Android7 源碼,燒寫(xiě)鏡像后,便可以進(jìn)行調(diào)試。
-
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
5127瀏覽量
98322
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
迅為RK3568開(kāi)發(fā)板驅(qū)動(dòng)指南Linux中通用SPI設(shè)備驅(qū)動(dòng)
![<b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>RK</b>3568<b class='flag-5'>開(kāi)發(fā)板</b>驅(qū)動(dòng)指南Linux中通用SPI設(shè)備驅(qū)動(dòng)](https://file1.elecfans.com/web3/M00/06/FF/wKgZO2eRsTyAQNODAACATQzlR7A177.png)
[迅為RK3568開(kāi)發(fā)板]非科班也能玩轉(zhuǎn)Android應(yīng)用,體驗(yàn)QT跨平臺(tái)能力
![[<b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>RK</b>3568<b class='flag-5'>開(kāi)發(fā)板</b>]非科班也能玩轉(zhuǎn)<b class='flag-5'>Android</b>應(yīng)用,體驗(yàn)QT跨平臺(tái)能力](https://file1.elecfans.com/web3/M00/02/F1/wKgZO2diirGAPoENAACpt0CV3xc346.png)
基于迅為RK3568開(kāi)發(fā)板全國(guó)產(chǎn)平臺(tái),快速實(shí)現(xiàn)APP開(kāi)機(jī)自啟動(dòng)技術(shù)分享
![基于<b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>RK</b>3568<b class='flag-5'>開(kāi)發(fā)板</b>全國(guó)產(chǎn)平臺(tái),快速<b class='flag-5'>實(shí)現(xiàn)</b>APP開(kāi)機(jī)自啟動(dòng)技術(shù)分享](https://file1.elecfans.com/web2/M00/0C/FB/wKgaomc-y_CAM0OEAACic4bprx8519.png)
迅為RK3588開(kāi)發(fā)板Android12動(dòng)態(tài)替換開(kāi)機(jī)logo
![<b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>RK</b>3588<b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>Android</b>12動(dòng)態(tài)替換開(kāi)機(jī)logo](https://file1.elecfans.com/web2/M00/0C/94/wKgaomc28l6AJAoRAADGxyOPILw711.png)
迅為RK3588開(kāi)發(fā)板運(yùn)行openkylin麒麟系統(tǒng)
迅為RK3588開(kāi)發(fā)部可移植銀河麒麟和開(kāi)放麒麟系統(tǒng)
【OpenHarmony鴻蒙實(shí)戰(zhàn)】在RK3399開(kāi)發(fā)板實(shí)現(xiàn)智能門(mén)禁人臉識(shí)別
![【OpenHarmony鴻蒙實(shí)戰(zhàn)】在<b class='flag-5'>RK3399</b><b class='flag-5'>開(kāi)發(fā)板實(shí)現(xiàn)</b>智能門(mén)禁人臉識(shí)別](https://file1.elecfans.com/web2/M00/C5/25/wKgZomX6oiGAGD-TAACp2nHxw6U669.jpg)
迅為iTOP-RK3588開(kāi)發(fā)板Buildroot系統(tǒng)功能測(cè)試
![<b class='flag-5'>迅</b><b class='flag-5'>為</b>iTOP-<b class='flag-5'>RK</b>3588<b class='flag-5'>開(kāi)發(fā)板</b>Buildroot系統(tǒng)功能測(cè)試](https://file1.elecfans.com/web2/M00/C4/55/wKgZomXyqnGAV4JVAADx86_-WmU893.png)
迅為RK3568開(kāi)發(fā)板驅(qū)動(dòng)開(kāi)發(fā)指南-輸入子系統(tǒng)
![<b class='flag-5'>迅</b><b class='flag-5'>為</b><b class='flag-5'>RK</b>3568<b class='flag-5'>開(kāi)發(fā)板</b>驅(qū)動(dòng)<b class='flag-5'>開(kāi)發(fā)</b>指南-輸入子系統(tǒng)](https://file1.elecfans.com/web2/M00/C0/BF/wKgZomXYRRKAMTL1AAAnOMdfhdU008.png)
評(píng)論