做网站的公司名字,百度推广价格表,php公司网站,数码公司网站建设的意义本章节讲解如何移植各类器件驱动。
LCD驱动移植
移植LCD驱动的主要工作是编写一个驱动#xff0c;在驱动中生成模型的实例#xff0c;并完成注册。
这些LCD的驱动被放置在源码目录//drivers/hdf_core/framework/model/display/driver/panel中。 创建Panel驱动 创建HDF驱动…本章节讲解如何移植各类器件驱动。
LCD驱动移植
移植LCD驱动的主要工作是编写一个驱动在驱动中生成模型的实例并完成注册。
这些LCD的驱动被放置在源码目录//drivers/hdf_core/framework/model/display/driver/panel中。 创建Panel驱动 创建HDF驱动在驱动初始化中调用RegisterPanel接口注册模型实例。如: int32_t LCDxxEntryInit(struct HdfDeviceObject *object)
{struct PanelData *panel CreateYourPanel();// 注册模型实例if (RegisterPanel(panel) ! HDF_SUCCESS) {HDF_LOGE(%s: RegisterPanel failed, __func__);return HDF_FAILURE;}return HDF_SUCCESS;
}struct HdfDriverEntry g_xxxxDevEntry {.moduleVersion 1,.moduleName LCD_XXXX,.Init LCDxxEntryInit,
};HDF_INIT(g_xxxxDevEntry); 配置加载panel驱动 产品的所有设备信息被定义在源码文件//vendor/vendor_name/product_name/config/device_info/device_info.hcs中。修改该文件在display的host中名为device_lcd的device中增加配置。 注意 moduleName 要与panel驱动中的moduleName相同。 root {...display :: host {device_lcd :: device {deviceN :: deviceNode {policy 0;priority 100;preload 2;moduleName LCD_XXXX;}}}
}
TP驱动移植
本节描述如何移植触摸屏驱动。触摸屏的器件驱动被放置在源码目录//drivers/hdf_core/framework/model/input/driver/touchscreen中。 移植触摸屏驱动主要工作是向系统注册ChipDevice模型实例。
详细的驱动开发指导请参考 TOUCHSCREEN开发指导。 创建触摸屏器件驱动 在上述touchscreen目录中创建名为touch_ic_name.c的文件。编写如下内容 #include hdf_touch.hstatic int32_t HdfXXXXChipInit(struct HdfDeviceObject *device)
{ChipDevice *tpImpl CreateXXXXTpImpl();if(RegisterChipDevice(tpImpl) ! HDF_SUCCESS) { // 注册ChipDevice模型ReleaseXXXXTpImpl(tpImpl);return HDF_FAILURE;}return HDF_SUCCESS;
}struct HdfDriverEntry g_touchXXXXChipEntry {.moduleVersion 1,.moduleName HDF_TOUCH_XXXX, // 注意这里的moduleName要与后续的配置完全一致.Init HdfXXXXChipInit,
};HDF_INIT(g_touchXXXXChipEntry); 其中ChipDevice中要实现如下方法 方法实现说明int32_t (*Init)(ChipDevice *device)实现器件初始化int32_t (*Detect)(ChipDevice *device)实现器件探测int32_t (*Suspend)(ChipDevice *device)实现器件休眠int32_t (*Resume)(ChipDevice *device)实现器件唤醒int32_t (*DataHandle)(ChipDevice *device)需要实现从器件读取数据将触摸点数据填写入device-driver-frameData中int32_t (*UpdateFirmware)(ChipDevice *device)实现固件升级 配置产品加载器件驱动 产品的所有设备信息被定义在源码文件//vendor/vendor_name/product_name/config/device_info/device_info.hcs中。修改该文件在名为input的host中名为device_touch_chip的device中增加配置。 说明 moduleName 要与触摸屏驱动中的moduleName相同。 deviceN :: deviceNode {policy 0;priority 130;preload 0;permission 0660;moduleName HDF_TOUCH_XXXX;deviceMatchAttr touch_XXXX_configs;
}
WLAN驱动移植
WLAN驱动分为两部分一部分负责管理WLAN设备另一个部分负责处理WLAN流量。
图1 OpenHarmony WLAN结构示意图 如图1左半部分负责管理WLAN设备右半部分负责WLAN流量。HDF WLAN分别为这两部分做了抽象驱动的移植过程可以看做分别实现这两部分所需接口。这些接口有
接口定义头文件接口说明HdfChipDriverFactorydrivers\hdf_core\framework\include\wifi\hdf_wlan_chipdriver_manager.hChipDriver的Factory用于支持一个芯片多个WLAN端口HdfChipDriverdrivers\hdf_core\framework\include\wifi\wifi_module.h每个WLAN端口对应一个HdfChipDriver用来管理一个特定端口NetDeviceInterFacedrivers\hdf_core\framework\include\wifi\net_device.h与协议栈之间的接口如发送数据、设置网络接口状态等 说明 详细的接口开发指导请参考WLAN开发。 具体的移植步骤如下 创建HDF WLAN芯片驱动 在目录/device/vendor_name/peripheral/wifi/chip_name/创建文件hdf_wlan_chip_name.c。内容模板如下 static int32_t HdfWlanXXXChipDriverInit(struct HdfDeviceObject *device) {static struct HdfChipDriverFactory factory CreateChipDriverFactory(); // 需要移植者实现的方法struct HdfChipDriverManager *driverMgr HdfWlanGetChipDriverMgr();if (driverMgr-RegChipDriver(factory) ! HDF_SUCCESS) { // 注册驱动工厂HDF_LOGE(%s fail: driverMgr is NULL!, __func__);return HDF_FAILURE;}return HDF_SUCCESS;
}struct HdfDriverEntry g_hdfXXXChipEntry {.moduleVersion 1,.Init HdfWlanXXXChipDriverInit,.Release HdfWlanXXXChipRelease,.moduleName HDF_WIFI_CHIP_XXX // 注意这个名字要与配置一致
};HDF_INIT(g_hdfXXXChipEntry); 在上述代码的CreateChipDriverFactory方法中需要创建一个HdfChipDriverFactory类型的对象。该对象提供如下方法 接口说明const char *driverName当前driverNameint32_t (*InitChip)(struct HdfWlanDevice *device)初始化芯片int32_t (*DeinitChip)(struct HdfWlanDevice *device)去初始化芯片void (*ReleaseFactory)(struct HdfChipDriverFactory *factory)释放HdfChipDriverFactory对象struct HdfChipDriver *(*Build)(struct HdfWlanDevice *device, uint8_t ifIndex)创建一个HdfChipDriver输入参数中device是设备信息ifIndex是当前创建的接口在这个芯片中的序号void (*Release)(struct HdfChipDriver *chipDriver)释放chipDriveruint8_t (*GetMaxIFCount)(struct HdfChipDriverFactory *factory)获取当前芯片支持的最大接口数其中Build方法负责创建一个管理指定网络接口的对象HdfChipDriver。该对象需要提供方法 接口说明int32_t (*init)(struct HdfChipDriver *chipDriver, NetDevice *netDev)初始化当前网络接口这里需要向netDev提供接口NetDeviceInterFaceint32_t (*deinit)(struct HdfChipDriver *chipDriver, NetDevice *netDev)去初始化当前网络接口struct HdfMac80211BaseOps *opsWLAN基础能力接口集struct HdfMac80211STAOps *staOps支持STA模式所需的接口集struct HdfMac80211APOps *apOps支持AP模式所需要的接口集 编写配置文件描述驱动支持的芯片 在产品配置目录下创建芯片的配置文件保存至源码路径//vendor/vendor_name/product_name/config/wifi/wlan_chip_chip_name.hcs 该文件模板如下 root {wlan_config {chip_name : chipList {chip_name :: chipInst {match_attr hdf_wlan_chips_chip_name; /* 这是配置匹配属性用于提供驱动的配置根 */driverName driverName; /* 需要与HdfChipDriverFactory中的driverName相同*/sdio {vendorId 0xXXXX; /* your vendor id */deviceId [0xXXXX]; /*your supported devices */}}}}
} 说明 路径和文件中的vendor_name、product_name、chip_name请替换成实际名称。 vendorId 和 deviceId需要根据实际芯片的识别码进行填写。 编写配置文件加载驱动 产品的所有设备信息被定义在源码文件//vendor/vendor_name/product_name/config/device_info/device_info.hcs中。修改该文件在名为network的host中名为device_wlan_chips的device中增加配置。模板如下 deviceN :: deviceNode {policy 0;preload 2;moduleName HDF_WLAN_CHIPS;deviceMatchAttr hdf_wlan_chips_chip_name;serviceName driverName;
} 说明 moduleName 要与HDF WLAN 芯片驱动中的moduleName相同。 修改Kconfig文件让移植的WLAN模组出现再内核配置中 在device/vendor_name/drivers/Kconfig中增加配置菜单模板如下 config DRIVERS_HDF_WIFI_chip_namebool Enable chip_name Host driverdefault ndepends on DRIVERS_HDF_WLAN helpAnswer Y to enable chip_name Host driver. 说明 请替换模板中的chip_name为实际的芯片名称。 修改构建脚本让驱动参与内核构建 在源码文件//device/vendor_name/drivers/lite.mk末尾追加如下内容。 ifeq ($(LOSCFG_DRIVERS_HDF_WIFI_chip_name), y)# 构建完成要链接一个叫hdf_wlan_chipdriver_chip_name的对象建议按这个命名防止冲突LITEOS_BASELIB -lhdf_wlan_chipdriver_chip_name# 增加构建目录gpioLIB_SUBDIRS ../peripheral/wifi/chip_name
endif 说明 请替换模板中的chip_name为实际的芯片名称。
最后
有很多小伙伴不知道学习哪些鸿蒙开发技术不知道需要重点掌握哪些鸿蒙应用开发知识点而且学习时频繁踩坑最终浪费大量时间。所以有一份实用的鸿蒙HarmonyOS NEXT资料用来跟着学习是非常有必要的。
这份鸿蒙HarmonyOS NEXT资料包含了鸿蒙开发必掌握的核心知识要点内容包含了ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等鸿蒙HarmonyOS NEXT技术知识点。
希望这一份鸿蒙学习资料能够给大家带来帮助有需要的小伙伴自行领取限时开源先到先得~无套路领取
获取这份完整版高清学习路线请点击→纯血版全套鸿蒙HarmonyOS学习资料
鸿蒙HarmonyOS NEXT最新学习路线 HarmonOS基础技能 HarmonOS就业必备技能 HarmonOS多媒体技术 鸿蒙NaPi组件进阶 HarmonOS高级技能 初识HarmonOS内核 实战就业级设备开发 有了路线图怎么能没有学习资料呢小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙OpenHarmony 学习手册共计1236页与鸿蒙OpenHarmony 开发入门教学视频内容包含ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。
获取以上完整版高清学习路线请点击→纯血版全套鸿蒙HarmonyOS学习资料
《鸿蒙 (OpenHarmony)开发入门教学视频》 《鸿蒙生态应用开发V2.0白皮书》 《鸿蒙 (OpenHarmony)开发基础到实战手册》
OpenHarmony北向、南向开发环境搭建 《鸿蒙开发基础》
ArkTS语言安装DevEco Studio运用你的第一个ArkTS应用ArkUI声明式UI开发.…… 《鸿蒙开发进阶》
Stage模型入门网络管理数据管理电话服务分布式应用开发通知与窗口管理多媒体技术安全技能任务管理WebGL国际化开发应用测试DFX面向未来设计鸿蒙系统移植和裁剪定制…… 《鸿蒙进阶实战》
ArkTS实践UIAbility应用网络案例…… 获取以上完整鸿蒙HarmonyOS学习资料请点击→纯血版全套鸿蒙HarmonyOS学习资料
总结
总的来说华为鸿蒙不再兼容安卓对中年程序员来说是一个挑战也是一个机会。只有积极应对变化不断学习和提升自己他们才能在这个变革的时代中立于不败之地。