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
# 

 

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐