需求场景
机器默认横屏或者竖屏显示 -强制横竖屏显示
实现思路
- 旋转 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 寸 1024600 屏幕的触
触摸芯片是 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 0 和 180 是横屏; 90 和 270 是竖屏 修改k69v1_64_k419_defconfig.xml 文件中修改:CONFIG_MTK_LCM_PHYSICAL_ROTATION="180"0 和 180 是横屏; 90 和 270 是竖屏 修改k69v1_64_k419.mk 文件修改:
MTK_LCM_PHYSICAL_ROTATION = 180 0 和 180 是横屏; 90 和 270 是竖屏 修改
拓展
RK和MTK 修改的方式完全不一样? 这个这里总结一下:
- RK 和 MTK 在 kernel/uboot/安卓物理旋转 用的其实都是 旋转方案,更改宏定义
- RK的触摸旋转,修改了设备树方案。
- 为什么MTK当前这款产品,触摸没有去修改设备树,
因为当前修改方案根本没有修改过触摸方向。也就是说:同一台机器,RK按照上述修改横竖屏切换后触摸方向一致的。但是MTK 根本没有去更改触摸屏方向,只是更改了旋转。 当前自己接触的产品,触摸屏方向是不对外输出提供的,也就是说不允许更改触摸屏触摸方向。方向是死的。触摸屏
在定义的时候,就给了触摸方向,不可更改。