eric2013 发表于 2021-6-4 07:48:27

ThreadX GUIX直驱方案搞定,任何显示屏,低资源的MCU都可以跑了,不再需要画布,附工程下载

说明:
1、有了这个方案,各种低配,低资源的小MCU都可以跑了,并且可以跑GUIX Studio生成的代码。生成的时候不要选择静态画布。
2、当前还有点小瑕疵,后面有时间了继续优化,刷圆环控件,这个控件可以看到撕裂感,这个有待优化。需要官方提供个toggle接口函数的直驱方案或者可以变相实现的方案,否则刷16bpp之类的颜色图无法发挥最高性能。

案例下载:

基于我们V5的STM32F407开发板配RA8875


missfox 发表于 2021-6-4 09:02:21


666{:34:}

lib钱 发表于 2021-6-4 09:41:13

官方原文链接:http://lodev.org/lodepng/
LodePNG是一个集合了PNG图像解码器和编码器的代码文件,不依赖于诸如zlib和libpng的外部链接/库,提供方便友好的PNG编解码器调用方法。LodePNG主要是采用C(ISO C90)编写的,并提供了C++的接口。LodePNG的使用非常简单,只要在项目文件中包含lodepng.cpp和lodepng.h或者lodepng.c和lodepng.h就可以。

eric2013 发表于 2021-6-4 09:47:45

lib钱 发表于 2021-6-4 09:41
官方原文链接:http://lodev.org/lodepng/
LodePNG是一个集合了PNG图像解码器和编码器的代码文件,不依赖 ...

这个相比libpng有啥优势

meng_1226 发表于 2021-6-4 09:51:30

非常好!非常好!非常好!非常好!

yuntian 发表于 2021-6-4 09:59:26

我的也画出图来了,画图速度超级慢,5个英文,要差不多一秒钟,明显看到一个字一个显示出来,先能显示再说,后面再改驱动

lib钱 发表于 2021-6-4 10:00:13

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,多少时间;

我这样想有没有意义?

eric2013 发表于 2021-6-4 10:04:57

yuntian 发表于 2021-6-4 09:59
我的也画出图来了,画图速度超级慢,5个英文,要差不多一秒钟,明显看到一个字一个显示出来,先能显示再说 ...

我这个快,做了2D加速。

eric2013 发表于 2021-6-4 10:07:44

lib钱 发表于 2021-6-4 10:00
硬汉哥,我现在遇到个问题。
TFT屏(和H7-TOOL开发工具的屏一样),图片数量比较多,如果直接用LCD取模 ...

1、PNG解码慢,不适合实时展示,如果采用类似emWin,GUIX那种绘制到存储设备的方式,是可以的。
2、需要快速展示还是推荐MCU+QSPI Flash的内存映射模式,速度快捷方便。

lib钱 发表于 2021-6-4 10:08:58

eric2013 发表于 2021-6-4 10:07
1、PNG解码慢,不适合实时展示,如果采用类似emWin,GUIX那种绘制到存储设备的方式,是可以的。
2、需要 ...

谢谢你的回复

yuntian 发表于 2021-6-4 10:19:50

esp32 lvgl 驱动起来都可以打游戏,还是spi的,240MHz 主屏

eric2013 发表于 2021-6-4 10:25:30

yuntian 发表于 2021-6-4 10:19
esp32 lvgl 驱动起来都可以打游戏,还是spi的,240MHz 主屏

刷个游戏不是轻轻松松,F1刷SPI屏跑游戏都飞起了。

只有刷DOOM驱动电脑显示屏需要比较高的性能。

我这里很流畅啊,还是800*480分辨率的,168MHz主频。

yuntian 发表于 2021-6-4 14:46:30


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));
    }

}



这样改造一下,刷屏快了很多,
还要继续改造

d_rhasta 发表于 2021-6-4 16:02:33

{:34:}      

hqgboy 发表于 2021-6-4 16:45:56

103使用GUIX的春天来了。。。。。。。

eric2013 发表于 2021-6-5 08:56:24

hqgboy 发表于 2021-6-4 16:45
103使用GUIX的春天来了。。。。。。。

可以搞起来了。

yklstudent 发表于 2021-6-7 20:55:44

大佬 牛逼plus

jiaoxiake 发表于 2021-6-9 23:03:20

100K左右片上内存也能用吗?下载了你的案例看不懂啊.大神能否出个教程?

eric2013 发表于 2021-6-10 08:50:06

jiaoxiake 发表于 2021-6-9 23:03
100K左右片上内存也能用吗?下载了你的案例看不懂啊.大神能否出个教程?

可以的,后面会更新到教程中。

it_nothing 发表于 2022-7-30 18:30:29

yuntian 发表于 2021-6-4 14:46
void stm324xg_16bpp_pixel_direct_blend(GX_DRAW_CONTEXT *context,
    INT x, INT y, GX_COLOR fcolo ...

可以帮忙做一个stm32H7平台的模板吗

guoxiang 发表于 2022-8-1 08:23:58

国产芯片也能用吗?

有梦为马 发表于 2022-8-1 09:54:09

做过类似的尝试,应该还有一个回调函数需要重写,display->gx_display_driver_simple_line_draw

eric2013 发表于 2022-8-1 10:45:04

guoxiang 发表于 2022-8-1 08:23
国产芯片也能用吗?

能,开源有源码的。可以移植。

guoxiang 发表于 2022-8-1 17:25:05

eric2013 发表于 2022-8-1 10:45
能,开源有源码的。可以移植。

GUIX不是没有授权给国产芯片吧

eric2013 发表于 2022-8-3 09:53:15

guoxiang 发表于 2022-8-1 17:25
GUIX不是没有授权给国产芯片吧

对,国产的不行,没授权。

zhengwending 发表于 2022-8-28 08:01:27

画布 是什么意思?

banzhangzzw 发表于 2022-9-1 17:08:04

移植到别的MCU时直接替换掉GUIX/source文件夹就行了?

eric2013 发表于 2022-9-2 11:34:30

zhengwending 发表于 2022-8-28 08:01
画布 是什么意思?

就跟显存差不多。

eric2013 发表于 2022-9-2 11:45:36

banzhangzzw 发表于 2022-9-1 17:08
移植到别的MCU时直接替换掉GUIX/source文件夹就行了?

仅替换这个不行,最好先做个模板,然后移植修改就方便很多了。

luy3728000 发表于 2023-1-29 17:19:12

eric2013 发表于 2022-8-1 10:45
能,开源有源码的。可以移植。

请问一下,商用收费吗?

eric2013 发表于 2023-1-29 18:01:05

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.

xxs65 发表于 2023-1-31 11:13:15







硬汉大哥,ThreadX GUIX直驱方案中,对于小内存的MCU,如何设置Canvas地址地址呢,对于ILI9488,SPI LCD屏,Canvas_Memory最少要多大合适?

eric2013 发表于 2023-1-31 11:31:45

xxs65 发表于 2023-1-31 11:13
硬汉大哥,ThreadX GUIX直驱方案中,对于小内存的MCU,如何设置Canvas地址地址呢,对于ILI9488 ...

这个例子没有使用外部的,用的是内部定义的内存,开了20KB.

#define         GUI_NUMBYTES   20*1024
uint8_t       MemoryBlock;/* 动态内存地址    */

xxs65 发表于 2023-1-31 12:09:40

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

eric2013 发表于 2023-1-31 12:28:33

xxs65 发表于 2023-1-31 12:09
/*
********************************************************************************************** ...

这个是个句柄ID区分,可以随意定义。

xxs65 发表于 2023-1-31 12:57:53

eric2013 发表于 2023-1-31 12:28
这个是个句柄ID区分,可以随意定义。

谢谢硬汉大哥指导

liubuf 发表于 2023-1-31 19:26:50

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 这几个函数。

wacos 发表于 2023-3-24 15:49:49

版主你好,这个例程请问用哪个版本的MDK编译?我的是MDK5.25 V6.9的,编译出很多错误

eric2013 发表于 2023-3-24 19:10:42

wacos 发表于 2023-3-24 15:49
版主你好,这个例程请问用哪个版本的MDK编译?我的是MDK5.25 V6.9的,编译出很多错误

要用MDK5.3X编译。

wacos 发表于 2023-3-25 09:50:25

eric2013 发表于 2023-3-24 19:10
要用MDK5.3X编译。

感谢,已经编译成功了,非常感谢
页: [1] 2
查看完整版本: ThreadX GUIX直驱方案搞定,任何显示屏,低资源的MCU都可以跑了,不再需要画布,附工程下载