小米6鸿蒙移植进度更新:已打通HDC

描述

最近研究出了 USB HDC 连接和屏幕背光适配,特此分享给大家。

 

USB HDC 适配

USB HDC 适配首先要确认内核的编译选项中有 USB 控制器的驱动。

以小米 6 举例,小米 6 采用的 usb 控制器是高通芯片内置的,并支持 usb3.0,但是小米配置成只能用 usb2.0 的速度,这里要批判一下小米万年 usb2.0。

回到正题,虽然只能用 usb2.0,但是芯片是 3.0 的所以内核选项还是需要选上 3.0 的驱动。

...
CONFIG_USB_DWC3=y                                       #选中usb3驱动
# CONFIG_USB_DWC3_HOST is not set
# CONFIG_USB_DWC3_GADGET is not set
CONFIG_USB_DWC3_DUAL_ROLE=y

#
# Platform Glue Driver Support
#
CONFIG_USB_DWC3_OF_SIMPLE=y
CONFIG_USB_DWC3_QCOM=y                          #选中高通usb驱动
...
CONFIG_USB_LIBCOMPOSITE=y
CONFIG_USB_F_FS=y                                     #HDC连接通过configfs进行实现
CONFIG_USB_CONFIGFS=y
...
CONFIG_USB_CONFIGFS_F_FS=y
同时保证【USB Gadget precomposed configurations】为非选。
#
# USB Gadget precomposed configurations
#
# CONFIG_USB_ZERO is not set
# CONFIG_USB_AUDIO is not set
# CONFIG_USB_ETH is not set
# CONFIG_USB_G_NCM is not set
# CONFIG_USB_GADGETFS is not set
# CONFIG_USB_FUNCTIONFS is not set
# CONFIG_USB_MASS_STORAGE is not set
# CONFIG_USB_G_SERIAL is not set
# CONFIG_USB_MIDI_GADGET is not set
# CONFIG_USB_G_PRINTER is not set
# CONFIG_USB_CDC_COMPOSITE is not set
# CONFIG_USB_G_ACM_MS is not set
# CONFIG_USB_G_MULTI is not set
# CONFIG_USB_G_HID is not set
# CONFIG_USB_G_DBGP is not set
# CONFIG_USB_G_WEBCAM is not set
# CONFIG_USB_RAW_GADGET is not set
# end of USB Gadget precomposed configurations

 

到此内核部分修改完毕,接下来还需要修改 init.sagit.usb.cfg 文件,关键在两个地方,一个是序列号,这个必须是一个能获取到值,我之前一直用官方默认的写法,系统一直识别失败,提示序列号不正确。

还有一个就是修改 usb 控制器的名称,这个就需要我们在系列文章第一篇中有提到,需要提前在正常运行的系统里面获取到 usb 控制器的名称,或者后续配置 usb 串口启用控制台进行获取也行。

在启用 usb 串口后,执行以下命令获取 usb 控制器名称:

ls /sys/class/udc/
    小米

 

获取到 usb 控制器名称后修改 init.sagit.usb.cfg 中的 usb 控制器名称和序列号获取方式。

 

"cmds" : [
                ...
                "write /config/usb_gadget/g1/strings/0x409/serialnumber 0123456789",
                ...
                "setparam sys.usb.controller a800000.usb"
            ]
    修改完成之后编译并烧录进设备,这样就能适配 hdc 设备连接器了,打通 hdc 之后就可以使用 DevEco Studio 进行真机调试应用开发。    

 

屏幕背光调节

屏幕背光调节适配首先确认存在背光节点信息:

 

ls /sys/class/backlight/backlight/
    小米

 

然后通过命令行修改背光亮度值,查看是否有变化:

 

cd /sys/class/backlight/backlight/
echo 1 > brightness
   

 

小米

确认修改亮度可以控制屏幕之后我们需要修改 display 层适配代码。 修改 drm_connector.cpp 内的 GetBrightness 函数:

小米

修改 drm_connector.cpp 内的 SetBrightness 函数:

小米

修改完成之后保存,编译烧录,小米 6 亲测有效:

小米

最后,我已经把 小米 6 和树莓派 4 的 vendor,board,soc,kernel 都开源了,开源仓在我创建的 OHOS 移植社区,提供给大家做移植参考。

 

https://gitee.com/ohos-porting-communities
 

 

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分