您尚未登录。

楼主 #1 2021-02-23 22:29:24

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

SSD20X直接编译lvgl7.10带双缓(附源码)

如题,上周末应晕哥邀请解决下小问题。
启明云端的群有挺多群友需要这个东西。硬件平台是7寸 1024x600 的ssd202 开发板,自带一个点菜系统的demo
这里直接打包发送网盘:

链接: https://pan.baidu.com/s/117lyj1uTXC-Rt66Co07wLA
提取码:fkk5

释放后在配置好交叉编译器的条件下可以直接make出来,可执行文件是 demossd
上传在这儿

demossd.zip

几个细节注意下:
1、注意下我的代码的Makefile 依赖 SSD20X的源代码的project文件夹,
结构是这样的:

├── LVGL7.10-SSD202
│   ├── export-ssd20x-gcc.sh
│   ├── gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf
│   ├── linux_frame_buffer
├── project

2、释放出来代码后阅读下Makefile 或者修改一下自己的结构让它可以调用到project 的目录。
3 、另外ssd20x 这个平台比较不一样, 使用fb之前要配置硬件信息,
我是无脑直接搬运来用,可以阅读一下 sstardisp.c, 我直接搬运ssd20x 开发板源码的 JpegPlayer
4、这个LVGL7.10 的lv_demo_music 被我改了些参数,下拉窗大小和原装的demo程序不一样。 我就不改回去了反正就是改着玩的。

5、注意修改双缓的缓冲区大小
要修改 /config/fbdev.ini 修改缓冲区到2倍的大小 4800x1024 (原来是4096, 不改会段错误)

FB_BUFFER_LEN = 4800


好了编译跑一下飞起来吧。

视频是跑printer demo 的效果




以下由 @哇酷小管家 从楼主百度网盘下载
------------------------------------
本站下载: LVGL7.10-linux_framebuffer-SSD202-TEVET-PACK-20210223.tar.7z (约65M)

最近编辑记录 TeveT (2021-02-23 23:48:29)

离线

#2 2021-02-24 09:17:07

wlcccccc
会员
注册时间: 2019-12-06
已发帖子: 72
积分: 67.5

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

大佬牛皮的飞起

离线

#3 2021-02-24 20:39:20

fogwizard
会员
注册时间: 2019-03-19
已发帖子: 38
积分: 18

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

在大神的热心帮助下demo跑起来了,滑动的时候几乎没有撕裂感,比单缓冲好了几条街!

离线

楼主 #4 2021-02-24 20:54:15

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

不会有撕裂的,你可以用手机超级慢动作拍一下就知道了,

fogwizard 说:

在大神的热心帮助下demo跑起来了,滑动的时候几乎没有撕裂感,比单缓冲好了几条街!

离线

#5 2021-02-25 10:11:56

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,090
积分: 1052.5

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

光双缓冲,没有vsync处理,应该还是有小概率产生撕裂吧

离线

楼主 #6 2021-02-25 10:16:58

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

嗯? 怎么理解呢,意思是,双缓冲下,在硬件disp控制器读帧过程中顿一下么, vsync机制是当前帧被使用的时候不会被填充么

达克罗德 说:

光双缓冲,没有vsync处理,应该还是有小概率产生撕裂吧

离线

#7 2021-02-25 10:50:31

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,090
积分: 1052.5

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

TeveT 说:

嗯? 怎么理解呢,意思是,双缓冲下,在硬件disp控制器读帧过程中顿一下么, vsync机制是当前帧被使用的时候不会被填充么

达克罗德 说:

光双缓冲,没有vsync处理,应该还是有小概率产生撕裂吧

就怕切缓冲buff地址时候,如果发生在读帧过程中,一样会导致画面撕裂。感觉和硬件设计和驱动程序有关,也许某些SOC硬件可以保证直接切换地址不会导致问题。
不过我看许多SOC都还是明确要求在帧中断去切缓冲。
DRM的文档有关于这个双缓冲和VSync的说明:
https://github.com/dvdhrm/docs/blob/master/drm-howto/modeset-double-buffered.c
https://github.com/dvdhrm/docs/blob/master/drm-howto/modeset-vsync.c

If you run this example, you will notice that there is almost no flickering,
* anymore. The buffers are now swapped as a whole so each new frame shows
* always the whole new image. If you look carefully, you will notice that the
* modeset.c example showed many screen corruptions during redraw-cycles.
*
* However, this example is still not perfect. Imagine the display-controller is
* currently scanning out a new image and we call drmModeSetCrtc()
* simultaneously. It will then have the same effect as if we used a single
* buffer and we get some tearing. But, the chance that this happens is a lot
* less likely as with a single-buffer. This is because there is a long period
* between each frame called vertical-blank where the display-controller does
* not perform a scanout. If we swap the buffers in this period, we have the
* guarantee that there will be no tearing. See the modeset-vsync.c example if
* you want to know how you can guarantee that the swap takes place at a
* vertical-sync.

根据这个理解,即使硬件支持任意切缓冲不会导致画面撕裂,也还是会有问题。当绘图刷新率不稳定的时候,有可能会导致掉帧现象。你可以想象在一帧的时间里,如果不在v-blank时间来切缓冲,有可能刚好错过当前这一帧的数据。所以PC游戏里一般有个选项,锁定帧刷新到显卡vsync

离线

楼主 #8 2021-02-25 11:21:53

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

高手,学习了

达克罗德 说:
TeveT 说:

嗯? 怎么理解呢,意思是,双缓冲下,在硬件disp控制器读帧过程中顿一下么, vsync机制是当前帧被使用的时候不会被填充么

达克罗德 说:

光双缓冲,没有vsync处理,应该还是有小概率产生撕裂吧

就怕切缓冲buff地址时候,如果发生在读帧过程中,一样会导致画面撕裂。感觉和硬件设计和驱动程序有关,也许某些SOC硬件可以保证直接切换地址不会导致问题。
不过我看许多SOC都还是明确要求在帧中断去切缓冲。
DRM的文档有关于这个双缓冲和VSync的说明:
https://github.com/dvdhrm/docs/blob/master/drm-howto/modeset-double-buffered.c
https://github.com/dvdhrm/docs/blob/master/drm-howto/modeset-vsync.c

If you run this example, you will notice that there is almost no flickering,
* anymore. The buffers are now swapped as a whole so each new frame shows
* always the whole new image. If you look carefully, you will notice that the
* modeset.c example showed many screen corruptions during redraw-cycles.
*
* However, this example is still not perfect. Imagine the display-controller is
* currently scanning out a new image and we call drmModeSetCrtc()
* simultaneously. It will then have the same effect as if we used a single
* buffer and we get some tearing. But, the chance that this happens is a lot
* less likely as with a single-buffer. This is because there is a long period
* between each frame called vertical-blank where the display-controller does
* not perform a scanout. If we swap the buffers in this period, we have the
* guarantee that there will be no tearing. See the modeset-vsync.c example if
* you want to know how you can guarantee that the swap takes place at a
* vertical-sync.

根据这个理解,即使硬件支持任意切缓冲不会导致画面撕裂,也还是会有问题。当绘图刷新率不稳定的时候,有可能会导致掉帧现象。你可以想象在一帧的时间里,如果不在v-blank时间来切缓冲,有可能刚好错过当前这一帧的数据。所以PC游戏里一般有个选项,锁定帧刷新到显卡vsync

离线

#9 2021-02-27 16:36:44

SigmaStarStudy
会员
注册时间: 2021-02-15
已发帖子: 34
积分: 34

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

感谢楼主指导, 终于搞定,

这一步一定要做:

5、注意修改双缓的缓冲区大小
要修改 /config/fbdev.ini 修改缓冲区到2倍的大小 4800x1024 (原来是4096, 不改会段错误)

FB_BUFFER_LEN = 4800

离线

楼主 #10 2021-02-28 12:27:52

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

哈哈哈哈,真的,搞这个需要开脑洞
不过怎么感觉你这个号是晕哥的马甲?

SigmaStarStudy 说:

感谢楼主指导, 终于搞定,

这一步一定要做:

5、注意修改双缓的缓冲区大小
要修改 /config/fbdev.ini 修改缓冲区到2倍的大小 4800x1024 (原来是4096, 不改会段错误)

FB_BUFFER_LEN = 4800

离线

#11 2021-03-01 09:40:05

armstrong
会员
注册时间: 2019-04-10
已发帖子: 225
积分: 194.5

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

达克罗德说的没错

离线

#12 2021-03-01 14:20:23

SigmaStarStudy
会员
注册时间: 2021-02-15
已发帖子: 34
积分: 34

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

感谢楼主分享,把应用程序和文件系统一起打包 rootfs.ubifs:
rootfs.ubifs.lvgl_demo(20210301).7z

u-boot下用tftp烧录:

ubi part UBI;tftp 0x20000000 rootfs.ubifs;    ubi write 0x20000000 rootfs ${filesize};reset

离线

#13 2021-03-01 14:45:27

SigmaStarStudy
会员
注册时间: 2021-02-15
已发帖子: 34
积分: 34

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

或者可以烧录这个rootfs.ubi文件: rootfs.ubifs.lvgl_demo(20210301).7z

烧录命令:

nand erase 0xf20000 0xA000000;tftp 0x20000000 rootfs.ubi;nand write 0x20000000 0xf20000 ${filesize};reset;

离线

#14 2021-03-02 12:47:48

SigmaStarStudy
会员
注册时间: 2021-02-15
已发帖子: 34
积分: 34

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

一体打包烧录固件:
ssd202-7inch-1024x600-spinand-20210302.7z

u-boot 烧录指令:

setenv serverip 192.168.1.99;setenv ipaddr 192.168.1.33;nand erase 0x0 0x8000000;tftp 0x20000000 ssd202-7inch-1024x600-spinand-20210302.bin;nand write 0x20000000 0x0 ${filesize};

或官方烧录器烧录 (非常慢,不推荐!):
2021-03-02_124657.png

离线

楼主 #15 2021-03-02 13:31:48

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

感谢大佬分享,一步到位,

SigmaStarStudy 说:

一体打包烧录固件:
ssd202-7inch-1024x600-spinand-20210302.7z

u-boot 烧录指令:

setenv serverip 192.168.1.99;setenv ipaddr 192.168.1.33;nand erase 0x0 0x8000000;tftp 0x20000000 o/sysimage-nand.img;nand write 0x20000000 0x0 ${filesize};

官方烧录器烧录:
https://whycan.com/files/members/5985/2021-03-02_124657.png

离线

#16 2021-03-05 16:25:37

caszhao
会员
注册时间: 2021-03-02
已发帖子: 11
积分: 11

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

在楼主的基础上增加rotation,开源了:
https://github.com/caszhao/ssd_lvgl

离线

楼主 #17 2021-03-06 08:43:45

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

大佬另开个帖子呀,顶上去

caszhao 说:

在楼主的基础上增加rotation,开源了:
https://github.com/caszhao/ssd_lvgl

离线

#18 2021-03-06 11:46:49

caszhao
会员
注册时间: 2021-03-02
已发帖子: 11
积分: 11

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

TeveT 说:

大佬另开个帖子呀,顶上去

caszhao 说:

在楼主的基础上增加rotation,开源了:
https://github.com/caszhao/ssd_lvgl

没事,需要的人才需要,不需要的也不会需要

离线

#19 2021-04-21 12:08:13

981378640
会员
注册时间: 2021-04-21
已发帖子: 3
积分: 13.5

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

楼主啊,如何显示外部的jpg图片啊?有没有Demo参考一下啊

离线

楼主 #20 2021-04-21 14:54:37

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

详细请看 JpegPlayer ,代码包有的

981378640 说:

楼主啊,如何显示外部的jpg图片啊?有没有Demo参考一下啊

离线

#21 2021-04-24 08:22:00

海石生风
会员
注册时间: 2019-07-02
已发帖子: 121
积分: 218

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

达克罗德 说:
TeveT 说:

嗯? 怎么理解呢,意思是,双缓冲下,在硬件disp控制器读帧过程中顿一下么, vsync机制是当前帧被使用的时候不会被填充么

达克罗德 说:

光双缓冲,没有vsync处理,应该还是有小概率产生撕裂吧

就怕切缓冲buff地址时候,如果发生在读帧过程中,一样会导致画面撕裂。感觉和硬件设计和驱动程序有关,也许某些SOC硬件可以保证直接切换地址不会导致问题。
不过我看许多SOC都还是明确要求在帧中断去切缓冲。
DRM的文档有关于这个双缓冲和VSync的说明:
https://github.com/dvdhrm/docs/blob/master/drm-howto/modeset-double-buffered.c
https://github.com/dvdhrm/docs/blob/master/drm-howto/modeset-vsync.c

If you run this example, you will notice that there is almost no flickering,
* anymore. The buffers are now swapped as a whole so each new frame shows
* always the whole new image. If you look carefully, you will notice that the
* modeset.c example showed many screen corruptions during redraw-cycles.
*
* However, this example is still not perfect. Imagine the display-controller is
* currently scanning out a new image and we call drmModeSetCrtc()
* simultaneously. It will then have the same effect as if we used a single
* buffer and we get some tearing. But, the chance that this happens is a lot
* less likely as with a single-buffer. This is because there is a long period
* between each frame called vertical-blank where the display-controller does
* not perform a scanout. If we swap the buffers in this period, we have the
* guarantee that there will be no tearing. See the modeset-vsync.c example if
* you want to know how you can guarantee that the swap takes place at a
* vertical-sync.

根据这个理解,即使硬件支持任意切缓冲不会导致画面撕裂,也还是会有问题。当绘图刷新率不稳定的时候,有可能会导致掉帧现象。你可以想象在一帧的时间里,如果不在v-blank时间来切缓冲,有可能刚好错过当前这一帧的数据。所以PC游戏里一般有个选项,锁定帧刷新到显卡vsync

那是只有硬件不支持双缓冲才出现的情况,现在的芯片只要支持LCD接口都会支持双缓冲。

离线

#22 2021-05-28 20:59:56

duanchangstar
会员
注册时间: 2019-10-29
已发帖子: 14
积分: 12

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

楼主很厉害啊,可以顺便搞一下AWTK的双缓冲吗

离线

楼主 #23 2021-05-28 22:14:19

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

咋说,awtk 本地编译有包吗,我弄来看看

duanchangstar 说:

楼主很厉害啊,可以顺便搞一下AWTK的双缓冲吗

离线

#24 2021-05-28 22:16:32

cube
会员
注册时间: 2021-03-11
已发帖子: 271
积分: 185.5

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

TeveT 说:

咋说,awtk 本地编译有包吗,我弄来看看

duanchangstar 说:

楼主很厉害啊,可以顺便搞一下AWTK的双缓冲吗

https://github.com/zlgopen/awtk

离线

楼主 #25 2021-05-28 22:29:54

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

好滴,感谢分享,搞搞看

cube 说:
TeveT 说:

咋说,awtk 本地编译有包吗,我弄来看看

duanchangstar 说:

楼主很厉害啊,可以顺便搞一下AWTK的双缓冲吗

https://github.com/zlgopen/awtk

离线

#26 2021-05-28 23:22:52

duanchangstar
会员
注册时间: 2019-10-29
已发帖子: 14
积分: 12

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

已经搞定了AWTK的双缓冲,使用了楼主的方法。感谢~

离线

#27 2021-05-29 00:10:03

cube
会员
注册时间: 2021-03-11
已发帖子: 271
积分: 185.5

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

duanchangstar 说:

已经搞定了AWTK的双缓冲,使用了楼主的方法。感谢~

方便分享一下diff差异文件吗?

离线

楼主 #28 2021-05-29 11:12:39

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

看来楼上的楼上大佬已经了解了fb的操作过程,改起来应当是大同小异哈,

cube 说:
duanchangstar 说:

已经搞定了AWTK的双缓冲,使用了楼主的方法。感谢~

方便分享一下diff差异文件吗?

离线

#29 2021-05-30 00:07:41

duanchangstar
会员
注册时间: 2019-10-29
已发帖子: 14
积分: 12

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

cube 说:
duanchangstar 说:

已经搞定了AWTK的双缓冲,使用了楼主的方法。感谢~

方便分享一下diff差异文件吗?

按楼主的方法做就行了

离线

楼主 #30 2021-05-30 12:51:03

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

都嘛系开源的东西,修改了抛上来共享下大大滴好,
如果有小毛病被鞭尸后还能共同进步,来嘛来嘛

duanchangstar 说:
cube 说:
duanchangstar 说:

已经搞定了AWTK的双缓冲,使用了楼主的方法。感谢~

方便分享一下diff差异文件吗?

按楼主的方法做就行了

最近编辑记录 TeveT (2021-05-30 12:51:20)

离线

#31 2021-05-30 17:27:55

novice
会员
注册时间: 2019-07-26
已发帖子: 84
积分: 80

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

这个SSD20X有没有公开资料?

离线

楼主 #32 2021-05-30 20:37:29

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

有公开啊,但是没有全部公开。
比较暧昧吧,没有TRM

novice 说:

这个SSD20X有没有公开资料?

离线

#33 2021-09-02 12:16:43

weiyongwill
会员
注册时间: 2019-08-08
已发帖子: 56
积分: 39.5

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

我自己搞了个demo,提示缺少库文件 libmi_disp.so

离线

楼主 #34 2021-09-02 12:22:49

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

注意下我帖子里描述的依赖路径project 还有lvgl 的Makefile
你的这个缺少的库在这个路径下面:
SDK_LIBS=../project/release/nvr/i2m/common/glibc/8.2.1/mi_libs/dynamic

weiyongwill 说:

我自己搞了个demo,提示缺少库文件 libmi_disp.so

离线

#35 2021-09-02 16:02:55

regbbs
会员
注册时间: 2020-04-06
已发帖子: 42
积分: 28.5

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

lvgl_v8.zip
8.0的,lv_driver替换的时候注意不要把文件覆盖了。
其实lvgl的git上面有linux的移植,基于frame buffer。只要把ssd20x的特定初始化部分添加上就可以。

离线

楼主 #36 2021-09-02 19:48:02

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

对的这个帖子就是拉lvgl fb 改的,加入了你说的初始化部分,只是填坑

regbbs 说:

lvgl_v8.zip
8.0的,lv_driver替换的时候注意不要把文件覆盖了。
其实lvgl的git上面有linux的移植,基于frame buffer。只要把ssd20x的特定初始化部分添加上就可以。

离线

#37 2021-11-30 13:23:37

pencil
会员
注册时间: 2021-11-03
已发帖子: 14
积分: 9

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

为啥我使用上传的文件之后编译会报错:
../lv_drivers/indev/evdev.c:18:10: fatal error: linux/input.h: No such file or directory
#include <linux/input.h>
          ^~~~~~~~~~~~~~~
compilation terminated.
make: *** [lv_drivers/indev/subdir.mk:41: lv_drivers/indev/evdev.o] Error 1
"make all" terminated with exit code 2. Build might be incomplete.

离线

楼主 #38 2021-11-30 14:31:50

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

@pencil
芜湖? 建议使用我网盘上传的试一下。
坛主上传的我不太清楚呢,毕竟下载要分数。

离线

#39 2021-11-30 16:13:23

pencil
会员
注册时间: 2021-11-03
已发帖子: 14
积分: 9

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

我使用你的在windows本地编译也是报错,是需要将它放到服务器上编译吗?

离线

#40 2021-11-30 16:14:58

pencil
会员
注册时间: 2021-11-03
已发帖子: 14
积分: 9

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

放在服务器下编译,还是报很多错,我一时也搞不明白

离线

楼主 #41 2021-11-30 17:10:02

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

pencil 说:

放在服务器下编译,还是报很多错,我一时也搞不明白

注意project的目录,注意阅读一下Makefile

├── LVGL7.10-SSD202
│   ├── export-ssd20x-gcc.sh
│   ├── gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf
│   ├── linux_frame_buffer
├── project

离线

#42 2021-12-04 12:18:23

zhou
会员
注册时间: 2019-07-09
已发帖子: 6
积分: 2

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

请问  我这边接入LVGL后 显示 一亮一灭 这个是怎么导致的?显示是有的。一般是哪部分引起的现象。

离线

楼主 #43 2021-12-04 13:10:24

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

zhou 说:

请问  我这边接入LVGL后 显示 一亮一灭 这个是怎么导致的?显示是有的。一般是哪部分引起的现象。https://whycan.com/files/members/1813/d61c12ed6a33ecb12217fcbc4a816478.mp4

5、注意修改双缓的缓冲区大小
要修改 /config/fbdev.ini 修改缓冲区到2倍的大小 4800x1024 (原来是4096, 不改会段错误)

FB_BUFFER_LEN = 4800

你的机器不是开发板的话,需要自己计算一下,修改一下

离线

#44 2021-12-04 15:52:28

zhou
会员
注册时间: 2019-07-09
已发帖子: 6
积分: 2

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

@TeveT
您好  同缓存大小 我加到8192了,接入LVGL8单缓存是能正常使用的,接入这个7.10双缓的就是会闪屏,是因为在切换双缓存导致的吗?

离线

楼主 #45 2021-12-04 16:37:21

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

zhou 说:

@TeveT
您好  同缓存大小 我加到8192了,接入LVGL8单缓存是能正常使用的,接入这个7.10双缓的就是会闪屏,是因为在切换双缓存导致的吗?

我代码里是写了除以2后刚好是整屏幕大小, 你的这个buffer 如果没有另作他用,我的代码不修改的前提下, 你的buffer大小也要写成固定的你的屏幕的缓冲区的2倍才行的,不会算的话你可以报上来你的屏幕尺寸大小我给你个数值也行。

离线

楼主 #46 2021-12-04 16:39:14

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

zhou 说:

@TeveT
您好  同缓存大小 我加到8192了,接入LVGL8单缓存是能正常使用的,接入这个7.10双缓的就是会闪屏,是因为在切换双缓存导致的吗?

计算很简单的
我之所以修改为 4800 是因为 1024x600x4x2/1024 = 4800
H x V x 单一像素字节数量 x 2(双缓冲) / 1024

离线

#47 2021-12-13 14:42:06

pencil
会员
注册时间: 2021-11-03
已发帖子: 14
积分: 9

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

@TeveT
使用网盘下载的,首先是报错了error: ‘for’ loop initial declarations are only allowed in C99 mode,在解决了这个问题之后又报错了lv_drivers/display/fbdev.c:112:12: error: variable ‘tv1’ has initializer but incomplete type
lv_drivers/display/fbdev.c:112:20: error: storage size of ‘tv1’ isn’t known
lv_drivers/display/fbdev.c:113:12: error: variable ‘tv2’ has initializer but incomplete type
lv_drivers/display/fbdev.c:113:20: error: storage size of ‘tv2’ isn’t known

离线

楼主 #48 2021-12-13 15:36:46

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

@pencil
交叉编译器是否有导出?

离线

#49 2021-12-13 15:39:30

pencil
会员
注册时间: 2021-11-03
已发帖子: 14
积分: 9

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

哪部分

离线

#50 2021-12-13 15:47:03

pencil
会员
注册时间: 2021-11-03
已发帖子: 14
积分: 9

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

TeveT 说:

@pencil
交叉编译器是否有导出?

还没,我再试一下,麻烦了

离线

#51 2021-12-17 08:47:29

pencil
会员
注册时间: 2021-11-03
已发帖子: 14
积分: 9

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

@SigmaStarStudy
请问一体打包固件是如何打包出来的

离线

#52 2021-12-21 18:15:32

nydxsydt
会员
注册时间: 2021-12-21
已发帖子: 10
积分: 0

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

该评论内容与本帖子无关,鼓励各位坑友积极发言讨论与帖子有关的内容!

离线

  • 不通过:其他

#53 2022-01-06 10:03:41

pencil
会员
注册时间: 2021-11-03
已发帖子: 14
积分: 9

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

@TeveT
楼主在将这个lvgl的demo打包时候的过程步骤能分享一下吗?我自己写了一个image.mk和demo.sh打包之后系统开机花屏且显示报错信息
The framebuffer device was opened successfully.
800x480, 32bpp
The framebuffer device was mapped to memory successfully.
unable open evdev interface:: No such file or directory

离线

楼主 #54 2022-01-06 10:16:55

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

@pencil
程序已经跑起来了,
你的屏幕初始化配置文件是否搞对了,分辨率,双缓大小是否能对上,
报错是没有触摸。

离线

#55 2022-01-06 10:46:45

pencil
会员
注册时间: 2021-11-03
已发帖子: 14
积分: 9

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

TeveT 说:

@pencil
程序已经跑起来了,
你的屏幕初始化配置文件是否搞对了,分辨率,双缓大小是否能对上,
报错是没有触摸。

开机是这样的,它会先显示logo,然后开始花屏,什么都没有显示,我按照那个双缓冲来配置800*480就是3000

离线

楼主 #56 2022-01-06 14:19:08

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

@pencil
注意看下你的屏幕初始化和你的屏幕是否是对上的,开发板是CC0702I50R_1024x600.h这个头文件做的初始化序列和液晶屏显示参数传递。

你如果logo正常,那就把logo那边显示的参数拿出来,来修改这个h文件
可以看下sstardisp.c 这些相关信息。

离线

#57 2022-01-14 19:25:48

笔走天下
会员
注册时间: 2021-08-13
已发帖子: 96
积分: 0.5

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

强啊,这个开发板有链接吗

离线

楼主 #58 2022-01-14 20:13:24

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

笔走天下 说:

强啊,这个开发板有链接吗

有的,淘宝搜一下就有了,或者自己做一个。

离线

#59 2022-03-13 18:39:05

future
会员
注册时间: 2021-11-28
已发帖子: 27
积分: 29

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

楼猪,我在移植的时候,链接动态库的时候,提示我
/usr/bin/ld: 当搜索用于 ../project/release/nvr/i2m/common/glibc/8.2.1/mi_libs/static/libmi_disp.a 时跳过不兼容的 -lmi_disp
/usr/bin/ld: 找不到 -lmi_disp
/usr/bin/ld: 当搜索用于 ../project/release/nvr/i2m/common/glibc/8.2.1/mi_libs/static/libmi_panel.a 时跳过不兼容的 -lmi_panel
/usr/bin/ld: 找不到 -lmi_panel
collect2: error: ld returned 1 exit status
这是啥情况啊

离线

楼主 #60 2022-03-13 18:56:40

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

@future
大佬,你这个project要在这个makefile的上一个文件目录下存在。
这个project就是ssd202开发板的一个project的压缩包解压出来的文件夹。

离线

#61 2022-03-15 10:28:08

future
会员
注册时间: 2021-11-28
已发帖子: 27
积分: 29

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

TeveT 说:

@future
大佬,你这个project要在这个makefile的上一个文件目录下存在。
这个project就是ssd202开发板的一个project的压缩包解压出来的文件夹。

这个我已经解决了,库文件引入路径不对,但是现在屏幕上没有任何显示,就会显示一个log,下面试日志:
/mnt/usb # ls
aml_up~1.img  demo          dwin_set      ld            platfo~1.rar  system~1
code_1~1.deb  demossd       lanter~1.deb  mindmo~1.pac  setup_~1.rar  tvcabi~1
/mnt/usb # ./demo
client [881] connected, module:panel
[MI_PANEL_Iclient [881] connected, module:disp
nit][332]LCD env[MI_SYSCFG_GetPanelInfo 50] eTiming = 4, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 2, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 8, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 9, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 10, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 6, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 7, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 11, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 13, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 12, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 14, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 5, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 3, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 38, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 50, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 40, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 43, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 41, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 44, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 42, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 46, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 50, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 45, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 50, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 22, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 23, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 30, hdmiTx = 1  Not Fund!!!
[MI_SYSCFG_GetPanelInfo 50] eTiming = 32, hdmiTx = 1  Not Fund!!!
ironment is Invalid

sstar_FB_SetBlending 402 u8GOP=1,u8win=0 aType=1 u8constAlpha=255
The framebuffer device was opened successfully.
800x480, 32bpp
The framebuffer device was mapped to memory successfully.
么有lvgl的画面显示。

按照说点屏之前初始化,我main函数是这样改的,其他地方没有更改:

.......................

int main(void)
{
    MI_PANEL_Init(E_MI_PNL_LINK_TTL); //panel 初始化
    MI_DISP_Enable(0);        //fb最终还是得经过disp,所以得初始化disp

    /*LittlevGL init*/
    lv_init();

    /*Linux frame buffer device init*/
    fbdev_init();
.................

离线

楼主 #62 2022-03-15 13:46:00

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

@future
屏幕还没点亮过么,logo能亮?屏幕参数头文件正确??

离线

#63 2022-03-15 18:51:33

海石生风
会员
注册时间: 2019-07-02
已发帖子: 121
积分: 218

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

不一定要将屏幕初始化的代码放到lvgl里,可以单独搞一个初始化屏幕的可执行文件,开机时就运行在后台。

离线

#64 2022-03-16 14:41:13

future
会员
注册时间: 2021-11-28
已发帖子: 27
积分: 29

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

TeveT 说:

@future
屏幕还没点亮过么,logo能亮?屏幕参数头文件正确??

屏幕使用官方例子可以点亮的,zk_full_security,就这个例子,然后我把这个例子程序线程删掉运行我移植的demo,就可以正常显示了,所以应该是屏幕初始化的时候没有初始化好,sstardisp.c,直接调用这个c文件里面的初始化函数后,倒是可以显示了,但是显示的颜色不对,没有头绪了,不知道哪里出错了,大佬能帮我看下吗?

离线

楼主 #65 2022-03-17 09:58:14

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

@future
大佬,你的现象拍照片发来看看。
另外你这个初始化没问题的话,一般不会有颜色问题。
如果是双缓冲没有弄好的话,就是要改屏幕fb的配置文件,详细看看帖子。
如果是位宽引起的颜色问题的话,查看LCD接线方式是565还是888,同时改lv_conf 来匹配你的屏幕参数
默认程序用的是888, ARGB 32bit

离线

#66 2022-03-18 09:20:59

future
会员
注册时间: 2021-11-28
已发帖子: 27
积分: 29

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

@TeveT
老哥,已经弄好了,其实很简单啊,是我屏参数头文件用错了,找代理商要个正确的屏幕头文件就好了,移植真的是简单的一批,都写好了,哈哈,谢谢了哈,不过不知道为啥屏幕上有一个logo的影子,在白色界面上不会显示,但是深色界面上就会看出来。
462A6DD70911282D4D9628737E074388.jpgDCD691F223DD16ABC79AAE658A685441.jpg

最近编辑记录 future (2022-03-18 09:49:08)

离线

#67 2022-04-14 15:56:16

981378640
会员
注册时间: 2021-04-21
已发帖子: 3
积分: 13.5

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

caszhao 说:
TeveT 说:

大佬另开个帖子呀,顶上去

caszhao 说:

在楼主的基础上增加rotation,开源了:
https://github.com/caszhao/ssd_lvgl

没事,需要的人才需要,不需要的也不会需要

lvgl中有软件翻转rotation的设置

    /*Initialize and register a display driver*/
    static lv_disp_drv_t disp_drv;
    lv_disp_drv_init(&disp_drv);
    disp_drv.draw_buf = &disp_buf;
    disp_drv.flush_cb = fbdev_flush;
    disp_drv.hor_res = LV_HOR_RES;
    disp_drv.ver_res = LV_VER_RES;
    //disp_drv.full_refresh = 1; // 全刷新标志

    disp_drv.sw_rotate = 1; // 软件翻转标志
    g_display = lv_disp_drv_register(&disp_drv);
    if (g_display != NULL)
    {
        lv_disp_set_rotation(g_display, LV_DISP_ROT_90); // 设置翻转角度
    }
    printf("[%s:%d] screen rotated\n", __FUNCTION__, __LINE__);

离线

楼主 #68 2022-04-14 16:00:26

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

@future
残影问题,应该是屏幕初始化不对,偏压搞太高了,容易残影,久了会坏屏
如果前面你一直点这LOGO,没有显示其他东西,是静态的显示,也可能留下残影,如果有动态显示的画面,过一段时间会没掉,也就是,要搞个屏保图滚动

离线

楼主 #69 2022-04-15 09:34:36

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

@981378640
大佬,这个虽然可以用,但是还是硬加速的帧率高一些,体验好一些。你可以实测一下。

离线

#70 2022-05-13 15:59:13

online
会员
注册时间: 2022-05-13
已发帖子: 1
积分: 1

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

大佬,我小白一枚,该如何无脑操作:(

离线

楼主 #71 2022-05-13 16:15:22

TeveT
会员
注册时间: 2019-07-01
已发帖子: 133
积分: 76

Re: SSD20X直接编译lvgl7.10带双缓(附源码)

online 说:

大佬,我小白一枚,该如何无脑操作:(

按照帖子说明应该是很无脑了,
如果不行的话贴上出错的LOG,然后一起动动脑解决一下。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn