首页 > 其他分享 >全志F133(D1s)芯片 如何在Tina下进行显示旋转?

全志F133(D1s)芯片 如何在Tina下进行显示旋转?

时间:2022-11-21 15:32:41浏览次数:70  
标签:D1s 全志 旋转 G2D Tina rotation DISP2 CONFIG SUNXI

问题背景

目前显示多基于横屏的情况设计布局, UI, 图片, 视频等显示. 而常用到的MIPI屏大多都是竖屏, 为避免重新调整布局, 显示提供了竖屏旋转成横屏的显示方式, 节省客户开发时间.

显示旋转有硬件G2D旋转方式, 软件算法旋转方式, 可根据自己的方案屏情况, 测试对比两种方式选择使用, 主要评估内存占用, 时间效率, 旋转效果.

显示驱动旋转framebuffer配置

1.由于此前公版默认在modules.mk屏蔽了屏旋转相关配置, 如果你的版本是禁用旋转的, 需要把相关配置去掉.

路径:target/allwinner/f133-common/modules.mk

屏蔽以下3个相关选项:

CONFIG_SUNXI_DISP2_FB_DISABLE_ROTATE

CONFIG_SUNXI_DISP2_FB_ROTATION_SUPPORT

CONFIG_SUNXI_DISP2_FB_HW_ROTATION_SUPPORT

修改后的代码如下:

.....
$(eval $(call KernelPackage,net-rtl8821cs))

define KernelPackage/sunxi-disp
  SUBMENU:=$(VIDEO_MENU)
  TITLE:=sunxi-disp support
  KCONFIG:=\
	  CONFIG_DISP2_SUNXI=m \
	  #CONFIG_SUNXI_DISP2_FB_DISABLE_ROTATE=y \
	  #CONFIG_SUNXI_DISP2_FB_ROTATION_SUPPORT=n \
	  #CONFIG_SUNXI_DISP2_FB_HW_ROTATION_SUPPORT=y \
	  CONFIG_DISP2_SUNXI_BOOT_COLORBAR=n \
	  CONFIG_DISP2_SUNXI_DEBUG=y \
	  CONFIG_DISP2_SUNXI_COMPOSER=n \
	  CONFIG_DISP2_SUNXI_SUPPORT_SMBL=y \

.....

2.硬件旋转需要确保G2D驱动已经使能

make kernel_menuconfig
	Device Drivers  --->
		<*> SUNXI G2D Driver
		[*]   sunxi g2d mixer module
		[*]   sunxi g2d rotate module

3.打开显示驱动旋转支持

make kernel_menuconfig
	Device Drivers  --->
		Graphics support  ---> 
			Frame buffer Devices  --->
				 Video support for sunxi  --->
				 	DISP2 Framebuffer rotation support (Disable rotation)  --->
				 		 ( ) Disable rotation
						 ( ) Software rotation support  	(不要选这个,方案未支持)
						 (X) Hardware(G2D) rotation support (选择G2D旋转)

4.dts配置

board.dts 和 uboot-board.dts同步修改.

&disp{
    .....
    disp_rotation_used       = <1>;/* 使能旋转功能 */
    degree0                  = <3>; /* X:screen index; 0:0 degree; 1:90 degree; 3:270 degree */
    fb0_width                = <1280>;/*fb 的长宽交换*/
    fb0_height               = <800>;
    .....
};

5.旋转后framebuffer编程是需要注意,旋转后的buffer不会直接显示到屏幕上, 需要在应用刷屏的地方调用FBIOPAN_DISPLAY接口.同步旋转后的buffer到LCD上.

以修改公版旋转的GUI刷屏示例:

路径:package/gui/littlevgl-6/lv_drivers/display/fbdev.c

void fbdev_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * color_p){
....
    lv_disp_flush_ready(drv);
    ioctl(fbfd, FBIOPAN_DISPLAY, &vinfo); /*函数最后,在刷屏函数后面,调用 FBIOPAN_DISPLAY 接口*/
}

软件旋转LVGL UI配置

公版上lvgl-6上做了UI旋转算法, 软件交换打点位置达成旋转. 该做法纯软件, 不需要改动其他配置, 在原来未旋转的基础上,修改LV_UI_ROTATE_DIRECTION宏即可.

路径:lv_conf.h

/* UI rotation:
* - 0:  no rotate
* - 1:  90°
* - 2: 180°
* - 3: 270°
*/

#define LV_UI_ROTATE_DIRECTION     0

视频旋转配置

视频旋转有 解码器旋转 和 G2D旋转 两种方式.

1.编码器旋转(VE),使用TPlayerSetRotate接口,注意该接口不支持LBC模式, 不支持H265视频旋转.具体请参考<Tina Linux 多媒体解码>文档.

函数原型: int TPlayerSetRotate(TPlayer* p,TplayerVideoRotateTyperotateDegree);
功能 设置视频旋转的角度
参数 p: 通过 TPlayerCreate 函数创建的 TPlayer 指针; rotateDegree: 视频旋转的角度
返回值 成功返回 0,失败返回-1。
调用说明 这个函数需要在 TPlayerSetDataSource() 函数之前调用

2.G2D旋转:

方式一:(1)TPlayerSetG2dRotate()接口使用G2D做旋转。该接口在TPlayerCreate()之后调用。

方式二:(2)直接在在配置文件中配置默认旋转,文件路径:

package/allwinner/tina_multimedia/tplayer/configs/f133_linux_cedarx.conf

48 #use g2d module to rotate the video. notice:F133/R528
49 g2d_rotate_flag = 1
50 g2d_rotate_degree = 1

图片旋转

待支持.

原贴链接:https://bbs.aw-ol.com/topic/2600/

标签:D1s,全志,旋转,G2D,Tina,rotation,DISP2,CONFIG,SUNXI
From: https://blog.51cto.com/u_15380233/5872819

相关文章

  • 全志t507 tp2815 采集摄像头视频 app应用demo ffmpeg5将NV21转rgb
      //摄像头驱动层输出的数据流是NV21格式,此处是使用ffmpeg5将nv21转为rgb并输出到屏幕上#include<stdio.h>#include<pthread.h>#include<unistd.h>#inc......
  • 创龙AD+全志T3 TL7606I模块测试
    前言本文主要介绍基于全志科技T3(ARMCortex-A7)处理器的8/16通道AD采集开发案例,使用核芯互联CL1606/CL1616AD芯片,亦适用于ADIAD7606/AD7616。CL1606/CL1616与AD7606/AD......
  • 创龙AD+全志T3 ad_display 开发案例
    前言本文主要介绍基于全志科技T3(ARMCortex-A7)处理器的8/16通道AD采集开发案例,使用核芯互联CL1606/CL1616AD芯片,亦适用于ADIAD7606/AD7616。CL1606/CL1616与AD7606/AD......
  • Destination folder must be accessible
    问题Ecplise拖入文件夹项目时提示错误:Destinationfoldermustbeaccessible解决导入的时候包不能直接拖入,要使用import导入,选择File->Import->Select->General->Exi......
  • Qt on Mac 开发之 Qt在Retina屏幕上的那些问题
    目录​​1、解决Qt在Retina屏幕上的图片模糊问题​​​​2、解决Qt在Retina屏幕上的密度问题​​​​1.iOS​​​​2.Android​​​​3.视网膜MacBook​​​​3、解决Qt......
  • Istio DestinationRule
    DestinationRule配置要点DestinationRule用于配置路由完成之后的应用于服务的流量策略,即配置如何将流量调度至上游端点,同时也是为VirtualService的Destination指定的目标......
  • 全志V853(V系列产品)Tina SDK LCD小分辨率DCLK设置问题
    1.主题TinaSDKLCD小分辨率DCLK设置2.问题背景产品:带显示屏的产品硬件:V系列+DE软件:TinaSDK其他:使用小分辨的LCD显示频,根据LCD的时序算出的DLCK小于48MHz3.具体表......
  • 基于全志D1-H哪吒的 自动寻路小车-附源码
    本文内容为【玄铁杯第二届RISC-V应用创新大赛】作业作者:智航追迹队原文链接:https://occ.t-head.cn/community/post/detail?spm=a2cl5.14300636.0.0.429d180fr0b8Om&id=409......
  • 全志R528 系统繁忙时触摸屏I2C报错问题。
    最近调试项目时遇到一个奇怪的问题。当linux 系统繁忙时(开机,关机或APP繁忙等情况),此时按下触摸屏后,I2C总线就会报错,TP读数据失败,之后内存报错,重启。root@TinaLinux:/#......
  • 全志 Tina Linux 存储介质切换:eMMC,SPI NAND,SPI NOR,SD Card,SD NAND
    存储切换方法SDK切换存储介质需要修改board.dts、sys_config.fex、内核配置、TINA系统配置。另外,在spinor存储介质下,通过u-boot-sun8iw21p1.bin进行烧录,u-boot-spinor-s......