去年买的longan-nao板子,芯片是gd32vf103c8t6,20k ram, 64k rom。配有一个spi接口的160*80的lcd。
没接触过单片机的gui,以为差不多都能跑呢,看lvgl这么火就想试试,看介绍需要16k ram,最少64k rom(推荐180k)。想着也满足最低需求了,想试试。
结果编译后一个.bss文件大小就34k了。
离线
跑啥gui并不是问题,是看你想用来干什么才可能会选什么gui吧,一般应该都可以根据需求进行一定的裁剪缩小。
离线
https://bbs.21ic.com/blog-1849938-170836.html
尝试了ugui,结果卡在这个函数里了,屏蔽掉死等这一步,结果没有控件显示出来...
void UG_WaitForUpdate( void )
{
gui->state |= UG_SATUS_WAIT_FOR_UPDATE;
#ifdef USE_MULTITASKING
while ( (volatile UG_U8)gui->state & UG_SATUS_WAIT_FOR_UPDATE ){};
#endif
#ifndef USE_MULTITASKING
while ( (UG_U8)gui->state & UG_SATUS_WAIT_FOR_UPDATE ){};
#endif
}
离线
是我搞错了,我以为wihile()循环或定时器里需要调用的是UG_WaitForUpdate(),实际上应该是UG_Update()。
建了个窗口,放了个text,20k的ram用了98%了。
离线
这种简单UI用掉20KBram有点太多,估计可以优化。这是spi屏吧,内置显存了按理你的UI code不需要什么内存开销
离线
问题找到了,我给rt-thread-nano的主线程分配了15k堆栈,实际上主线程里用不了这么多,我改回1k堆栈后,编译后,ram只使用了29%,主线程里堆栈也只是用了63%。
rt-thread-nano-allinsrc-ugui.zip
离线
又返回lvgl。
发现有个地方没有修改,按默认的来,定义了个32k的缓冲区。
# define LV_MEM_SIZE (32U * 1024U)
把这里改成2k,ram超出的报错没有了,但是rom还是超了。
/home/any/.platformio/packages/toolchain-gd32v/bin/../lib/gcc/riscv-nuclei-elf/9.2.0/../../../../riscv-nuclei-elf/bin/ld: .pio/build/sipeed-longan-nano-lite/firmware.elf section `.text' will not fit in region `flash'
/home/any/.platformio/packages/toolchain-gd32v/bin/../lib/gcc/riscv-nuclei-elf/9.2.0/../../../../riscv-nuclei-elf/bin/ld: region `flash' overflowed by 3270 bytes
collect2: error: ld returned 1 exit status
*** [.pio/build/sipeed-longan-nano-lite/firmware.elf] Error 1
--------------------------------------
关闭rtthread-nano的finsh功能,通过编译了。
又发现,有个函数忘了取消注释了。
lv_init();
lv_port_disp_init() //这个函数刚才忘了取消注释了。
取消注释后,再次编译,结果差42k rom?
Linking .pio/build/sipeed-longan-nano-lite/firmware.elf
/home/any/.platformio/packages/toolchain-gd32v/bin/../lib/gcc/riscv-nuclei-elf/9.2.0/../../../../riscv-nuclei-elf/bin/ld: .pio/build/sipeed-longan-nano-lite/firmware.elf section `.text' will not fit in region `flash'
/home/any/.platformio/packages/toolchain-gd32v/bin/../lib/gcc/riscv-nuclei-elf/9.2.0/../../../../riscv-nuclei-elf/bin/ld: region `flash' overflowed by 42910 bytes
collect2: error: ld returned 1 exit status
*** [.pio/build/sipeed-longan-nano-lite/firmware.elf] Error 1
请教,Lvgl如何裁剪?想放进64k rom的单片机里。我看Lvgl介绍最低需求好像就是64k rom.
最近编辑记录 Gentlepig (2020-09-12 17:53:24)
离线
离线
H7的话,有Qt移植
离线
离线
H7的话,有Qt移植
我用的是m3的单片机,而且容量比较低。看上边那个朋友回的链接,是有人在stm32c8t6上运行的,就是没有放出源码。
离线
这资源规模的MCU不推荐LVGL,试试emWin之类的吧。
离线