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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

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

7 Y! W$ O1 A, I' ^Linux旋转屏幕的方法: w1 E) G; a& L8 A  k$ R' x

9 u( ^/ D8 K9 n0 c; u
  • 临时旋转-通用各Linux发行版
    9 R" ?' F$ a1 w; T
    & p' K; }, i; ^- P) ^
执行xrandr -o normal/inverted/left/right,可以实现临时旋转屏幕方向,命令说明:
( i7 T) s- S; N5 ~! a3 G

9 j9 N2 J' S  X( S- ^normal:表示顺时针旋转0度;& }4 x! H, m0 S% ^& n
0 R, x8 y) f: g1 l+ Y% v# k1 Q
right:表示顺时针旋转90度;& t1 i  Q7 l$ N8 ~

: l5 L$ i- Y8 N$ G1 R4 qinverted:表示顺时针旋转180度;
3 ^* ~/ C' m# A! a; O* E
, j) P, ?5 a0 p( t1 s; @0 @4 m
left:表示顺时针旋转270度;
  ^' M1 C# [! q& _: F
. q/ b0 D5 P  x* f
以inverted命令为例:6 F* l1 g' O/ s/ T- N" d4 @
" g/ @+ x- z3 ~$ c3 C
linaro@linaro-alip:~$ xrandr -o inverted ) f2 k0 {2 [- I: G' g7 y+ Z2 w4 k
  • 永久旋转-适用Ubuntu系统
      _; l4 ?& q! r. l/ h1 D
    8 S, S' F3 P! g! z
修改/etc/default/xrandr启动文件,可以实现永久旋转。以旋转180度为例,命令如下:
; c' U5 D5 K. ~+ p
: ?/ r1 K7 y1 Q; A7 n% g7 \. M, `
root@ido:~# vi /etc/default/xrandr#!/bin/sh /usr/bin/xrandr -o invertedroot@ido:~#永久旋转-适用Debian系统
- k) ?( \, J& A( J# T4 ^( o) J修改启动文件,目录如下:) B- R3 X9 }4 w. I7 @7 u
5 i; E3 i3 }% x% j
/home/linaro/.config/lxsession/LXDE/autostart,将xrandr命令内置,实现永久旋转,主板重启后依旧生效。以旋转180度为例,命令如下:1 j$ a# O' k- @2 o* O
- m% ^% P( c% \
linaro@linaro-alip:~$ vi /home/linaro/.config/lxsession/LXDE/autostart@lxpanel --profile LXDE@pcmanfm --desktop --profile LXDE@xscreensaver -no-splashxrandr -o invertedlinaro@linaro-alip:~$旋转屏幕可能遇到的问题! A4 M4 h( h7 b  t# v$ `, ~
  • Debian系统旋转90度和270度失败
    ! [6 C) b. |7 ?- o  m( h: Y2 @
    , X/ E* {) [; s- h3 g9 i+ K
修改以下目录文件:  ?" N* P! s9 H( q& t+ ]" |$ L
$ G' {/ E) Q/ Z
/etc/X11/xorg.conf.d/20-modesetting.conf8 {) \/ L+ c6 j" l

# h* r4 V( e: d" h2 j具体修改如下:
5 m% Z: R' T5 d* }/ W
& K$ {! T# A  T  e0 e7 U
(1)将Option "FlipFB" "always"这段内容改为Option "FlipFB" "none" & F; q2 d4 ]7 j* b& e- Y# H: b3 ?
' g$ b: |, @0 z% l' H, B' N) {
(2)将Option "UseGammaLUT" "true"这段内容改为#Option "UseGammaLUT" "true"
1 t1 H: c- v5 N; q

4 N) t0 N. M8 ^) ?(3)重启生效" i1 H5 q# S) Y

3 v5 c5 m9 P7 i% D1 h) w, I. g  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
6 U, A2 l9 f6 D% x& w: l
  • FlipFB选项的作用
    . c& ?# M# y1 ]+ P2 `9 H! z  Y+ Z
    , S8 o3 @- {/ w2 q% J# [$ W. \
Option "FlipFB" "always"含义: 这个选项控制帧缓存翻转(Framebuffer flipping)。当设置为 "always" 时,它会强制启用帧缓存翻转。这种翻转有助于减少图像撕裂(tearing),但可能会带来性能损失,特别是在需要频繁更新或大规模绘制屏幕时(如旋转时)。' R) y! q8 p) K) ~

) v6 {; y$ |) s) |4 m& u问题: 在配置中,FlipFB 设置为 "always" 可能会使驱动强制以某种方式处理显示管线,导致旋转操作无法顺利完成。因为旋转会大大增加对显示内存的访问和帧缓存更新需求,而 "always" 可能使得翻转操作与旋转的需求相冲突,从而触发了错误。
! T; T9 U6 T; Q5 r

2 T4 j& U! s0 B  c5 a( Z* P1 UOption "FlipFB" "none"含义: 设置为 "none" 会禁用帧缓存翻转。这意味着系统不再尝试以特定的方式来处理翻转,减少了额外的操作,从而让旋转操作变得更加顺畅。虽然可能会导致轻微的屏幕撕裂,但对于屏幕旋转的需求,这样的设置是更合适的。效果: 通过禁用帧缓存翻转,减少了内存访问冲突或资源争用的问题,使得旋转功能可以正常工作。
8 j2 W" R2 A$ H- Y! k; p

7 B% O9 t1 ^( d
  • UseGammaLUT选项的作用- a" @5 |1 _! u

    " |$ T" e* d. \1 k0 w# b4 m: j! c6 t
Option "UseGammaLUT" "true"含义: 该选项控制是否使用伽玛查找表(Gamma Look-Up Table,Gamma LUT)。伽玛校正用于调整显示器输出的亮度或对比度,以达到更好的图像效果。开启 UseGammaLUT 会引入额外的图像处理步骤,特别是在颜色校正方面,它会影响 GPU 的负载。问题: 虽然伽玛校正与屏幕旋转本身并无直接联系,但如果开启伽玛校正会使得系统需要对每一帧进行额外的颜色调整,可能会影响旋转时的性能表现。如果显卡驱动或硬件对伽玛校正的支持不够完善,可能会导致与旋转操作冲突,最终影响到屏幕的更新和显示。8 F# q$ ~( |$ w4 t+ V
9 R* Z- B4 ]8 _; y0 L5 S( ]
Option UseGammaLUT  "true" 含义: 注释掉这个选项会禁用伽玛校正,减少系统对每一帧图像的处理负担。这对于需要频繁更新图像的操作(如屏幕旋转)有益,因为系统的图像处理变得更轻量化。效果: 通过禁用伽玛 LUT,图像处理变得更加简单,使得旋转操作不会因为额外的颜色处理而受到阻碍。+ @% n+ Q# z1 b3 J, U; e

, L9 I+ h+ j  c3 m# g% c
# r+ s- J9 _4 w0 `

: P1 f( ]% a# \! O9 l" @" K5 i" k8 w1 I8 h7 p9 j$ R# o

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-23 14:01 , Processed in 0.156250 second(s), 24 queries , Gzip On.

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

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

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