WhyCan Forum(哇酷开发者社区)

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

您尚未登录。

#1 2018-12-17 16:40:58

小菜
会员
注册时间: 2018-12-06
累计积分: 45

lvgl移植到裸跑的f1c100s上

在大侠达克罗德放出的《F1C100S裸奔framebuffer + PWM + GPIO驱动》基础上移植LVGL。
目前已经能够在800*480的屏幕上使用32颜色深度,跑lvgl的demo例子。
但感觉速度很慢,比在linux下使用fbdev还慢。
有时间再优化。
看看能不能用DMA实现数据传输。
源代码:
lvgl_f1c100s.zip

最近编辑记录 小菜 (2018-12-17 16:44:39)

离线

#2 2018-12-17 17:24:10

晕哥
管理员
注册时间: 2017-09-06
累计积分: 9,190

Re: lvgl移植到裸跑的f1c100s上

感谢分享!
感谢默默支持 debugdump 的网友!

离线

#3 2018-12-17 22:31:47

zzm24
会员
注册时间: 2018-05-07
累计积分: 40

Re: lvgl移植到裸跑的f1c100s上

开cache

离线

#4 2018-12-18 10:11:24

小菜
会员
注册时间: 2018-12-06
累计积分: 45

Re: lvgl移植到裸跑的f1c100s上

zzm24 说:

开cache

开了Icache和Dcache是好点了,但是还是感觉卡。我原来用的一个120MHz的MIPS(估计配置下来也就90多M)的片子跑GUI,很流畅。

离线

#5 2018-12-18 11:24:06

duckduckgo
会员
注册时间: 2018-12-13
累计积分: 58

Re: lvgl移植到裸跑的f1c100s上

小菜 说:
zzm24 说:

开cache

开了Icache和Dcache是好点了,但是还是感觉卡。我原来用的一个120MHz的MIPS(估计配置下来也就90多M)的片子跑GUI,很流畅。

你看这个帖子: https://whycan.cn/t_1457_2.html  也是裸跑的,并不卡。
能否把视频效果放出来参考参考?

最近编辑记录 duckduckgo (2018-12-18 11:27:00)

离线

#6 2018-12-18 17:36:13

小菜
会员
注册时间: 2018-12-06
累计积分: 45

Re: lvgl移植到裸跑的f1c100s上

duckduckgo 说:
小菜 说:
zzm24 说:

开cache

开了Icache和Dcache是好点了,但是还是感觉卡。我原来用的一个120MHz的MIPS(估计配置下来也就90多M)的片子跑GUI,很流畅。

你看这个帖子: https://whycan.cn/t_1457_2.html  也是裸跑的,并不卡。
能否把视频效果放出来参考参考?

我刚试了周立功移植过来的那个程序也是卡,难道是我的板子有问题?

离线

#7 2018-12-18 17:58:42

晕哥
管理员
注册时间: 2017-09-06
累计积分: 9,190

Re: lvgl移植到裸跑的f1c100s上

确实有点卡,zlg gui那个demo我在480x272液晶上面跑正常

离线

#8 2018-12-18 19:50:09

小菜
会员
注册时间: 2018-12-06
累计积分: 45

Re: lvgl移植到裸跑的f1c100s上

我的是800*480,感觉这个不带系统的和linux下的速度差不多,是不是lvgl本身的问题。

离线

#9 2018-12-18 20:04:37

晕哥
管理员
注册时间: 2017-09-06
累计积分: 9,190

Re: lvgl移植到裸跑的f1c100s上

xboot里面有一个lvgl分支,速度比你这个要快,你参考下

离线

#10 2018-12-20 11:18:27

zhenfanhei
会员
注册时间: 2018-01-18
累计积分: 257
个人网站

Re: lvgl移植到裸跑的f1c100s上

用16位色深效果会好些么?

离线

#11 2018-12-20 17:15:46

科技植
会员
注册时间: 2018-11-05
累计积分: 34

Re: lvgl移植到裸跑的f1c100s上

关于你这个lvgl的视频。我大概清楚。我当时是在NUC972上运行的这个程序(运行在linux操作系统下),效果也是你这样。这主要是弹出动画以及lvgl下main.c里,的usleep(10000)导致的。你在main.c中,找到这个函数,报10000改成比如100。键盘的弹出动画效果就快得飞起了

离线

#12 2018-12-20 17:35:50

lilo
会员
注册时间: 2017-10-15
累计积分: 215

Re: lvgl移植到裸跑的f1c100s上

我也看了一下代码

int boot_main(int argc, char **argv) {   
    lv_init();
    /* Do initial mem pool */
    do_init_mem_pool();
    do_init_dma_pool();

        fb_f1c100s_init(&fb_f1c100s);
        render = fb_f1c100s_create(&fb_f1c100s);

        for (int i = 0; i < render->pixlen/4;i++)
        {
            ((uint32_t*)render->pixels)[i ] = 0xffffffff;
        }
        fb_f1c100s_present(&fb_f1c100s, render);
        fb_f1c100s_setbl(&fb_f1c100s, 100);   

    lv_disp_drv_t disp_drv;
    lv_disp_drv_init(&disp_drv);
    disp_drv.disp_flush = fbdev_flush;     
    lv_disp_drv_register(&disp_drv);

    demo_create();

    while(1)
    {
        lv_tick_inc(5);
        lv_task_handler();
        delay(1000);
    }
    return 0;
}

粗体 delay(1000); 这个是多余的, 没必要延时.

离线

#13 2018-12-23 20:31:51

tango_zhu
会员
注册时间: 2018-04-12
累计积分: 46

Re: lvgl移植到裸跑的f1c100s上

这个延时去掉的话 cpu都被lvgl用了  别的也就干不了什么事情了

离线

#14 2018-12-27 17:20:48

Quotation
会员
注册时间: 2018-10-04
累计积分: 235

Re: lvgl移植到裸跑的f1c100s上

应该在主循环里每隔多少时间(比如30ms)调用一下
        lv_tick_inc(5);
        lv_task_handler();

其余的时间用来做别的。
并且lv_tick_inc的参数应当等于两次调用之间的时间间隔,否则动画会快慢不对。

离线

#15 2019-05-17 13:59:45

hzqlz
会员
注册时间: 2018-03-23
累计积分: 88

Re: lvgl移植到裸跑的f1c100s上

多谢分享

离线

#16 2019-07-14 21:04:41

萧哥
会员
注册时间: 2019-07-14
累计积分: 7

Re: lvgl移植到裸跑的f1c100s上

实际上是你烧进内部内存运行导致的慢 我试着烧到外部flash运行 快得一逼

离线

#17 2019-07-14 21:14:54

萧哥
会员
注册时间: 2019-07-14
累计积分: 7

Re: lvgl移植到裸跑的f1c100s上

离线

#18 2019-09-27 17:38:07

northerntree
会员
注册时间: 2019-08-12
累计积分: 19

Re: lvgl移植到裸跑的f1c100s上

用了楼主的程序,跑得比楼主视频快哈哈
多谢多谢了

离线

#19 2020-02-04 17:40:24

lchjng
会员
注册时间: 2020-02-02
累计积分: 6

Re: lvgl移植到裸跑的f1c100s上

楼主跑的慢的问题找到了吗,能否再次分享下你的程序,我打算试试,第一个链接怎么都没下载下来

离线

#20 2020-02-04 18:15:08

lchjng
会员
注册时间: 2020-02-02
累计积分: 6

Re: lvgl移植到裸跑的f1c100s上

你好,晕哥,请问楼主的那个参考程序,如何在win7的环境下用什么工具编译啊

离线

#21 2020-02-04 18:36:57

awfans
会员
注册时间: 2018-04-03
累计积分: 264

Re: lvgl移植到裸跑的f1c100s上

lchjng 说:

你好,晕哥,请问楼主的那个参考程序,如何在win7的环境下用什么工具编译啊

https://whycan.cn/t_3649.html#p33367

编译软件下载: https://launchpad.net/gcc-arm-embedded/4.9/4.9-2015-q3-update
Linux 编译软件下载: gcc-arm-none-eabi-4_9-2015q3-20150921-linux.tar.bz2


编译软件可以用上面的gcc, windows/linux 版本都有,

make 在 linux自带, windows 的 msys 软件包也带 make.

离线

#22 2020-02-05 11:36:13

sea18c
会员
注册时间: 2019-08-05
累计积分: 174

Re: lvgl移植到裸跑的f1c100s上

lchjng 说:

楼主跑的慢的问题找到了吗,能否再次分享下你的程序,我打算试试,第一个链接怎么都没下载下来

我在F1C100S上跑属于正常的呀

离线

#23 2020-02-05 12:06:08

lchjng
会员
注册时间: 2020-02-02
累计积分: 6

Re: lvgl移植到裸跑的f1c100s上

awfans  感谢你提供的说明,根据链接发现GCC 编译器不支持ram9 ,麻烦给一个新版的,最好能有编译步骤,谢谢啦

离线

#24 2020-02-05 12:09:03

lchjng
会员
注册时间: 2020-02-02
累计积分: 6

Re: lvgl移植到裸跑的f1c100s上

sea18c 我刚下载了,还不知道在windows 上怎么编译、烧写,给个文档参考下吧,我是新手,第一次接触ram

离线

#25 2020-02-07 15:54:33

sea18c
会员
注册时间: 2019-08-05
累计积分: 174

Re: lvgl移植到裸跑的f1c100s上

lchjng 说:

sea18c 我刚下载了,还不知道在windows 上怎么编译、烧写,给个文档参考下吧,我是新手,第一次接触ram



我没有在windows上编译,我是用ubuntu16.04编译的,然后在windows上烧写,现在有软件可以烧写了, 方便多了,如果你用ubuntu16.04编译那可以先设置其文件夹为共享然后在windows上添加网络影射盘就可以直接操作了。烧写工具你搜索下:DKTool windows下F1C200S图形化烧写工具

离线

#26 2020-02-24 16:47:14

642242855
会员
注册时间: 2019-10-31
累计积分: 123

Re: lvgl移植到裸跑的f1c100s上

这个可以做成kei的工程来l编译不 big_smile

离线

#27 2020-03-03 09:09:42

chenjm
会员
注册时间: 2020-02-07
累计积分: 15

Re: lvgl移植到裸跑的f1c100s上

小菜 说:

在大侠达克罗德放出的《F1C100S裸奔framebuffer + PWM + GPIO驱动》基础上移植LVGL。
目前已经能够在800*480的屏幕上使用32颜色深度,跑lvgl的demo例子。
但感觉速度很慢,比在linux下使用fbdev还慢。
有时间再优化。
看看能不能用DMA实现数据传输。
源代码:
lvgl_f1c100s.zip


f1c100s 怎么输出32bit色?

离线

#28 2020-05-22 14:53:03

kq851211
会员
注册时间: 2020-05-01
累计积分: 45

Re: lvgl移植到裸跑的f1c100s上

我的lcd是480*272的,我修改了fb-f1c100s.c 里fb_f1c100s_init函数里的
pdat->width = 480;
pdat->height = 272;
以及lv_conf.h里的
#define LV_HOR_RES          (480)
#define LV_VER_RES          (272)
但我编译烧录了这程序,显示的是乱的,怎么回事呀?程序还要修改什么吗?
FluxBB bbcode 测试

离线

#29 2020-05-22 14:56:30

kq851211
会员
注册时间: 2020-05-01
累计积分: 45

Re: lvgl移植到裸跑的f1c100s上

解决了

离线

#30 2020-06-19 22:10:07

linghaibin
会员
注册时间: 2018-01-07
累计积分: 27

Re: lvgl移植到裸跑的f1c100s上

怎么解决的 分享下

离线

#31 2020-06-30 15:13:02

Nicolaxu
会员
注册时间: 2020-06-21
累计积分: 4

Re: lvgl移植到裸跑的f1c100s上

这个是不经过LINUX直接跑的?感觉有点颠覆认知

离线

#32 2020-07-18 20:27:25

2367725806
会员
注册时间: 2020-07-18
累计积分: 2

Re: lvgl移植到裸跑的f1c100s上

看看

离线

#33 2020-08-08 00:25:05

林的酒
会员
注册时间: 2020-08-08
累计积分: 2

Re: lvgl移植到裸跑的f1c100s上

小菜 说:

在大侠达克罗德放出的《F1C100S裸奔framebuffer + PWM + GPIO驱动》基础上移植LVGL。
目前已经能够在800*480的屏幕上使用32颜色深度,跑lvgl的demo例子。
但感觉速度很慢,比在linux下使用fbdev还慢。
有时间再优化。
看看能不能用DMA实现数据传输。
源代码:
lvgl_f1c100s.zip

牛皮,裸奔,咱也去试试,感谢楼主分享!

离线

#34 2020-08-08 10:11:45

hilam8899
会员
注册时间: 2020-08-08
累计积分: 10

Re: lvgl移植到裸跑的f1c100s上

我的也是800*480,感觉这个不带系统的和linux下的速度差不多,是不是lvgl本身的问题。

离线

#35 2020-09-19 12:01:18

thindcna
会员
注册时间: 2020-04-25
累计积分: 8

Re: lvgl移植到裸跑的f1c100s上

修复低帧率
//添加到fb-f1c100s.c
void fb_f1c100s_area_present(framebuffer_t * fb, uint16_t x1, uint16_t x2, uint16_t y1, uint16_t y2, uint32_t* data)
{
    uint16_t x = x2 - x1 + 1;
    fb_f1c100s_pdata_t * pdat = (fb_f1c100s_pdata_t *)fb->priv;
    uint16_t size_of_row = x*sizeof(uint32_t);
    pdat->index = 0;
    for(int i=y1; i<y2+1; i++) {
        memcpy(&((uint32_t*)pdat->vram[0])[i*LCD_WIDTH + x1], data, size_of_row);
        data += x;
    }
    dma_cache_sync(pdat->vram[0], pdat->width * pdat->height, DMA_TO_DEVICE);
    f1c100s_debe_set_address(pdat, pdat->vram[0]);
}

//在Main中使用
/* Display flushing */
void my_disp_flush(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p)
{
    fb_f1c100s_area_present(&fb_f1c100s, area->x1, area->x2, area->y1, area->y2, (uint32_t*)color_p);
    lv_disp_flush_ready(disp);
}

离线

页脚

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