OpenHarmony实战:帆移植案例(下)

OpenHarmony实战:帆移植案例(上)
OpenHarmony实战:帆移植案例(中)

TP

TP驱动模型

主要包含Input模块HDI(Hardware Driver Interface)接口定义及其实现,对上层输入服务提供操作input设备的驱动能力接口,HDI接口主要包括如下三大类:

  • InputManager:管理输入设备,包括输入设备的打开、关闭、设备列表信息获取等;
  • InputReporter:负责输入事件的上报,包括注册、注销数据上报回调函数等;
  • InputController:提供input设备的业务控制接口,包括获取器件信息及设备类型、设置电源状态等。

图 1 INPUT模块HDI接口层框架图

相关目录下源代码目录结构如下所示

复制代码
/drivers/peripheral/input
├── hal                # input模块的hal层代码
│   └── include       # input模块hal层内部的头文件
│   └── src           # input模块hal层代码的具体实现
├── interfaces         # input模块对上层服务提供的驱动能力接口
│   └── include       # input模块对外提供的接口定义
├── test               # input模块的测试代码
│   └── unittest      # input模块的单元测试代码

详细请参考input子系统README

TP HDF驱动适配

配置适配

关闭linux tp驱动开关,在<rockchip_linux_defconfig>文件中关闭TOUCHSCREEN_GT9XX,具体操作如下,将CONFIG_TOUCHSCREEN_GT9XX=y修改为

复制代码
# CONFIG_TOUCHSCREEN_GT9XX is not set
驱动适配
  1. vendor/rockchip/rk3399/hdf_config/khdf/device_info/device_info.hcs修改或增加如下内容

    复制代码
    	device_touch_chip :: device {
                device0 :: deviceNode {
                    policy = 0;
                    priority = 130;
                    preload = 0;
                    permission = 0660;
                    moduleName = "HDF_TOUCH_GT911";
                    serviceName = "hdf_touch_gt911_service";
                    deviceMatchAttr = "zsj_gt911_5p5";
                }
            }
  2. vendor/rockchip/rk3399/hdf_config/khdf/input/input_config.hcs修改或增加如下内容

    复制代码
     busConfig {
         // 0:i2c 1:spi
         busType = 0;                            // I2C通信方式
         busNum = 7;							 // cpu对应touch芯片的I2C编号
         clkGpio = 72;							 // I2C clk对应的IO引脚编号
         dataGpio = 71;							 // I2C data对应的IO引脚标号
         i2cClkIomux = [0xFF77E004, 0x2];		 // I2C [clk引脚对应的复用寄存器,配置为I2C7_clk功能]
         i2cDataIomux = [0xFF77E000, 0x8000];	 // I2C [data引脚对应的复用寄存器,配置为I2C7_DATA功能]
     }
     
     pinConfig {
         rstGpio = 150;							// touch芯片rst对应的IO引脚编号
         intGpio = 52;							// touch芯片int对应的IO引脚编号
         rstRegCfg = [0xFF77E028, 0x00000000];	// rst引脚对应的复用功能寄存器,配置为普通io口
         intRegCfg = [0xFF770018, 0x00000000];	// int引脚对应的复用功能寄存器,配置为普通io口
     }
FAQ问题
解决触屏横竖反转问题

修改drivers/framework/model/input/driver/touchscreen/touch_gt911.c 中的ParsePointData函数,x和y对调即可

InputPinMuxCfg函数修改
复制代码
static int32_t InputPinMuxCfg(uint32_t regAddr, int32_t regSize, uint32_t regValue)
{
    uint8_t *base = NULL;
    uint32_t data = 0;
    if (regAddr == 0) {
        HDF_LOGE("%s: regAddr invalid", __func__);
        return HDF_FAILURE;
    }

    HDF_LOGE("regAddr = 0x%x, regSize = 0x%x", regAddr, regSize);
    base = OsalIoRemap(regAddr, regSize);
    if (base == NULL) {
        HDF_LOGE("%s: ioremap failed", __func__);
        return HDF_FAILURE;
    }
    // 写入寄存器前先读出数据,保存原有的配置,方式修改原有的其他引脚功能配置。
    data = OSAL_READL(base);
    data |= regValue;
    OSAL_WRITEL(data, base);
    OsalIoUnmap((void *)base);
    return HDF_SUCCESS;
}
RK3399引脚GPIOn_KX 编号号确认方法
复制代码
num = 32n+(K-A)8+X
# GPIO1_B2 = 1 * 32 + (B-A)*8 + 2 = 32 + 8 + 1 = 42
功能 IO名称 IO编号
TP_INT GPIO1_C4 52
TP_RST GPIO4_C6 150
TP_SDA GPIO2_A7 71
TP_SCL GPIO2_B0 72
RK3399引脚GPIOn_KX复用功能配置
  1. GPIO复用功能寄存器基地址FF77_0000
  2. 找到GPIOn_K复用功能寄存器偏移量
  3. 确定GPIOn_K复用功能寄存器,基地址+偏移量
  4. 根据复用功能寄存器介绍,写入对应引脚的复用功能
功能 IO名称 复用寄存器地址 控制位 对应数值
TP_INT GPIO1_C4 0xFF770018 9:8 2'b00:GPIO
TP_RST GPIO4_C6 0xFF77E028 13:12 2'b00:GPIO
TP_SDA GPIO2_A7 0xFF77E000 15:14 2'b10: i2c7nfc_sda
TP_SCL GPIO2_B0 0xFF77E004 1:0 2'b10: i2c7nfc_scl

最后

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(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学习资料****

总结

总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。

相关推荐
游戏开发爱好者83 小时前
带签名时间戳接口的重放与压力测试实战,用动态值在发送前现算签名
网络协议·计算机网络·网络安全·ios·adb·https·压力测试
天空'之城4 小时前
单片机基础核心知识点汇总(五)
单片机·嵌入式硬件
启雀AI7 小时前
培训平台移动端离线学习方案设计与实现:视频缓存、断点续传与进度同步的工程实践
android·学习·缓存·音视频·企业lms
独守一片天8 小时前
HarmonyOS 鸿蒙碰一碰与跨端协同体验怎么设计?
华为·harmonyos
我命由我123458 小时前
RxJava - 冷数据流与热数据流
android·java·java-ee·android studio·rxjava·android-studio·android runtime
恒锐丰-罗生9 小时前
SS8103 芯片解析:45V 同步整流降压半桥恒流驱动控制器 大功率光源国产优选 告别低灰闪烁!
驱动开发·嵌入式硬件·硬件工程
2601_9665635210 小时前
愤怒的小鸟单机版 去广告 安卓+PC端离线纯净版 益智耐玩小游戏 不需联网 老旧手机都可以玩 怀旧手机小游戏
android·智能手机
hunterandroid10 小时前
[Android 从零到一] Retrofit 请求取消与生命周期绑定:从 Call.cancel 到协程可取消设计
android
爱跑马的程序员10 小时前
安卓专有的通信子系统-Binder IPC
android·binder·ipc·安卓间通信机制
yuhulkjv33510 小时前
Gemini鸿蒙版导出word格式的终极解法:AI 导出鸭如何重构AI内容落地链路
人工智能·ai·word·harmonyos·ai导出鸭