ThreadX GUIX直驱方案搞定,任何显示屏,低资源的MCU都可以跑了,不再需要画布,附工程下载
说明:1、有了这个方案,各种低配,低资源的小MCU都可以跑了,并且可以跑GUIX Studio生成的代码。生成的时候不要选择静态画布。
2、当前还有点小瑕疵,后面有时间了继续优化,刷圆环控件,这个控件可以看到撕裂感,这个有待优化。需要官方提供个toggle接口函数的直驱方案或者可以变相实现的方案,否则刷16bpp之类的颜色图无法发挥最高性能。
案例下载:
基于我们V5的STM32F407开发板配RA8875
666{:34:} 官方原文链接:http://lodev.org/lodepng/
LodePNG是一个集合了PNG图像解码器和编码器的代码文件,不依赖于诸如zlib和libpng的外部链接/库,提供方便友好的PNG编解码器调用方法。LodePNG主要是采用C(ISO C90)编写的,并提供了C++的接口。LodePNG的使用非常简单,只要在项目文件中包含lodepng.cpp和lodepng.h或者lodepng.c和lodepng.h就可以。 lib钱 发表于 2021-6-4 09:41
官方原文链接:http://lodev.org/lodepng/
LodePNG是一个集合了PNG图像解码器和编码器的代码文件,不依赖 ...
这个相比libpng有啥优势 非常好!非常好!非常好!非常好! 我的也画出图来了,画图速度超级慢,5个英文,要差不多一秒钟,明显看到一个字一个显示出来,先能显示再说,后面再改驱动 eric2013 发表于 2021-6-4 09:47
这个相比libpng有啥优势
硬汉哥,我现在遇到个问题。
TFT屏(和H7-TOOL开发工具的屏一样),图片数量比较多,如果直接用LCD取模软件做数组;
存到MCU的内部flash中,占用空间大;
请问你,能不能把jpg或者png的图片存到flash中,节省flash空间;
mcu的flash=512K,RAM=256K;图片最大240*240;
解压图片文件,需要多少RAM,多少时间;
我这样想有没有意义?
yuntian 发表于 2021-6-4 09:59
我的也画出图来了,画图速度超级慢,5个英文,要差不多一秒钟,明显看到一个字一个显示出来,先能显示再说 ...
我这个快,做了2D加速。 lib钱 发表于 2021-6-4 10:00
硬汉哥,我现在遇到个问题。
TFT屏(和H7-TOOL开发工具的屏一样),图片数量比较多,如果直接用LCD取模 ...
1、PNG解码慢,不适合实时展示,如果采用类似emWin,GUIX那种绘制到存储设备的方式,是可以的。
2、需要快速展示还是推荐MCU+QSPI Flash的内存映射模式,速度快捷方便。 eric2013 发表于 2021-6-4 10:07
1、PNG解码慢,不适合实时展示,如果采用类似emWin,GUIX那种绘制到存储设备的方式,是可以的。
2、需要 ...
谢谢你的回复 esp32 lvgl 驱动起来都可以打游戏,还是spi的,240MHz 主屏 yuntian 发表于 2021-6-4 10:19
esp32 lvgl 驱动起来都可以打游戏,还是spi的,240MHz 主屏
刷个游戏不是轻轻松松,F1刷SPI屏跑游戏都飞起了。
只有刷DOOM驱动电脑显示屏需要比较高的性能。
我这里很流畅啊,还是800*480分辨率的,168MHz主频。
void stm324xg_16bpp_pixel_direct_blend(GX_DRAW_CONTEXT *context,
INT x, INT y, GX_COLOR fcolor, UCHAR alpha)
{
UCHAR fred, fgreen, fblue;
UCHAR bred, bgreen, bblue;
UCHAR balpha;
GX_COLOR bcolor;
GX_COLOR *put;
if (alpha > 0)
{
fred = REDVAL(fcolor);
fgreen = GREENVAL(fcolor);
fblue = BLUEVAL(fcolor);
lcd_write_reg(0x2A); //内联 inline
lcd_write_dat(x >> 8);
lcd_write_dat(x);
lcd_write_dat(x >> 8);
lcd_write_dat(x);
lcd_write_reg(0x2b);
lcd_write_dat(y >> 8);
lcd_write_dat(y);
lcd_write_dat(y >> 8);
lcd_write_dat(y);
bcolor = lcd_read_dat();//(x ,y);
//LCD_SetCursor(x, y);
//bcolor = LCD_ReadRAM();
bred = REDVAL(bcolor);
bgreen = GREENVAL(bcolor);
bblue = BLUEVAL(bcolor);
balpha = 256 - alpha;
fred = ((bred * balpha) + (fred * alpha)) >> 8;
fgreen = ((bgreen * balpha) + (fgreen * alpha)) >> 8;
fblue = ((bblue * balpha) + (fblue * alpha)) >> 8;
//LCD_WriteRAM_Prepare();
lcd_write_dat(ASSEMBLECOLOR(fred, fgreen, fblue));
}
}
这样改造一下,刷屏快了很多,
还要继续改造 {:34:} 103使用GUIX的春天来了。。。。。。。 hqgboy 发表于 2021-6-4 16:45
103使用GUIX的春天来了。。。。。。。
可以搞起来了。 大佬 牛逼plus 100K左右片上内存也能用吗?下载了你的案例看不懂啊.大神能否出个教程? jiaoxiake 发表于 2021-6-9 23:03
100K左右片上内存也能用吗?下载了你的案例看不懂啊.大神能否出个教程?
可以的,后面会更新到教程中。 yuntian 发表于 2021-6-4 14:46
void stm324xg_16bpp_pixel_direct_blend(GX_DRAW_CONTEXT *context,
INT x, INT y, GX_COLOR fcolo ...
可以帮忙做一个stm32H7平台的模板吗 国产芯片也能用吗? 做过类似的尝试,应该还有一个回调函数需要重写,display->gx_display_driver_simple_line_draw guoxiang 发表于 2022-8-1 08:23
国产芯片也能用吗?
能,开源有源码的。可以移植。 eric2013 发表于 2022-8-1 10:45
能,开源有源码的。可以移植。
GUIX不是没有授权给国产芯片吧 guoxiang 发表于 2022-8-1 17:25
GUIX不是没有授权给国产芯片吧
对,国产的不行,没授权。 画布 是什么意思? 移植到别的MCU时直接替换掉GUIX/source文件夹就行了? zhengwending 发表于 2022-8-28 08:01
画布 是什么意思?
就跟显存差不多。 banzhangzzw 发表于 2022-9-1 17:08
移植到别的MCU时直接替换掉GUIX/source文件夹就行了?
仅替换这个不行,最好先做个模板,然后移植修改就方便很多了。 eric2013 发表于 2022-8-1 10:45
能,开源有源码的。可以移植。
请问一下,商用收费吗? luy3728000 发表于 2023-1-29 17:19
请问一下,商用收费吗?
当前如下厂家免费商用
LICENSED HARDWARE LIST
Last Updated: 2021-04-01
Microsoft has entered into OEM Agreements with manufacturers of the following
microprocessors and microcontrollers (the “hardware”) to enable those
manufacturers to include and distribute Azure RTOS in certain hardware. If you
have obtained and/or are developing on microprocessor(s) and/or
microcontroller(s) (“hardware”) listed below you inherit the “Distribution and
Production Use” rights in Section 2 of the Microsoft Software License Terms for
Microsoft Azure RTOS. If hardware is not listed below, you do not have those
rights.
STMicroelectronics:
STM32 MCUs
STM32 MPUs
MediaTek:
MT3620 MCU (Azure Sphere)
Microchip:
PIC 32-bit MCUs
SAM 32-bit MCUs
SAM 32-bit MPUs
NXP:
i.MX RT10xx and RT116x/7x series crossover MCUs
LPC5500 series
Renesas:
Synergy Platform
RX Family of MCUs
RA Family of MCUs
RZ Family of MPUs
--------------------------------------------------------------------------------
More coming soon. Please check back frequently for updates.
硬汉大哥,ThreadX GUIX直驱方案中,对于小内存的MCU,如何设置Canvas地址地址呢,对于ILI9488,SPI LCD屏,Canvas_Memory最少要多大合适? xxs65 发表于 2023-1-31 11:13
硬汉大哥,ThreadX GUIX直驱方案中,对于小内存的MCU,如何设置Canvas地址地址呢,对于ILI9488 ...
这个例子没有使用外部的,用的是内部定义的内存,开了20KB.
#define GUI_NUMBYTES 20*1024
uint8_t MemoryBlock;/* 动态内存地址 */ eric2013 发表于 2023-1-31 11:31
这个例子没有使用外部的,用的是内部定义的内存,开了20KB.
#define GUI_NUMBYTES 20*1024
/*
*********************************************************************************************************
* 函 数 名: stm32f4_graphics_driver_setup_565rgb
* 功能说明: 驱动接口函数
* 形 参: ---
* 返 回 值: GX_SUCCESS
*********************************************************************************************************
*/
UINT stm32f4_graphics_driver_setup_565rgb(GX_DISPLAY *display)
{
_gx_display_driver_565rgb_setup(display, (VOID*)STM32_SCREEN_HANDLE, stm324xg_16bpp_buffer_toggle);
display -> gx_display_driver_horizontal_line_draw = stm324xg_16bpp_horizontal_line_direct_draw;
display -> gx_display_driver_vertical_line_draw = stm324xg_16bpp_vertical_line_direct_draw;
display -> gx_display_driver_pixel_write = stm324xg_16bpp_pixel_direct_write;
display -> gx_display_driver_pixel_blend = stm324xg_16bpp_pixel_direct_blend;
//display -> gx_display_driver_buffer_toggle = stm324xg_16bpp_buffer_toggle;
display -> gx_display_handle = STM32_SCREEN_HANDLE;
return(GX_SUCCESS);
}
这个函数用到了这个宏 ,有点不明白。 #define STM32_SCREEN_HANDLE 0x68000000 xxs65 发表于 2023-1-31 12:09
/*
********************************************************************************************** ...
这个是个句柄ID区分,可以随意定义。 eric2013 发表于 2023-1-31 12:28
这个是个句柄ID区分,可以随意定义。
谢谢硬汉大哥指导 eric2013 发表于 2023-1-31 11:31
这个例子没有使用外部的,用的是内部定义的内存,开了20KB.
#define GUI_NUMBYTES 20*1024
请教一下,我直驱方式画线没问题,显示文字和图画不行,不知道为何?移植了gx_display_driver_pixel_write
gx_display_driver_horizontal_line_draw, gx_display_driver_vertical_line_draw 这几个函数。 版主你好,这个例程请问用哪个版本的MDK编译?我的是MDK5.25 V6.9的,编译出很多错误 wacos 发表于 2023-3-24 15:49
版主你好,这个例程请问用哪个版本的MDK编译?我的是MDK5.25 V6.9的,编译出很多错误
要用MDK5.3X编译。 eric2013 发表于 2023-3-24 19:10
要用MDK5.3X编译。
感谢,已经编译成功了,非常感谢
页:
[1]
2