迅为RK3568开发板Buildroot 系统设置屏幕旋转

本文档介绍了如何在Buildroot系统上旋转不同类型的触摸屏幕,包括MIPI7寸、LVDS7寸和两种10.1寸屏幕。旋转涉及打开设备树的宏定义,以及在特定节点添加代码来调整Ubootlogo和kernellogo的旋转角度,以实现屏幕从竖屏到横屏或反之的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

迅为支持的触摸屏幕有四种:

MIPI 7 寸屏幕(默认物理屏幕为竖屏)

LVDS 7 寸屏幕(默认物理屏幕为竖屏)

LVDS 10.1 寸 1024*600 屏幕(默认物理屏幕为横屏)

LVDS 10.1 寸 1280*800 屏幕(默认物理屏幕为横屏)

本文档将 buildroot 系统不同屏幕如何旋转屏幕。Buildroot 系统启动的过程中,屏幕会依次

显示 uboot logo,kernel logo,最后显示桌面。所以如果想要手中的屏幕由竖屏变为横屏或者横

屏变为竖屏,首先要旋转 uboot logo,kernel logo,然后旋转文件系统的桌面和触摸。

1.1.1 设置屏幕

打开设备树 rk356x_linux/kernel/arch/arm64/boot/dts/rockchip/topeet_screen_choose.dtsi 将对

应要修改的屏幕的宏定义打开,其他的宏定义注释掉。

如果想要 MIPI7 寸屏幕旋转,则打开#define LCD_TYPE_MIPI 的宏定义。

如果想要 LVDS 7 寸屏幕旋转,则打开#define LCD_TYPE_LVDS_7_0 的宏定义。

如果想要 LVDS10.1 寸 1024*600 屏幕旋转,则打开#define LCD_TYPE_LVDS_10_1_1024X600

的宏定义。

如果想要 LVDS10.1 寸 1280*800 屏幕旋转,则打开#define LCD_TYPE_LVDS_10_1_1280X800

的宏定义。

1.1.2 旋转 Uboot logo 和内核 logo

接下来介绍不同屏幕的旋转

MIPI 7 寸屏(默认物理屏幕是竖屏),旋转方法如下:

修改 rk356x_linux/kernel/arch/arm64/boot/dts/rockchip/topeet_rk3568_lcds.dtsi 文件,在

route_dsi1 节点中增加红框中的代码,其中:

logo,rotate = <1>;代表逆时针旋转 90 度,

logo,rotate = <2>;代表逆时针旋转 180 度,

logo,rotate = <3>;代表逆时针旋转 270 度,

logo,rotate = <0>;代表逆时针旋转 360 度。

作者设置 logo,rotate = <1>,将屏幕旋转 90 度。

LVDS 7 寸屏幕(默认物理屏幕是竖屏)

LVDS 10.1 寸 1024*600 屏幕(默认物理屏幕是横屏)

LVDS 10.1 寸 1280*800 屏幕(默认物理屏幕是横屏)

以上三种屏幕旋转方法如下:

修改 rk356x_linux/kernel/arch/arm64/boot/dts/rockchip/topeet_rk3568_lcds.dtsi 文件,在

route_lvds 节点中增加红框中的代码,其中:

logo,rotate = <1>;代表逆时针旋转 90 度,

logo,rotate = <2>;代表逆时针旋转 180 度,

logo,rotate = <3>;代表逆时针旋转 270 度,

logo,rotate = <0>;代表逆时针旋转 360 度。

作者设置 logo,rotate = <1>,将屏幕旋转 90 度。

### RK3566 实现水平旋转配置方法 对于RK3566芯片,在实现屏幕的水平旋转功能时,主要涉及到显示控制器寄存器设置以及帧缓冲区的数据排列方式调整。通过修改这些参数可以改变图像在屏幕上呈现的角。 #### 修改显示控制器寄存器 为了使屏幕能够按照指定角进行旋转,需要重新配置显示屏控制模块的相关寄存器。这包括但不限于分辨率、扫描模式等参数。特别是针对水平翻转和平移操作,可以通过调整水平同步偏移量(Hor Sync Offset) 和水平同步脉冲宽 (H Sync Pulse Width),来间接影响最终画面的方向[^2]。 ```c /* 设置水平同步参数 */ disp_sys_script_set_item(disp, "hor_sync_offset", 48); disp_sys_script_set_item(disp, "h_sync_pulse_width", 32); ``` 需要注意的是上述代码仅为示意性质,并不适用于所有情况下的实际应用环境当中。具体数值应当依据所使用的面板规格书来进行适当调整。 #### 帧缓存数据重排 除了硬件层面的变化外,软件方面也需要做相应处理——即对即将渲染到屏幕上的每一帧图像像素点顺序做出更改。一般而言,Linux内核提供了多种途径完成这项工作: - **Framebuffer Rotation**: 使用fbcon_rotate工具可以直接作用于framebuffer层面上执行顺/逆时针90增量式的变换; - **KMS(DRM)**: 若采用现代图形子系统,则可通过原子属性接口传递rotation标志位给对应CRTC对象从而达到目的; 这两种方案各有优劣之处,前者简单易懂但灵活性较差;后者则更加高效且支持更多特性比如多平面合成等功能。 #### 配置文件调整 部分情况下可能还需要编辑设备树源码(.dts/.dtsi), 添加或修改有关display-timings节点内的描述信息以适应新的物理连接关系变化需求: ```diff &lcd { status = "okay"; + display-timings { + native-mode = <&timing0>; + + timing0: timing@0 { + clock-frequency = <...>; /* 根据实际情况填写 */ + + hactive = <1920>; + vactive = <1080>; + + hfront-porch = <<原有值>>; + hback-porch = <<原有值>>; + vsync-len = <<原有值>>; + ... + + // 新增字段用于指示是否启用镜像效果 + panel-orientation = "inverted-x"; + }; + }; }; ``` 以上就是关于如何基于RK3566平台实现水平旋转的一些基本思路和技术要点介绍[^1]。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值