【求助】关于rk3568的WiFi HDF驱动问题
1、问题 我在适配3.2.2-Release版标准系统到一块板卡,需要编写无线模块的HDF驱动,想参照rk3568的wifi驱动来实现,因此着手分析//device/board/hihope/rk3568/wifi/下的代码,并在rk3568板卡上采集驱动的运行日志辅助理解各个组件之间的关系。但是在跟踪过程中时钟没有采集到HDF驱动代码中打印的日志,进一步在//out/kernel目录下查找这些驱
1、问题
我在适配3.2.2-Release版标准系统到一块板卡,需要编写无线模块的HDF驱动,想参照rk3568的wifi驱动来实现,因此着手分析//device/board/hihope/rk3568/wifi/下的代码,并在rk3568板卡上采集驱动的运行日志辅助理解各个组件之间的关系。但是在跟踪过程中时钟没有采集到HDF驱动代码中打印的日志,进一步在//out/kernel目录下查找这些驱动的源文件,居然没有找到,导致现在无从下手了。因此,需要以下两个方面的协助
1、rk3568的wifi HDF驱动运作原理,看上去和zh-cn/device-dev/porting/porting-dayu200-on_standard-demo.md · OpenHarmony/docs - Gitee.com文档描述的不一致。
2、提供与3.2.2-Release版本匹配的wifi驱动适配指导文档
2、跟踪过程
2.1、查看HCS配置
根据//vendor/hihope/rk3568/hdf_config/khdf/device_info/device_info.hcs确定使用的驱动moduleName是HDF_WIFI和HDF_WLAN_CHIPS_AP6275S,按照这个名称搜索代码定位驱动实现。
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 = 2;
moduleName = "HDF_WLAN_CHIPS_AP6275S";
deviceMatchAttr = "hdf_wlan_chips_ap6275s";
serviceName = "ap6275s";
}
}
}
2.2、HDF_WIFI驱动
定位到驱动实现在//drivers/hdf_core/framework/model/network/wifi/core/hdf_wifi_core.c,Kconfig和Makefile代码在//drivers/hdf_core/adapter/khdf/linux/model/network/wifi/目录下,通过配置项DRIVERS_HDF_WIFI控制该模块是否启用。
而rk3568的内核配置文件kernel/linux/config/linux-5.10/arch/arm64/configs/rk3568_standard_defconfig中,CONFIG_DRIVERS_HDF_WIFI没有配置值,也就是说这个驱动就没有启用。
从rk3568的运行日志也可以确认。
# hilog -t kmsg -x |grep -i HDF_WIFI
08-05 17:33:10.667 0 0 I K02600/[I/HDF_LOG_TAG]: HdfDriverManagerGetDriver:try to dynamic load driver HDF_WIFI\x0d
08-05 17:33:10.667 0 0 E K02600/[E/HDF_LOG_TAG]: HdfDriverManagerGetDriver:driver HDF_WIFI not found\x0d
2.3、HDF_WLAN_CHIPS_AP6275S驱动
定位到驱动实现在//device/board/hihope/rk3568/wifi/bcmdhd_wifi6/hdfadapt/hdf_driver_bdh_register.c,Makefile是device/board/hihope/rk3568/wifi/bcmdhd_wifi6/Makefile,通过配置项AP6XXX_WIFI6_HDF控制是否启用。同样的,rk3568的默认内核配置并没有启用它,而且在//out/kernel/目录下也找不到这个驱动的任何源文件。
从rk3568的运行日志中也找不到代码中打印的INFO级别日志。
static int32_t HdfWlanBDH6ChipDriverInit(struct HdfDeviceObject *device)
{
(void)device;
HDF_LOGI("bdh6: call HdfWlanBDH6ChipDriverInit");
return HDFWlanRegBDH6DriverFactory();
}
struct HdfDriverEntry g_hdfBdh6ChipEntry = {
.moduleVersion = 1,
.Bind = HdfWlanBDH6DriverBind,
.Init = HdfWlanBDH6ChipDriverInit,
.Release = HdfWlanBDH6ChipRelease,
.moduleName = "HDF_WLAN_CHIPS_AP6275S"
};
# hilog -t kmsg -x |grep -i HdfWlanBDH6ChipDriverInit
#
更多推荐
所有评论(0)