移植openharmony之添加wifi驱动

本文记录了在OpenHarmony 3.0小型系统上移植RTL8189FTV WiFi芯片模组的过程,包括配置hcs文件、添加驱动文件、修改编译脚本,以及适配初始化和去初始化函数。按照官方HDF框架进行驱动开发,逐步构建编译框架并开始调试。
摘要由CSDN通过智能技术生成

最近在调试openharmony3.0小型系统的wifi模块,把过程记录下,防止以后忘记。
在这里插入图片描述
首先这是官方给的开发说明步骤:
WLAN驱动基于HDF框架和PLATFORM框架开发,不区分OS和芯片平台,为不同厂商的WLAN模组提供统一的驱动模型,各WLAN模组厂商根据如下指导适配WLAN驱动框架。

1、通过wifi_config.hcs文件,配置硬件参数:module(不同feature),芯片等。
2、 解析配置文件, 生成全量配置的结构体对象。
3 、Module初始化,创建Module。
4、 挂接chip,初始化chip。
5 、总线初始化。
6.、上层wpa业务挂接。
具体可查看网址 https://docs.openharmony.cn/pages/zh-cn/device/%E8%AE%BE%E5%A4%87%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3/%E5%AD%90%E7%B3%BB%E7%BB%9F%E5%BC%80%E5%8F%91/%E9%A9%B1%E5%8A%A8/%E5%A4%96%E8%AE%BE%E9%A9%B1%E5%8A%A8%E4%BD%BF%E7%94%A8/WLAN/
说明。可以说非常简明扼要了。
我这里使用的wifi芯片模组为RTL8189FTV,现基于此wifi芯片在openharmony3.0小型系统上的调试过程记录于此。
首先在文件 vendor/xingyun/t113_nand/hdf_config/device_info/device_info.hcs中添加对应的wifi配置项。

diff --git a/vendor/xingyun/t113_nand/hdf_config/device_info/device_info.hcs b/vendor/xingyun/t113_nand/hdf_config/device_info/device_info.hcs
index 7acc319ff2..df34a72ded 100755
--- a/vendor/xingyun/t113_nand/hdf_config/device_info/device_info.hcs
+++ b/vendor/xingyun/t113_nand/hdf_config/device_info/device_info.hcs
@@ -86,5 +86,30 @@ root {
   
             }
         }

+       network :: host {
   
+            hostName = "network_host";
+            device_wifi :: device {
   
+                device0 :: deviceNode {
   
+                    policy = 2;
+                    priority = 100;
+                    preload = 0;
+                    permission = 0664;
+                    moduleName = "HDF_WIFI";
+                    deviceMatchAttr = "hdf_wlan_driver";
+                    serviceName = "hdfwifi";
+                }
+            }
+            device_wlan_chips :: device {
   
+                device0 :: deviceNode {
   
+                    policy = 0;
+                    preload = 0; //注意,此处官方使用的是2,我们调试的话先使用0,系统启动就加载
+                    moduleName = "HDF_WLAN_CHIPS";
+                    deviceMatchAttr = "hdf_wlan_chips_hi3881";
+                    serviceName = "hisi";
+                }
+            }
+        }
+
+
     }
 }

然后需要做的是添加我们自己的驱动文件,目前是先仿照海思目录,在device/xingyunelec/目录下创建个文件夹drivers,然后在里面创建文件夹 wifi,最后创建好的目录如下图所示
在这里插入图片描述
然后仿照海思目录创建core和rtl8189ftv目录文件夹。创建完成的如下图所示。
在这里插入图片描述
其中core目录下只有一个文件hdf_wlan_sdio_adapt.c,rtl8189ftv目前只保留了hdfadapt和include文件夹,如下图所示,因为我们目前还只是在搭建编译wifi模块驱动的框架,所以不需要那么多的文件,只保留基本的文件即可。在这里插入图片描述
目前hdf只保留了的文件有driver_register.c,hdfinit_3881.c,net_adpater.c和net_adpater.h文件,其中driver_register.c不为空文件,其他两个都是空文件,保留driver_register.c文件内容只为测试是否编译成功。device目录修改完成后接着修改编译脚本配置。首先需要添加我们自己wifi芯片模组的内核配置选项,修改如下,使用其他可以仿照添加

--- a/drivers/adapter/khdf/linux/model/network/wifi/Kconfig
+++ b/drivers/adapter/khdf/linux/model/network/wifi/Kconfig
@@ -10,4 +10,11 @@ config DRIVERS_HI3881
     default n
     depends on DRIVERS_HDF_WIFI
     help
-      Answer Y to enable hi3881 wifi chip driver.
\ No newline at end of file
+      Answer Y to enable hi3881 wifi chip driver.
+
+config DRIVERS_RTL8189FTV
+    bool "Enable rtl8189ftv"
+    default n
+    depends on DRIVERS_HDF_WIFI
+    help
+      Answer Y to enable rtl8189ftv wifi chip driver.

然后修改某些编译文件的路径,此处我是增加了宏定义,让它直接链接到我的文件路径即可,这里也想吐槽下,openharmony的文件放置确实有点乱,到处都放文件,然后修改起来感觉特别乱,倒不如规规矩矩放一个地方,这样不用到处找文件。

diff --git a/drivers/adapter/khdf/linux/model/network/wifi/hdfwifi.mk b/drivers/adapter/khdf/linux/model/network/wifi/hdfwifi.mk
index 63703c3544..65fd55179a 100644
--- a/drivers/adapter/khdf/linux/model/network/wifi/hdfwifi.mk
+++ b/drivers/adapter/khdf/linux/model/network/wifi/hdfwifi.mk
@@ -14,7 +14,13 @@

 HDF_WIFI_FRAMEWORKS_ROOT = $(HDF_DIR_PREFIX)/framework/model/network/wifi
 HDF_WIFI_KHDF_FRAMEWORKS_ROOT = $(HDF_DIR_PREFIX)/adapter/khdf/linux/model/network/wifi
+
+ifeq ($(CONFIG_DRIVERS_RTL8189FTV),y)
+HDF_WIFI_VENDOR_ROOT = $(HDF_VENDOR_PREFIX)/device/xingyunelec/drivers/wifi
+else
 HDF_WIFI_VENDOR_ROOT = $(HDF_VENDOR_PREFIX)/device/hisilicon/drivers/wifi/driver
+endif
+
 HDF_FRAMEWORKS_INC := \
     -Idrivers/hdf/framework/ability/sbuf/include \
     -Idrivers/hdf/framework/core/common/include/host \

添加我们自己的编译目录到Makefile文件。

diff --git a/drivers/adapter/khdf/linux/model/network/wifi/vendor/Makefile b/drivers/adapter/khdf/linux/model/network/wifi/vendor/Makefile
index ea4a0d17fe..cce9285919 100755
--- a/drive
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值