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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本文介绍Linux系统实现屏幕角度旋转的方法,以解决不同产品形态的展现方式,其中Ubuntu、Debian系统可以通过xrandr工具实现屏幕旋转。使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568芯片,搭载四核A55处理器,主频2.0Ghz;1T算力NPU;
# r; W5 f/ E: V# @7 s
: f3 s& x1 N1 G# R# ?
Linux旋转屏幕的方法1 Q3 U, o1 v- q4 W

6 ]. L$ ~( w- ~- v. }5 E0 e# G2 H
  • 临时旋转-通用各Linux发行版
    ( H( A, |0 c8 X, W: a0 G4 `# g! R9 q
执行xrandr -o normal/inverted/left/right,可以实现临时旋转屏幕方向,命令说明:$ K5 x5 _0 Y3 O% C5 n  I
7 J, B! ~9 d7 o% f( n3 r1 N
normal:表示顺时针旋转0度;. l* Z7 J3 Q2 _5 Y

( k/ j- B1 b/ r. iright:表示顺时针旋转90度;; W* Z3 `1 q& F% C* Y

3 P6 q0 z/ E8 {( _  J& t- Binverted:表示顺时针旋转180度;
% m( r1 h) e- c& Q% @6 O9 V' r

' ?% J* U- d6 v# tleft:表示顺时针旋转270度;5 U8 s) {2 R1 R8 A
# K+ }! p* H5 `' \
以inverted命令为例:$ I/ ?' M/ G  b' g/ b( g' Q' T
) L$ Q8 [, r! M( b9 k- A0 N. p) D# ]
linaro@linaro-alip:~$ xrandr -o inverted
, D" N$ L: [9 C' @* d
  • 永久旋转-适用Ubuntu系统3 Z4 H8 o3 Y3 m2 @6 z5 {- k
    0 M) G7 i" q5 B5 Z" @" C; I
修改/etc/default/xrandr启动文件,可以实现永久旋转。以旋转180度为例,命令如下:
! c) P, k; Y. s8 c# _1 d
) y  S5 M- ^+ C1 U/ u8 u: i
root@ido:~# vi /etc/default/xrandr#!/bin/sh /usr/bin/xrandr -o invertedroot@ido:~#永久旋转-适用Debian系统: M. j. X; S" B( m1 X  c# l
修改启动文件,目录如下:' f: f" P2 g& }. Q
4 k8 z$ o) R  Q0 ^
/home/linaro/.config/lxsession/LXDE/autostart,将xrandr命令内置,实现永久旋转,主板重启后依旧生效。以旋转180度为例,命令如下:
, n' {+ w+ p  o3 i
0 o- j# j2 B  V
linaro@linaro-alip:~$ vi /home/linaro/.config/lxsession/LXDE/autostart@lxpanel --profile LXDE@pcmanfm --desktop --profile LXDE@xscreensaver -no-splashxrandr -o invertedlinaro@linaro-alip:~$旋转屏幕可能遇到的问题
( j  M+ G3 r, p$ C5 M# h; t" H
  • Debian系统旋转90度和270度失败
    ; V4 k  Q0 B4 e! O, P
    5 l: t# I% N+ c  R9 w1 Y
修改以下目录文件:' C4 ~* @/ b9 S9 z. R

4 W8 h0 i+ J, O$ u: y, `4 b7 d/etc/X11/xorg.conf.d/20-modesetting.conf; o  ^& i4 x& Q+ l2 ?; b
: A7 [& G9 S0 L9 G
具体修改如下:) y: |6 g4 Z# R& L! U" a$ u
( n6 G& u0 {8 \: r) j& a
(1)将Option "FlipFB" "always"这段内容改为Option "FlipFB" "none" * Q5 [0 K( f& P' j

! G$ w/ j. A( T, h" l$ Z(2)将Option "UseGammaLUT" "true"这段内容改为#Option "UseGammaLUT" "true" " S0 j7 I, B* Q5 {! Y# c. \

' `( [' p/ j6 ~(3)重启生效
! m0 W3 z: x9 U( v( g5 I

* i% I0 t7 T; Y3 s$ z2 m0 g/ J  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- H  E) R; V. A' J# z2 U
  • FlipFB选项的作用
    ; \7 X* X( U4 k& K  n( I
      w& I9 s) I8 B; u6 h% e+ y
Option "FlipFB" "always"含义: 这个选项控制帧缓存翻转(Framebuffer flipping)。当设置为 "always" 时,它会强制启用帧缓存翻转。这种翻转有助于减少图像撕裂(tearing),但可能会带来性能损失,特别是在需要频繁更新或大规模绘制屏幕时(如旋转时)。
  X' B+ o# K( M; K  ]3 M5 p
8 G# q" G3 y& A" L2 f7 D8 r
问题: 在配置中,FlipFB 设置为 "always" 可能会使驱动强制以某种方式处理显示管线,导致旋转操作无法顺利完成。因为旋转会大大增加对显示内存的访问和帧缓存更新需求,而 "always" 可能使得翻转操作与旋转的需求相冲突,从而触发了错误。1 p) |8 ?+ i  z6 q' A" d

9 e) p7 s% N% `! y! m5 [( P4 H9 POption "FlipFB" "none"含义: 设置为 "none" 会禁用帧缓存翻转。这意味着系统不再尝试以特定的方式来处理翻转,减少了额外的操作,从而让旋转操作变得更加顺畅。虽然可能会导致轻微的屏幕撕裂,但对于屏幕旋转的需求,这样的设置是更合适的。效果: 通过禁用帧缓存翻转,减少了内存访问冲突或资源争用的问题,使得旋转功能可以正常工作。
0 W6 ]& I( D' D: \) D
: h% N+ E& F3 v  \3 i0 j9 y4 L6 b
  • UseGammaLUT选项的作用
    % R) m0 j& b% O2 y
    2 N" \& Z0 U+ j7 N5 T
Option "UseGammaLUT" "true"含义: 该选项控制是否使用伽玛查找表(Gamma Look-Up Table,Gamma LUT)。伽玛校正用于调整显示器输出的亮度或对比度,以达到更好的图像效果。开启 UseGammaLUT 会引入额外的图像处理步骤,特别是在颜色校正方面,它会影响 GPU 的负载。问题: 虽然伽玛校正与屏幕旋转本身并无直接联系,但如果开启伽玛校正会使得系统需要对每一帧进行额外的颜色调整,可能会影响旋转时的性能表现。如果显卡驱动或硬件对伽玛校正的支持不够完善,可能会导致与旋转操作冲突,最终影响到屏幕的更新和显示。
- [( g  O1 R! {; y# u+ R9 C1 z8 F$ F
9 o. Z8 x4 z# G. n2 G: v' c
Option UseGammaLUT  "true" 含义: 注释掉这个选项会禁用伽玛校正,减少系统对每一帧图像的处理负担。这对于需要频繁更新图像的操作(如屏幕旋转)有益,因为系统的图像处理变得更轻量化。效果: 通过禁用伽玛 LUT,图像处理变得更加简单,使得旋转操作不会因为额外的颜色处理而受到阻碍。9 `* r9 z  {1 v0 v

3 v( Y2 v& R3 m5 @: c0 \! `. k' }/ F% j7 @3 r' H

. @) P7 T$ Q  P) b
: c5 m& a! D. I6 ~9 N

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-18 18:01 , Processed in 0.125000 second(s), 24 queries , Gzip On.

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

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

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