找回密码
 注册
关于网站域名变更的通知
查看: 205|回复: 1
打印 上一主题 下一主题

如何在Linux系统实现屏幕旋转?触觉智能RK3568鸿蒙开发板演示

[复制链接]

该用户从未签到

跳转到指定楼层
1#
 楼主| 发表于 2024-11-19 23:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本文介绍Linux系统实现屏幕角度旋转的方法,以解决不同产品形态的展现方式,其中Ubuntu、Debian系统可以通过xrandr工具实现屏幕旋转。使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568芯片,搭载四核A55处理器,主频2.0Ghz;1T算力NPU;
1 @3 a% x6 M8 m

% m. y1 F: V& Q3 t4 \  BLinux旋转屏幕的方法
- V/ K0 I6 L1 {2 Z
* x1 \3 ^4 n9 b
  • 临时旋转-通用各Linux发行版
    # f1 N. b& j  E3 {& r# [, D/ e2 O) k: R/ A; G2 F
执行xrandr -o normal/inverted/left/right,可以实现临时旋转屏幕方向,命令说明:- l- f8 ?$ x# `" i+ K, l/ A$ ~
; Z( K8 p0 f9 O
normal:表示顺时针旋转0度;. Y! A* H  E$ ]3 }: S2 c% i

+ M* H8 V7 a1 \right:表示顺时针旋转90度;
( z6 C( J* M2 I/ R& C3 Q0 R

0 w5 k3 V6 ~! e0 K; D1 iinverted:表示顺时针旋转180度;
6 b! z; ?2 p9 P5 d' w; Z" ^
5 E* A: A3 l4 W2 m( G$ {
left:表示顺时针旋转270度;# ^6 J/ Z+ R" M) p+ e3 ]

% Z" D) H3 Y1 V& r以inverted命令为例:/ h, U5 [3 N; C& |5 U
# Z8 r8 X6 l* X; B
linaro@linaro-alip:~$ xrandr -o inverted , [6 X! f/ W" C( i% L) ]) [0 g6 U
  • 永久旋转-适用Ubuntu系统
    8 H0 A3 l, ^, j7 ~- \* S. N7 M; b. f- c
修改/etc/default/xrandr启动文件,可以实现永久旋转。以旋转180度为例,命令如下:1 W8 f" G& u7 y( b2 D  m6 q

+ v% j7 w; `, h* r9 {" ]root@ido:~# vi /etc/default/xrandr#!/bin/sh /usr/bin/xrandr -o invertedroot@ido:~#永久旋转-适用Debian系统3 N% n$ _6 B1 w4 k# V$ S9 I! o% }
修改启动文件,目录如下:4 _4 T, B; v" D" [9 D

$ E- g  [' E# o; I/home/linaro/.config/lxsession/LXDE/autostart,将xrandr命令内置,实现永久旋转,主板重启后依旧生效。以旋转180度为例,命令如下:
. G8 I3 [, P3 T8 B4 v+ K
# b8 l- Q- X" q+ X5 f( k: j6 i( Y
linaro@linaro-alip:~$ vi /home/linaro/.config/lxsession/LXDE/autostart@lxpanel --profile LXDE@pcmanfm --desktop --profile LXDE@xscreensaver -no-splashxrandr -o invertedlinaro@linaro-alip:~$旋转屏幕可能遇到的问题
1 P6 @" O+ G$ ~' _, ~
  • Debian系统旋转90度和270度失败% ]6 J; _2 ~8 a

    $ x, i/ f1 ]% K2 g1 |
修改以下目录文件:' Y2 u/ F/ O( v& b& S8 R8 q8 D

" y; O  Q5 r' L/ l( T9 }2 P  O. \/etc/X11/xorg.conf.d/20-modesetting.conf
* Z( E" ^6 i1 E
5 |; v* B& b" J* A0 T
具体修改如下:7 v+ C$ c+ D% e

$ o  U8 O% {- K(1)将Option "FlipFB" "always"这段内容改为Option "FlipFB" "none" " f! k# d/ T0 t; v  d9 f$ ]3 B

- H# K8 H1 [9 q7 M4 q/ m(2)将Option "UseGammaLUT" "true"这段内容改为#Option "UseGammaLUT" "true"
4 N  ^( z0 k) ~/ Q

3 v! z. C( n; f' a(3)重启生效
, T) D. y/ W9 P- G* m# h
6 x$ k$ Q9 ?2 p$ z+ R0 R
  Section "Device"    Identifier  "Rockchip Graphics"    Driver      "modesetting"### Use Rockchip RGA 2D HW accel#    Option      "AccelMethod"    "exa"### Use GPU HW accel    Option      "AccelMethod"    "glamor"    Option      "DRI"            "2"### Set to "always" to avoid tearing, could lead to up 50% peRFormance loss    Option      "FlipFB"         "none"### Limit flip rate and drop frames for "FlipFB" to reduce performance lost#    Option      "MaxFlipRate"    "60"    Option      "NoEDID"         "true"#    Option  "UseGammaLUT"   "true"EndSectionSection  "Screen"    Identifier  "Default Screen"    Device  "Rockchip Graphics"    Monitor  "Default Monitor"EndSection### Valid values for rotation are "normal", "left", "right"Section  "Monitor"    Identifier  "Default Monitor"    Option  "Rotate" "normal"EndSection
, _+ [4 s9 h+ U. E
  • FlipFB选项的作用$ j6 E5 ]: e5 O
    : x5 z8 B- M) S1 A
Option "FlipFB" "always"含义: 这个选项控制帧缓存翻转(Framebuffer flipping)。当设置为 "always" 时,它会强制启用帧缓存翻转。这种翻转有助于减少图像撕裂(tearing),但可能会带来性能损失,特别是在需要频繁更新或大规模绘制屏幕时(如旋转时)。
" R( w7 m% p3 v/ l3 y

, Z# ^+ F9 g9 g: L( l& [# Y) t问题: 在配置中,FlipFB 设置为 "always" 可能会使驱动强制以某种方式处理显示管线,导致旋转操作无法顺利完成。因为旋转会大大增加对显示内存的访问和帧缓存更新需求,而 "always" 可能使得翻转操作与旋转的需求相冲突,从而触发了错误。6 K, L1 E! z2 _3 C# \. K% r
, h% t7 |3 G1 P
Option "FlipFB" "none"含义: 设置为 "none" 会禁用帧缓存翻转。这意味着系统不再尝试以特定的方式来处理翻转,减少了额外的操作,从而让旋转操作变得更加顺畅。虽然可能会导致轻微的屏幕撕裂,但对于屏幕旋转的需求,这样的设置是更合适的。效果: 通过禁用帧缓存翻转,减少了内存访问冲突或资源争用的问题,使得旋转功能可以正常工作。8 Q" }5 E- {/ p3 H

* e6 W8 O" G8 z3 J% Q5 y# {
  • UseGammaLUT选项的作用  b$ ^. V: i/ k; R
    ; h( t* J/ G  Q9 e" d1 O' K( W
Option "UseGammaLUT" "true"含义: 该选项控制是否使用伽玛查找表(Gamma Look-Up Table,Gamma LUT)。伽玛校正用于调整显示器输出的亮度或对比度,以达到更好的图像效果。开启 UseGammaLUT 会引入额外的图像处理步骤,特别是在颜色校正方面,它会影响 GPU 的负载。问题: 虽然伽玛校正与屏幕旋转本身并无直接联系,但如果开启伽玛校正会使得系统需要对每一帧进行额外的颜色调整,可能会影响旋转时的性能表现。如果显卡驱动或硬件对伽玛校正的支持不够完善,可能会导致与旋转操作冲突,最终影响到屏幕的更新和显示。' W3 |5 O2 F# Q& [( R( T% X
. |$ Q- ^' e1 [7 H; e1 I: x
Option UseGammaLUT  "true" 含义: 注释掉这个选项会禁用伽玛校正,减少系统对每一帧图像的处理负担。这对于需要频繁更新图像的操作(如屏幕旋转)有益,因为系统的图像处理变得更轻量化。效果: 通过禁用伽玛 LUT,图像处理变得更加简单,使得旋转操作不会因为额外的颜色处理而受到阻碍。- e5 M# v/ H9 F9 h3 `

8 p5 A  w# g; P4 D2 n& I; @( I+ g9 w$ _! S! M* g3 U: ~6 ~( b7 z
; H5 S' l" F) ?2 J5 m7 W
! E* r. w  J( r4 E, f$ [: U: R

该用户从未签到

2#
发表于 2024-11-22 09:00 | 只看该作者
开发板都有什么资料
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-23 13:10 , Processed in 0.140625 second(s), 22 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表