系统实现屏幕横竖屏切换

需求场景

机器默认横屏或者竖屏显示 -强制横竖屏显示

实现思路

  • 旋转 uboot logo 和内核 logo
  • 旋转 Android 桌面
  • 旋转触摸

这个很好理解:

  • uboot 内核 开机动画都是有界面的,旋转改变方向,同时提供新的横屏或者竖屏logo
  • 旋转桌面,就是理解的竖屏改为横屏或者横屏改为竖屏
  • 旋转触摸,触摸屏是带驱动的,触摸和显示本身是两个东西,所以旋转触摸。 这样才能实现 触摸到你当前触摸的位置

需求实现

RK实现方案

以RK3568 MIPI屏幕为例,假设当前已经设置了屏幕,用的是哪一款屏幕,配置文件更改宏定义

rk_android11.0_sdk/kernel/arch/arm64/boot/dts/rockchip/topeet_screen_choose.dtsi

旋转uboot logo 和内核 logo

修改设备树文件

rk_android11.0_sdk/kernel/arch/arm64/boot/dts/rockchip/topeet_rk3568_lcds.dtsi

如果配套的屏幕是 LVDS 7 寸屏幕或者 LVDS10.1 寸 1024*600 屏幕或者 LVDS10.1 寸

1280*800 屏幕,修改如下所示,配置文件有根据不同分辨率和修改,找到对应位置修改

&route_lvds{
status = "okay";
logo,rotate = <1>;
connect = <&vp2_out_lvds>;
};
其中:
logo,rotate = <1>;代表逆时针旋转 90 度,
logo,rotate = <2>;代表逆时针旋转 180 度,
logo,rotate = <3>;代表逆时针旋转 270 度,
logo,rotate = <0>;代表逆时针旋转 360 度。

旋转 Android 系统

修改 Android11 源码的文件,

rk_android11.0_sdk/device/rockchip/common/BoardConfig.mk

修改主屏显示的方向,角度可根据显示需求,自定义修改 0/90/180/270 0:横屏,90:竖屏,
180:反向横屏,270:反向竖屏。作者想要将物理竖屏修改为横屏显示,所以旋转角度为 90度。修改如下所示:

SF_PRIMARY_DISPLAY_ORIENTATION := 90

修改 recovery 显示旋转,修改 文件

rk_android11.0_sdk/device/rockchip/common/BoardConfig.mk

如下所示:

TARGET_RECOVERY_DEFAULT_ROTATION ?= ROTATION_RIGHT

修改完,保存退出,重新编译 android 源码,烧写镜像后发现系统启动以后桌面是横屏显
示,但是触摸还是竖屏

旋转触摸

迅为支持的屏幕有 LVDS 7 寸屏幕,LVDS10.1 寸 1280800 屏幕,LVDS10.1 寸 1024600
屏幕,MIPI 7 寸屏幕
LVDS 7 寸屏幕 和 MIPI 7 寸屏幕使用的触摸芯片是 ft5x06。LVDS10.1 寸 1280800 屏幕
和 LVDS10.1 寸 1024
600 屏幕的触

触摸芯片是 ft5x06 的屏幕,修改设备树中的触摸

rk_android11.0_sdk/kernel/arch/arm64/boot/dts/rockchip/topeet_rk3568_lcds.dtsi 

节点,增加红色的代码,如下所示:
在这里插入图片描述
触摸芯片是 gt911 的屏幕,修改设备树中的

rk_android11.0_sdk/kernel/arch/arm64/boot/dts/rockchip/topeet_rk3568_lcds.dtsi 

触摸节点,增加红色的代码,如下所示:
在这里插入图片描述

MTK实现方案

以MTK6769 方案实现,给一定的参考

修改文件如下

\device\mediateksample\k69v1_64_k419\ProjectConfig.mk 
\kernel-4.19\arch\arm64\configs\k69v1_64_k419_defconfig.xml 
\vendor\mediatek\proprietary\bootable\bootloader\lk\project\k69v1_64_k419.mk 

device 下面的是旋转系统
kernel 下面的是旋转kernel
vendor 下面的是旋转uboot

ProjectConfig.mk  文件中修改:
MTK_LCM_PHYSICAL_ROTATION = 180  
   0180 是横屏; 90270 是竖屏 修改
   
k69v1_64_k419_defconfig.xml   文件中修改:

CONFIG_MTK_LCM_PHYSICAL_ROTATION="180"
       0180 是横屏; 90270 是竖屏 修改
	   
k69v1_64_k419.mk  文件修改:
MTK_LCM_PHYSICAL_ROTATION = 180 
	   0180 是横屏; 90270 是竖屏 修改
	   

拓展

RK和MTK 修改的方式完全不一样? 这个这里总结一下:

  • RK 和 MTK 在 kernel/uboot/安卓物理旋转 用的其实都是 旋转方案,更改宏定义
  • RK的触摸旋转,修改了设备树方案。
  • 为什么MTK当前这款产品,触摸没有去修改设备树,
    因为当前修改方案根本没有修改过触摸方向。也就是说:同一台机器,RK按照上述修改横竖屏切换后触摸方向一致的。但是MTK 根本没有去更改触摸屏方向,只是更改了旋转。 当前自己接触的产品,触摸屏方向是不对外输出提供的,也就是说不允许更改触摸屏触摸方向。方向是死的。触摸屏
    在定义的时候,就给了触摸方向,不可更改。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

野火少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值