导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页
    1. 主页
    2. anruliu
    3. 帖子
    A
    • 资料
    • 关注 0
    • 粉丝 3
    • 我的积分 4803
    • 主题 0
    • 帖子 87
    • 最佳 11
    • 群组 0

    anruliu 发布的帖子

    • 回复: T113-S3 驱动屏幕显示问题

      @aw20221130 怎么配置成横屏的,一般应用上可以用g2d进行旋转

      发布在 GUI
      A
      anruliu
    • 回复: A133 LCD fps异常,越来越小

      @wyz1226 这个不是问题,画面更新(如快速滑动界面)的时候,这个fps会上去的,或者你把cpu调频模式改成performance也可以

      发布在 Linux
      A
      anruliu
    • 回复: Tina Linux i8080 屏幕接线问题

      lcd te脚可以接到soc的vsync脚

      发布在 Linux
      A
      anruliu
    • 回复: 关于全志disp

      @yuwei 在 关于全志disp 中说:

      DISP_LAYER_SET_CONFIG

      主要是送显示的buf管理不一样
      DISP_LAYER_SET_CONFIG 直接传送显示的buf物理地址,上层释放buf后,图层没有关闭可能会有一些异常
      DISP_LAYER_SET_CONFIG2 需要传iommu申请的fd,disp驱动中会对这个fd增加一个引用计数,上层释放这个buf后,图层没有关闭情况下,buf是没有释放的,等到关闭图层后,减少引用计数才会释放buf

      发布在 Linux
      A
      anruliu
    • 回复: LVDS显示有锯齿

      @godzhou0909 寄存器和UI与视频层没有关系,建议把摄像头数据dump出来看下

      发布在 H/F/TV Series
      A
      anruliu
    • 回复: LVDS显示有锯齿

      @godzhou0909 不确定,你看下芯片user manual 的tcon部分,LCD_LVDS_EVEN_ODD_DIR寄存器修改下有没有用

      发布在 H/F/TV Series
      A
      anruliu
    • 回复: LVDS显示有锯齿

      @godzhou0909 你LVDL0和LVDL1接反了吧

      发布在 H/F/TV Series
      A
      anruliu
    • 回复: LVGL8打开G2D报错

      @waterworld 大概率是lvgl中用的g2d头文件与内核中的g2d头文件有些差异导致

      lv_drivers/display/sunxig2d.h
      
      发布在 GUI
      A
      anruliu
    • 回复: [D1] Lichee RV 86 Panel color issue

      @konstantint You can try

      [lcd0]
       lcd_rb_swap = <1>;
      
      发布在 GUI
      A
      anruliu
    • 回复: 请问 H616的安卓10(TV) 有办法吧屏幕旋转90度嘛

      @godphp 可以检查下有没有这个配置

      # set primary display orientation to 0
      PRODUCT_PROPERTY_OVERRIDES += \
          ro.surface_flinger.primary_display_orientation=ORIENTATION_90
      
      发布在 H/F/TV Series
      A
      anruliu
    • 回复: D1-H的SDK内的GUI框架有flutter?官方镜像支持flutter开发gui吗?

      @whycanservice flutter也支持纯软件渲染,可以在arm上运行,但是不支持rv

      发布在 MR Series
      A
      anruliu
    • 回复: d1 lvds dual

      @sogen 首先在dts中配置lvds1的gpio,大致是下面这样的

      			lvds1_pins_a: lvds1@0 {
      				pins  = "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", "PD18", "PD19";
      				function = "lvds1";
      				drive-strength = <30>;
      				bias-disable;
      			};
      
      			lvds1_pins_b: lvds1@1 {
      				pins  = "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", "PD18", "PD19";
      				function = "io_disabled";
      				drive-strength = <30>;
      				bias-disable;
      			};
      

      然后在dts中配置dual lvds,主要是lcd_lvds_if与pinctrl-0

      &lcd0 {
      	lcd_used            = <1>;
      
      	lcd_driver_name     = "default_lcd";
      	lcd_backlight       = <50>;
      	lcd_if              = <3>;
      
      	lcd_x               = <640>;
      	lcd_y               = <2560>;
      	lcd_width           = <150>;
      	lcd_height          = <94>;
      	lcd_dclk_freq       = <117>;
      
      	lcd_pwm_used        = <0>;
      	lcd_pwm_ch          = <7>;
      	lcd_pwm_freq        = <50000>;
      	lcd_pwm_pol         = <1>;
      	lcd_pwm_max_limit   = <255>;
       
      	lcd_hbp             = <40>;
      	lcd_ht              = <720>;
      	lcd_hspw            = <20>;
      	lcd_vbp             = <20>;
      	lcd_vt              = <2600>;
      	lcd_vspw            = <10>;
      	
      	lcd_lvds_if         = <1>;
      	lcd_lvds_colordepth = <0>;	
      	lcd_lvds_mode       = <0>;
      	lcd_frm             = <0>;
      	lcd_hv_clk_phase    = <0>;
      	lcd_hv_sync_polarity= <0>;
      	lcd_gamma_en        = <0>;
      	lcd_bright_curve_en = <0>;
      	lcd_cmap_en         = <0>;
      
      	deu_mode            = <0>;
      	lcdgamma4iep        = <22>;
      	smart_color         = <90>;
      	
              pinctrl-0 = <&lvds0_pins_a &lvds1_pins_a>;
              pinctrl-1 = <&lvds0_pins_b &lvds1_pins_b>;	
        
      };
      
      发布在 MR Series
      A
      anruliu
    • 回复: A133适配AMOLED屏幕,LCD时序参数过小导致无法进入U-Boot

      @ceoifung

      lcd_dclk_freq = <38>;
      lcd_x = <720>;
      lcd_y = <800>;

      lcd_hbp = <52>;
      lcd_ht = <774>;
      lcd_hspw = <32>;
      lcd_vbp = <16>;
      lcd_vt = <828>;
      lcd_vspw = <4>;

      不行的话,lcd_ht以2为挡位慢慢网上加试试

      发布在 其它全志芯片讨论区
      A
      anruliu
    • 回复: LVGL如何显示摄像头采集的数据?

      @cruise33 要应用你设置的风格啊

      lv_obj_add_style(lv_scr_act(), &style_scr_act, 0);
      
      发布在 V Series
      A
      anruliu
    • 回复: LVGL如何显示摄像头采集的数据?

      @cruise33 用virvi2vo显示摄像头图像后,再加上LVGL,显示就被LVGL覆盖了,是因为UI是在最上层,需要挖空摄像头部分的数据,可以清空framebuffer后,设置背景为透明的,参考如下代码

              if (lv_obj_has_state(btn, LV_STATE_CHECKED)) {
                  lv_label_set_text(label, "Stop");
                  lv_disp_get_default()->driver->screen_transp = 1;
                  lv_disp_set_bg_opa(lv_disp_get_default(), LV_OPA_TRANSP);
                  /* Empty the buffer, not emptying will cause the UI to be opaque */
                  lv_memset_00(lv_disp_get_default()->driver->draw_buf->buf_act,
                          lv_disp_get_default()->driver->draw_buf->size
                                  * sizeof(lv_color32_t));
                  lv_style_set_bg_opa(&style_scr_act, LV_OPA_TRANSP);
                  lv_obj_report_style_change(&style_scr_act);
              } else {
                  lv_label_set_text(label, "Play");
                  lv_disp_get_default()->driver->screen_transp = 0;
                  lv_disp_set_bg_opa(lv_disp_get_default(), LV_OPA_COVER);
                  lv_style_set_bg_opa(&style_scr_act, LV_OPA_COVER);
                  lv_obj_report_style_change(&style_scr_act);
              }
      

      并且lv_conf.h中#define LV_COLOR_SCREEN_TRANSP 1

      发布在 V Series
      A
      anruliu
    • 回复: A133适配AMOLED屏幕,LCD时序参数过小导致无法进入U-Boot

      @ceoifung hfp = 654-600-52=2,屏厂给的hfp怎么这么小

      发布在 其它全志芯片讨论区
      A
      anruliu
    • 回复: A133适配AMOLED屏幕,LCD时序参数过小导致无法进入U-Boot

      @ceoifung 贴出你的dts lcd0部分

      发布在 其它全志芯片讨论区
      A
      anruliu
    • 回复: A133适配AMOLED屏幕,LCD时序参数过小导致无法进入U-Boot

      @ceoifung 看这个
      @anruliu 在 D1H支持1920*1200分辨率,但是1080*1920竖屏支持吗 中说:

      @xiaoxiao

      你是怎么互换的,如果计算出现负数肯定进不去

      lcd_x = 屏厂给的实际的x
      lcd_hbp = 屏厂给的实际的hbp + 屏厂给的实际的hsync
      lcd_ht = 屏厂给的实际的lcd_h + 屏厂给的实际的hsync + 屏厂给的实际的hbp + 屏厂给的实际的hfp
      lcd_hspw = 屏厂给的实际的hsync
      
      lcd_y = 屏厂给的实际的y
      lcd_vpp = 屏厂给的实际的vbp + 屏厂给的实际的vsync
      lcd_vt = 屏厂给的实际的lcd_y + 屏厂给的实际的vsync + 屏厂给的实际的vbp + 屏厂给的实际的vfp
      lcd_vspw = 屏厂给的实际的vsync
      
      发布在 其它全志芯片讨论区
      A
      anruliu
    • 回复: tina d1 开机屏上下反

      @chdeng1 看你用的什么UI框架

      发布在 MR Series
      A
      anruliu
    • 回复: T113-pro如何替换开机启动Logo

      @techxie123 device/config/chips/芯片/configs/方案/linux-5.4/sys_partition.fex中boot-resource分区

      发布在 Linux
      A
      anruliu
    • 回复: T113-pro如何替换开机启动Logo

      @techxie123 直接把分区表中的boot-resource分区注释掉就可以了,这个分区存的是开机logo图标

      发布在 Linux
      A
      anruliu
    • 回复: f133 tina4.0 sdk,发现一个很奇怪的现象,大佬们知道的帮忙解答一下,非常感谢

      @wyljkl 检查dts其他地方有没有复用这些gpio

      发布在 MR Series
      A
      anruliu
    • 回复: tina d1 开机屏上下反

      @chdeng1 tslib印象中不带旋转功能,你想要tp旋转,有几种方式。
      1、tp驱动自己旋转,如drivers/input/touchscreen/gt9xxnew/gt9xx.c中revert_x_flag,revert_y_flag,exchange_x_y_flag
      2、使用ui框架中的tp旋转,如果用的是lvgl,那么设置disp_drv.rotated = rotated;后,lvgl会自动旋转tp坐标

      发布在 MR Series
      A
      anruliu
    • 回复: f133 tina4.0 sdk,发现一个很奇怪的现象,大佬们知道的帮忙解答一下,非常感谢

      @wyljkl 在 f133 tina4.0 sdk,发现一个很奇怪的现象,大佬们知道的帮忙解答一下,非常感谢 中说:

      reset脚和lcd_en

      上面说过了,dts中reset脚和lcd_en的默认电平是不是配置为低电平了?因为内核disp驱动初始化的时候会获取gpio并设置默认电平。

      发布在 MR Series
      A
      anruliu
    • 回复: f133 tina4.0 sdk,发现一个很奇怪的现象,大佬们知道的帮忙解答一下,非常感谢

      @wyljkl 用示波器量下lcd各个脚,如reset是否跌落,电源是否有变化

      发布在 MR Series
      A
      anruliu
    • 回复: f133 tina4.0 sdk,发现一个很奇怪的现象,大佬们知道的帮忙解答一下,非常感谢

      @wyljkl uboot开屏后,kernel不会再走开屏流程,只会保存一些状态,因为uboot已经开过屏了,如果uboot开屏后,kernel初始化disp阶段屏黑了,首先可以确定背光是否存在,到内核后能否显示colorbar,还有如上面说的lcd_gpio_0和lcd_gpio_1默认电平是否配置为高电平。

      内核想要重新初始化屏,可以单独休眠唤醒lcd测试下能否恢复显示

      mount -t debugfs none /sys/kernel/debug
      cd /sys/kernel/debug/dispdbg
      //休眠
      echo suspend > command; echo disp0 > name; echo 1 > start
      //唤醒
      echo resume > command; echo disp0 > name; echo 1 > start
      
      // colorbar彩条
      echo 1 > /sys/class/disp/disp/attr/colorbar
      
      发布在 MR Series
      A
      anruliu
    • 回复: r328想要使用lcd7789驱动,但配置里面打不开

      @chris98 你要先确认lcd7789是什么协议驱动的lcd,r328没有disp模块,不能驱动rgb,lvds,mipi dsi等协议的lcd

      发布在 其它全志芯片讨论区
      A
      anruliu
    • 回复: tina d1 开机屏上下反

      @chdeng1 可以拍照看下是怎么相反的,如果只是需要旋转屏幕的功能,可以在应用层旋转。

      RGB的LCD一般是通过default_pannel.c点亮,去掉当然不行了。一般uboot和kernel显示开机log,可以自己把开机log旋转后再打包放进去,应用层的旋转一般是用UI框架来旋转。如果是用lvgl,那么就可以选上LVGL8_USE_SUNXIFB_G2D_ROTATE 这个配置,应用初始化的时候调用sunxifb_init(rotated),rotated就是要旋转的角度

      发布在 MR Series
      A
      anruliu
    • 回复: D1H支持1920*1200分辨率,但是1080*1920竖屏支持吗

      @xiaoxiao

      你是怎么互换的,如果计算出现负数肯定进不去

      lcd_x = 屏厂给的实际的x
      lcd_hbp = 屏厂给的实际的hbp + 屏厂给的实际的hsync
      lcd_ht = 屏厂给的实际的lcd_h + 屏厂给的实际的hsync + 屏厂给的实际的hbp + 屏厂给的实际的hfp
      lcd_hspw = 屏厂给的实际的hsync
      
      lcd_y = 屏厂给的实际的y
      lcd_vpp = 屏厂给的实际的vbp + 屏厂给的实际的vsync
      lcd_vt = 屏厂给的实际的lcd_y + 屏厂给的实际的vsync + 屏厂给的实际的vbp + 屏厂给的实际的vfp
      lcd_vspw = 屏厂给的实际的vsync
      
      发布在 MR Series
      A
      anruliu
    • 回复: D1H支持1920*1200分辨率,但是1080*1920竖屏支持吗

      @xiaoxiao 1128-52-1080 = -4,变成负数了啊,参数有问题

      发布在 MR Series
      A
      anruliu
    • 回复: D1H支持1920*1200分辨率,但是1080*1920竖屏支持吗

      @xiaoxiao
      1920x1200=2304000‬ > 1080x1920=2073600,所以是支持这个分辨率的,开机卡死可能是配置有问题,或者是有bug,可以把board.dts与开机log发出来看下

      发布在 MR Series
      A
      anruliu
    • 回复: Tina的lvgl是不是不支持图片解码

      @ttg2577 8.1.0的版本已经内置了,需要更新到8.1.0的版本

      发布在 MR Series
      A
      anruliu
    • 回复: Tina的lvgl是不是不支持图片解码

      @ttg2577 bmp、png、jpg均支持解码,可以看lvgl的官方文档

      发布在 MR Series
      A
      anruliu
    • 回复: 哪吒单独编译lvgl

      @ttg2577 是的,网上搜一下makefile -D就知道怎么用了

      发布在 MR Series
      A
      anruliu
    • 回复: 哪吒单独编译lvgl

      @ttg2577 加入编译参数
      -DUSE_SUNXIFB_DOUBLE_BUFFER
      -DUSE_SUNXIFB_G2D

      发布在 MR Series
      A
      anruliu
    • 回复: lvgl 使用g2d加速性能问题

      @westonye

      1、首先LV_USE_PERF_MONITOR统计的不是真实的fps,lvgl可以没有限制的一直刷画面,看起来帧率的确高,但是滑动场景下,比较容易看到画面撕裂,不想看到撕裂就只能开双缓冲,像QT,MiniGUI这些框架也是如此,默认是没有用上双缓冲的,可以传入下面的宏看fps打印

      TARGET_CFLAGS+=-DLV_USE_SUNXIFB_DEBUG
      

      2、开启LVGL8_USE_SUNXIFB_DOUBLE_BUFFER后,可以解决画面撕裂的问题,但是需要做整屏buffer的拷贝,这里会比较耗时

      3、开启LVGL8_USE_SUNXIFB_G2D后,就是把整屏buffer的拷贝从用cpu拷贝,切换到g2d拷贝

      4、开启LVGL8_USE_SUNXIFB_G2D_ROTATE后,就可以用G2D旋转整个屏幕,会比原来的CPU旋转快很多

      5、G2D的优势在于blend,scale,rotate,lv_g2d_test在使能g2d的场景下,会传入宏

      TARGET_CFLAGS+=-DLV_USE_SUNXIFB_G2D_FILL \
      -DLV_USE_SUNXIFB_G2D_BLEND \
      -DLV_USE_SUNXIFB_G2D_BLIT \
      -DLV_USE_SUNXIFB_G2D_SCALE
      

      6、lv_demo_benchmark、lv_example不能使能第5步的宏,因为其中的图片不是申请的物理连续内存,不能使用g2d来进行blend等功能,但是可以使能LVGL8_USE_SUNXIFB_DOUBLE_BUFFER,LVGL8_USE_SUNXIFB_G2D,LVGL8_USE_SUNXIFB_G2D_ROTATE来加速双缓冲情况下的拷贝与屏幕旋转功能,但是整体还是单缓冲的帧率要高

      发布在 V Series
      A
      anruliu
    • 回复: OLED的MIPI屏幕实时亮度改变问题

      @tevet
      中断中不要加入太多打印,读取和写寄存器前后要调用dsi_read_mode_en

      static s32 lcd_set_oled_bright(u32 sel,u32 bright)
      {
      	s32 ret = 0;
      	u8 result[16] = {0};
      	s32 nump = 1;
      
              dsi_read_mode_en(0, 1);
      
      	ret = sunxi_lcd_dsi_dcs_read(0, 0x54, result,&nump);
      
      	dsi_dcs_wr_1para(sel, 0xFE, 0x00);	 //{ 0xFE,1,{0x00} },
      	dsi_dcs_wr_1para(sel, 0x51, 0x50);
      
               dsi_read_mode_en(0, 0);
      	return 0;	
      }
      

      中断处理函数中,调用背光设置的代码要放在前面,满足cur_line < 2,并且尽量减少这里面的代码调用

      if (cur_line < 2 && panel_extend_modify_oledbright == 1 && lcdp->lcd_panel_fun.set_oled_bright) {
               lcdp->lcd_panel_fun.oled_set_bright(lcd->disp, fix_bright);
      }
      

      这样修改后应该就不用再重新触发中断

      发布在 MR Series
      A
      anruliu
    • 回复: OLED的MIPI屏幕实时亮度改变问题

      @tevet 可以翻一下lcd调试说明文档,里面有esd这个章节,显示驱动中也有esd相关代码,做esd就是在中断的消隐区间去读mipi的寄存器,判断屏的状态。可以读那么就可以写了

      发布在 MR Series
      A
      anruliu
    • 回复: OLED的MIPI屏幕实时亮度改变问题

      @tevet 发送命令要处于LP模式,在送帧(HP模式)的时候去切换模式肯定会导致黑屏的,需要在中断的消隐区间去设置背光

      发布在 MR Series
      A
      anruliu
    • 回复: minigui使用g2d加速模块,出错

      @jhj001 minigui中直接引用g2d_driver.h即可,不过某些结构体可能不一样,要改下minigui中的代码

      发布在 MR Series
      A
      anruliu
    • 回复: minigui使用g2d加速模块,出错

      @jhj001 可以检查下minigui中用的g2d头文件是否与内核中的头文件一致

      发布在 MR Series
      A
      anruliu
    • 回复: 请教关于D1-H_Tina_open V2.0的LCD驱动未加载问题

      @dyd2022 这是开机logo的大小,你替换一张开机logo和你lcd匹配的分辨率即可

      发布在 MR Series
      A
      anruliu
    • 回复: 求教,关于LicheeRV 86 Panel在tina2.0配置lcd的问题

      @lbuque 开机过程中在uboot初始化lcd后,kernel是不是走lcd初始化流程的,进入内核后,休眠唤醒一下lcd,看看pin脚状态有没有变化

      mount -t debugfs none /sys/kernel/debug
      cd /sys/kernel/debug/dispdbg
      //休眠
      echo suspend > command; echo disp0 > name; echo 1 > start
      //唤醒
      echo resume > command; echo disp0 > name; echo 1 > start
      
      发布在 MR Series
      A
      anruliu
    • 回复: 求教,关于LicheeRV 86 Panel在tina2.0配置lcd的问题

      @lbuque lcd rgb gpio是在你们屏驱动st7701s_rgb中调用sunxi_lcd_pin_cfg(sel, 1);初始化的,可以跟下调用流程

      发布在 MR Series
      A
      anruliu
    • 回复: nv3052cRGB 720*720屏出现花屏,颜色失真,请问是什么原因

      @fans168168 可以检查下RGB各颜色pin脚是否有复用,导致RGB有些脚没有输出

      发布在 Linux
      A
      anruliu
    • 回复: 求助:关于tina tplayer库

      @mhcsoft 播放的时候,可以执行以下命令,看图层是否设置正确

      cat /sys/class/disp/disp/attr/sys
      
      发布在 Linux
      A
      anruliu
    • 回复: t113 gt11触摸驱动 打包报错

      @jr_online 确认下内核有没有配置CONFIG_INPUT_SENSORINIT

      发布在 MR Series
      A
      anruliu
    • 回复: T113奇怪的屏幕刷新问题

      @peter_yyp 不是上层应用,是内核代码dev_disp.c,dev_fb.c

      发布在 其它全志芯片讨论区
      A
      anruliu
    • 回复: T113奇怪的屏幕刷新问题

      @peter_yyp 看起是fb0有开cache,但是写完一帧数据后,没有刷cache导致的,检查内核申请fb时看看是不是带了cache标志

      发布在 其它全志芯片讨论区
      A
      anruliu
    • 回复: 【已解决】D1s 调试 MIPI LCD 不亮

      @yuzukitsuru
      调用多次lcd_open_flow是正常的,是在u-boot-2018/drivers/video/sunxi/disp2/disp/dev_disp.c的drv_lcd_open_callback函数中bsp_disp_lcd_get_open_flow调用的,主要是为了获取lcd_power_on、lcd_bl_open这些函数句柄。

      没有背光还是要检查供电情况,另外uboot的显示用的是uboot-board.dts,需要注意相关配置有没有配好。

      发布在 MR Series
      A
      anruliu
    • 回复: lvgl 桌面系统移植问题

      @yelong98 以package/gui/littlevgl-8/lv_examples为例

      package/gui/littlevgl-8/lv_examples/Makefile是openwrt中应用包的,主要负责资源解压与传递交叉编译配置
      package/gui/littlevgl-8/lv_examples/src/Makefile是实际编译时用到的Makefile,其中部分变量会被openwrt传递进来的值替换

      把相关文件复制到src目录,可参考下面的流程
      define Build/Prepare
      $(INSTALL_DIR) $(PKG_BUILD_DIR)/
      $(CP) ./src $(PKG_BUILD_DIR)/
      $(CP) ./../lvgl $(PKG_BUILD_DIR)/src/
      $(CP) ./../lv_drivers $(PKG_BUILD_DIR)/src/
      $(CP) ./../lv_demos $(PKG_BUILD_DIR)/src/
      endef

      在src目录下执行make命令即可,下面是交叉编译需要传递的变量
      define Build/Compile
      $(MAKE) -C $(PKG_BUILD_DIR)/src
      ARCH="$(TARGET_ARCH)"
      AR="$(TARGET_AR)"
      CC="$(TARGET_CC)"
      CXX="$(TARGET_CXX)"
      CFLAGS="$(TARGET_CFLAGS)"
      LDFLAGS="$(TARGET_LDFLAGS)"
      INSTALL_PREFIX="$(PKG_INSTALL_DIR)"
      all
      endef

      发布在 Linux
      A
      anruliu
    • 回复: 请教D1S UI横屏如何配置?

      @lovexulu
      参考
      https://bbs.aw-ol.com/topic/405/第一次调mipi接口的显示屏-都是什么套路?_=1646643614440

      或者
      https://bbs.aw-ol.com/topic/1080/在tinav2-2-d1s上面搞lvgl8去调用g2d旋转让lvgl8的软件旋转再见/5?_=1646643614443

      发布在 MR Series
      A
      anruliu
    • 回复: 请问 D1 的硬件DE 0 / 1 对应的就是 SCREEN 0 / 1 吗?

      @uuuuid 是的

      发布在 MR Series
      A
      anruliu
    • 回复: 在TinaV2.2 D1s上面搞LVGL8去调用G2D旋转让LVGL8的软件旋转再见

      @tevet 不用这么麻烦的,board.dts的旋转配置是用内核驱动代码来旋转的,不用修改,还原回去即可,下面这种方式是在应用层进行旋转

      选上lvgl-8.0.1 use sunxifb g2d rotate之后,如果需要旋转,修改lv_examples/src/main.c即可

      uint32_t rotated = LV_DISP_ROT_NONE;
      
      //这句代码会传递旋转角度到引擎中
      sunxifb_init(rotated);
      

      改成你想要的旋转角度

       typedef enum {
           LV_DISP_ROT_NONE = 0,
           LV_DISP_ROT_90,
           LV_DISP_ROT_180,
           LV_DISP_ROT_270
       } lv_disp_rot_t;
      

      这种旋转方式,是在lvgl中进行旋转,并且tp的触摸也会旋转

      发布在 MR Series
      A
      anruliu
    • 回复: 哪吒板上用display显示yuv格式数据直接蓝屏

      @honey130602 可以用package/utils/yuview来测试显示一张yuv图片。另外蓝屏的时候可以执行cat /sys/class/disp/disp/attr/sys看看图层信息哪里有异常。

      发布在 MR Series
      A
      anruliu
    • 回复: 请问怎么把2D加速整合到Qt?

      @lyr2021 全屏buffer只是相对于lvgl的,送给LCD始终都是一个buffer,在滑动方向和LCD刷新方向不一致情况下比较能明显看到撕裂,可以参考https://os.51cto.com/article/646550.html

      发布在 MR Series
      A
      anruliu
    • 回复: 请问怎么把2D加速整合到Qt?

      @lyr2021
      1、首先LV_USE_PERF_MONITOR统计的不是真实的fps,lvgl可以没有限制的一直刷画面,看起来帧率的确高,但是滑动场景下,比较容易看到画面撕裂,不想看到撕裂就只能开双缓冲,像QT,MiniGUI这些框架也是如此,默认是没有用上双缓冲的
      2、开启LVGL8_USE_SUNXIFB_DOUBLE_BUFFER后,可以解决画面撕裂的问题,但是需要做整屏buffer的拷贝,这里会比较耗时
      3、开启LVGL8_USE_SUNXIFB_G2D后,就是把整屏buffer的拷贝从用cpu拷贝,切换到g2d拷贝
      4、开启LVGL8_USE_SUNXIFB_G2D_ROTATE后,就可以用G2D旋转整个屏幕,会比原来的CPU旋转快很多
      5、G2D的优势在于blend,scale,rotate,当前版本没有完全实现这些接口,也体现不出来

      发布在 MR Series
      A
      anruliu
    • 回复: 全志D1s 使用 tplayerdemo播放 mp4视频出现错误。请各位大佬们帮着看看。问题出在什么哪?谢谢!

      @lmjlzyljy 很明显报内存申请失败的log了,播放前可以执行free看剩余内存多少

      发布在 MR Series
      A
      anruliu
    • 回复: 请问 D1 的硬件DE 0 / 1 对应的就是 SCREEN 0 / 1 吗?

      @memory 可以大致这么理解,一般de0对应tcon0对应screen 0,de1对应tcon1对应screen 1

      发布在 MR Series
      A
      anruliu
    • 回复: 第一次调MIPI接口的显示屏,都是什么套路?

      @xiaochusheng 应该不用打补丁,配置好,选上应用测试即可

      发布在 MR Series
      A
      anruliu
    • 回复: 第一次调MIPI接口的显示屏,都是什么套路?

      @xiaochusheng 这里分享一个竖屏转成横屏的方法,这种方式会用g2d硬件来旋转,注意这种方法只能修改FB0的旋转角度,视频播放不受影响,并且开机后到内核可能不会显示开机logo,因为需要调用ioctl FBIOPAN_DISPLAY才能显示,可以选上Utilities-->directfb-examples,板子上执行df_andi测试

      2a067936-fe9a-4d29-b087-55e17c582124-lALPBGY18vRtHcPNAWPNAro_698_355.png

      fc961af1-d30b-4c73-ae29-f72461556bc3-lALPBG1Q8D4GzvfNAY_NA6c_935_399.png

      发布在 MR Series
      A
      anruliu
    • 回复: 终于在D1哪吒上面把跑InfoNES framebuffer 模拟器跑起来了

      @memory frambuffer 默认是 ARGB8888 格式的,board.dts中的fb0_format可以配置,0是ARGB8888,8是RGB888,10是RGB565

      发布在 MR Series
      A
      anruliu
    • 回复: 请问 screen0/1 与 fb0/1 怎么理解? 有什么差别呢?

      @memory
      修改linux-5.4/drivers/video/fbdev/sunxi/disp2/disp/dev_fb.c

      #define SUNXI_FB_MAX 1
      

      改成

      #define SUNXI_FB_MAX 2
      

      这样fb1就会生成出来

      在display_fb_request函数中

      for (sel = 0; sel < num_screens; sel++) 
      

      是判断显示到哪个screen

      建议不熟悉驱动不要修改,修改后可能出现其他异常

      发布在 MR Series
      A
      anruliu
    • 回复: 请问 screen0/1 与 fb0/1 怎么理解? 有什么差别呢?

      @memory
      screen0/1和board.dts中定义的screen0/1一致,默认screen0为lcd,screen1为hdmi
      fb0默认显示在screen0上,fb1目前没有使用

      发布在 MR Series
      A
      anruliu
    • 回复: MCU通过以太网(UDP)发送图片到哪吒开发板进行处理

      @aldfaaa 参考下面的链接
      https://bbs.aw-ol.com/topic/77/d1设置hdmi分辨率

      按照帖子最后修改uboot-board.dts中的参数即可

      发布在 MR Series
      A
      anruliu
    • 回复: MCU通过以太网(UDP)发送图片到哪吒开发板进行处理

      @aldfaaa 显示的demo是有的

      显示一张bmp/jpg/png的demo在package/utils/fbviewer路径下,命令是

      fbviewer /mnt/UDISK/xx.bmp
      

      显示一张nv21数据的demo在package/utils/yuview,yuview中是的代码是最简单的调用显示接口显示一张裸数据的示例,命令如下

      yuview -format nv21 -size 640 480 -buffer_num 1 -file /mnt/UDISK/pic_nv21_640x480.dat
      
      发布在 MR Series
      A
      anruliu
    • 回复: 请问哪吒 D1 开发板拔插 HDMI 显示器, 提示sink do not support this mode 是什么问题? 换了两台显示器了.

      @tigger /sys/devices/virtual/hdmi/hdmi/attr是hdmi的调试节点,可以在这里看下hdmi_sink节点,正常会有类似输出

      root@TinaLinux:~# cat /sys/class/hdmi/hdmi/attr/hdmi_sink
      
      
      Video Mode:  640x480P  720x480P  720x480P  1080I60  480I  480I  1080P60  576P  576P  720P50  1080I50  576I  576I  1080P50  720P60
      
      Only Support YUV420:
      
      Also Support YUV420:
      
      Pixel Format: RGB  YUV444  YUV422
      
      Deep Color:
      
      Basic Audio Support:  YES
      
      Audio Code:  LPCM
      
      HDCP Tpye:
      
      
      发布在 MR Series
      A
      anruliu
    • 回复: D1设置hdmi分辨率

      @dianjixz @xushengrui 更新如下, dev0_output_type应该配置成4,开机默认分辨率为1920*1080

      diff --git a/configs/nezha/uboot-board.dts b/configs/nezha/uboot-board.dts
      index 793dec2..d95a320 100644
      --- a/configs/nezha/uboot-board.dts
      +++ b/configs/nezha/uboot-board.dts
      @@ -229,15 +229,15 @@
              screen1_output_scan      = <0>;
              screen1_output_aspect_ratio = <8>;
      
      -       dev0_output_type         = <1>;
      -       dev0_output_mode         = <4>;
      +       dev0_output_type         = <4>;
      +       dev0_output_mode         = <10>;
              dev0_screen_id           = <0>;
      -       dev0_do_hpd              = <0>;
      +       dev0_do_hpd              = <1>;
      
      -       dev1_output_type         = <4>;
      -       dev1_output_mode         = <10>;
      +       dev1_output_type         = <1>;
      +       dev1_output_mode         = <4>;
              dev1_screen_id           = <1>;
      -       dev1_do_hpd              = <1>;
      +       dev1_do_hpd              = <0>;
      
              def_output_dev           = <0>;
              hdmi_mode_check          = <1>;
      

      还需要注意一点是默认开机logo分辨率为800*1280,改了默认HDMI输出后,logo会显示不正常
      开机logo位于device/config/chips/d1/configs/nezha/configs/bootlogo.bmp

      发布在 MR Series
      A
      anruliu
    • 回复: D1设置hdmi分辨率

      1、关于显示不全的原因是fb0在内核显示驱动初始化的时候会申请fb0的buffer,这时就指定了fb0的分辨率,因此后面通过命令去切换成HDMI显示的时候,分辨率基本上就对应不上,修改方法有一种,就是开机的时候就指定默认HDMI输出,如下所示,修改完毕后需要重新编译uboot,在lichee/brandy-2.0/u-boot-2018目录下执行make clean && muboot

      diff --git a/configs/nezha/uboot-board.dts b/configs/nezha/uboot-board.dts
      index 793dec2..d95a320 100644
      --- a/configs/nezha/uboot-board.dts
      +++ b/configs/nezha/uboot-board.dts
      @@ -229,15 +229,15 @@
              screen1_output_scan      = <0>;
              screen1_output_aspect_ratio = <8>;
      
      -       dev0_output_type         = <1>;
      -       dev0_output_mode         = <4>;
      +       dev0_output_type         = <3>;
      +       dev0_output_mode         = <10>;
              dev0_screen_id           = <0>;
      -       dev0_do_hpd              = <0>;
      +       dev0_do_hpd              = <1>;
      
      -       dev1_output_type         = <4>;
      -       dev1_output_mode         = <10>;
      +       dev1_output_type         = <1>;
      +       dev1_output_mode         = <4>;
              dev1_screen_id           = <1>;
      -       dev1_do_hpd              = <1>;
      +       dev1_do_hpd              = <0>;
      
              def_output_dev           = <0>;
              hdmi_mode_check          = <1>;
      

      2、param参数信息中4 10分别代表DISP_OUTPUT_TYPE_HDMI和DISP_TV_MOD_1080P_60HZ,后面的参数一般不用关心,可以在linux-5.4/include/video/sunxi_display2.h看到相关宏定义

      enum disp_output_type {
          DISP_OUTPUT_TYPE_NONE = 0,
          DISP_OUTPUT_TYPE_LCD = 1,
          DISP_OUTPUT_TYPE_TV = 2,
          DISP_OUTPUT_TYPE_HDMI = 4,
          /***/
      };
      
      enum disp_tv_mode {
          DISP_TV_MOD_480I = 0,
          DISP_TV_MOD_576I = 1,
          DISP_TV_MOD_480P = 2,
          DISP_TV_MOD_576P = 3,
          DISP_TV_MOD_720P_50HZ = 4,
          DISP_TV_MOD_720P_60HZ = 5,
          DISP_TV_MOD_1080I_50HZ = 6,
          DISP_TV_MOD_1080I_60HZ = 7,
          DISP_TV_MOD_1080P_24HZ = 8,
          DISP_TV_MOD_1080P_50HZ = 9,
          DISP_TV_MOD_1080P_60HZ = 0xa,
          /***/
      
      发布在 MR Series
      A
      anruliu
    • 1 / 1