diff --git a/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/SConscript b/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/SConscript index a8e9758425..3cb9a1dde7 100644 --- a/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/SConscript +++ b/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/SConscript @@ -5,7 +5,6 @@ cwd = GetCurrentDir() group = [] src = Glob('*.c') CPPPATH = [cwd] -CPPDEFINES = [] list = os.listdir(cwd) for d in list: @@ -13,6 +12,6 @@ for d in list: if os.path.isfile(os.path.join(path, 'SConscript')): group = group + SConscript(os.path.join(d, 'SConscript')) -group = group + DefineGroup('LVGL-port', src, depend = ['BSP_USING_LVGL'], CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES) +group = group + DefineGroup('LVGL-port', src, depend = ['BSP_USING_LVGL'], CPPPATH = CPPPATH) Return('group') diff --git a/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/demo/SConscript b/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/demo/SConscript new file mode 100644 index 0000000000..00aa5f9426 --- /dev/null +++ b/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/demo/SConscript @@ -0,0 +1,10 @@ +from building import * + +cwd = GetCurrentDir() +group = [] +src = Glob('*.c') +CPPPATH = [cwd] + +group = group + DefineGroup('LVGL-demo', src, depend = ['BSP_USING_LVGL', 'BSP_USING_LVGL_DEMO'], CPPPATH = CPPPATH) + +Return('group') diff --git a/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/lv_demo.c b/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/demo/lv_demo.c similarity index 80% rename from bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/lv_demo.c rename to bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/demo/lv_demo.c index 8223619a39..05aa14a982 100644 --- a/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/lv_demo.c +++ b/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/demo/lv_demo.c @@ -5,7 +5,7 @@ * * Change Logs: * Date Author Notes - * 2021-10-17 Meco Man First version + * 2022-05-05 Meco Man First version */ #include #include @@ -15,17 +15,17 @@ #include #ifndef LV_THREAD_STACK_SIZE - #define LV_THREAD_STACK_SIZE 4096 +#define LV_THREAD_STACK_SIZE 4096 #endif #ifndef LV_THREAD_PRIO - #define LV_THREAD_PRIO (RT_THREAD_PRIORITY_MAX * 2 / 8) +#define LV_THREAD_PRIO (RT_THREAD_PRIORITY_MAX * 2 / 8) #endif static struct rt_thread lvgl_thread; static rt_uint8_t lvgl_thread_stack[LV_THREAD_STACK_SIZE]; -static void lvgl_entry(void *parameter) +static void lvgl_thread_entry(void *parameter) { extern void lv_demo_music(void); lv_demo_music(); @@ -39,11 +39,9 @@ static void lvgl_entry(void *parameter) static int lvgl_demo_init(void) { - rt_thread_t tid; - rt_thread_init(&lvgl_thread, "LVGL", - lvgl_entry, + lvgl_thread_entry, RT_NULL, &lvgl_thread_stack[0], sizeof(lvgl_thread_stack), diff --git a/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/lv_conf.h b/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/lv_conf.h index 0259d0572b..8fc13921f0 100644 --- a/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/lv_conf.h +++ b/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/lv_conf.h @@ -11,6 +11,8 @@ #ifndef LV_CONF_H #define LV_CONF_H +#include + #define LV_USE_PERF_MONITOR 1 #define LV_COLOR_DEPTH 16 @@ -22,8 +24,8 @@ #define LV_ATTRIBUTE_MEM_ALIGN_SIZE 64 /* music player demo */ -#define LV_HOR_RES_MAX 480 -#define LV_VER_RES_MAX 272 +#define LV_HOR_RES_MAX LCD_WIDTH +#define LV_VER_RES_MAX LCD_HEIGHT #define LV_USE_DEMO_RTT_MUSIC 1 #define LV_DEMO_RTT_MUSIC_AUTO_PLAY 1 #define LV_FONT_MONTSERRAT_12 1 diff --git a/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/lv_port_disp.c b/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/lv_port_disp.c index 6637265667..9417b11d63 100644 --- a/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/lv_port_disp.c +++ b/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/lv_port_disp.c @@ -15,9 +15,9 @@ #include #if LV_USE_NXP_SOC - #include "fsl_gpio.h" - #include "fsl_elcdif.h" - #include "fsl_cache.h" +#include "fsl_gpio.h" +#include "fsl_elcdif.h" +#include "fsl_cache.h" #endif /*A static or global variable to store the buffers*/ @@ -26,15 +26,7 @@ static lv_disp_draw_buf_t disp_buf; static lv_disp_drv_t disp_drv; /*Descriptor of a display driver*/ /* Macros for panel. */ -#define LCD_WIDTH LV_HOR_RES_MAX -#define LCD_HEIGHT LV_VER_RES_MAX #define LCD_FB_BYTE_PER_PIXEL 2 -#define LCD_HSW 41 -#define LCD_HFP 4 -#define LCD_HBP 8 -#define LCD_VSW 10 -#define LCD_VFP 4 -#define LCD_VBP 2 #define LCD_POL_FLAGS \ (kELCDIF_DataEnableActiveHigh | kELCDIF_VsyncActiveLow | kELCDIF_HsyncActiveLow | kELCDIF_DriveDataOnRisingClkEdge) #define LCD_LCDIF_DATA_BUS kELCDIF_DataBus16Bit @@ -203,8 +195,6 @@ void LCDIF_IRQHandler(void) void lv_port_disp_init(void) { - static lv_disp_draw_buf_t disp_buf; - lv_disp_draw_buf_init(&disp_buf, s_frameBuffer[0], s_frameBuffer[1], LCD_WIDTH * LCD_HEIGHT); /*------------------------- diff --git a/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/squareline/SConscript b/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/squareline/SConscript new file mode 100644 index 0000000000..4c815c49b8 --- /dev/null +++ b/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/squareline/SConscript @@ -0,0 +1,15 @@ +# RT-Thread building script for bridge + +import os +from building import * + +cwd = GetCurrentDir() +objs = [] +list = os.listdir(cwd) + +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + objs = objs + SConscript(os.path.join(d, 'SConscript')) + +Return('objs') diff --git a/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/squareline/ui/README.md b/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/squareline/ui/README.md new file mode 100644 index 0000000000..c9caca0e3c --- /dev/null +++ b/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/squareline/ui/README.md @@ -0,0 +1,2 @@ +This folder is for LVGL Squareline Studio + diff --git a/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/squareline/ui/SConscript b/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/squareline/ui/SConscript new file mode 100644 index 0000000000..dc89784ac0 --- /dev/null +++ b/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/squareline/ui/SConscript @@ -0,0 +1,10 @@ +from building import * + +cwd = GetCurrentDir() +group = [] +src = Glob('*.c') +CPPPATH = [cwd] + +group = group + DefineGroup('LVGL-SquareLine', src, depend = ['BSP_USING_LVGL', 'BSP_USING_LVGL_SQUARELINE'], CPPPATH = CPPPATH) + +Return('group') diff --git a/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/squareline/ui/lv_ui_entry.c b/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/squareline/ui/lv_ui_entry.c new file mode 100644 index 0000000000..720dab70d7 --- /dev/null +++ b/bsp/imxrt/imxrt1060-nxp-evk/applications/lvgl/squareline/ui/lv_ui_entry.c @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-10-17 Meco Man First version + */ +#include +#include +#include +#define DBG_TAG "LVGL.demo" +#define DBG_LVL DBG_INFO +#include + +#ifndef LV_THREAD_STACK_SIZE +#define LV_THREAD_STACK_SIZE 4096 +#endif + +#ifndef LV_THREAD_PRIO +#define LV_THREAD_PRIO (RT_THREAD_PRIORITY_MAX * 2 / 8) +#endif + +static struct rt_thread lvgl_thread; +static rt_uint8_t lvgl_thread_stack[LV_THREAD_STACK_SIZE]; + +static void lvgl_thread_entry(void *parameter) +{ + extern void ui_init(void); + ui_init(); + + while(1) + { + lv_task_handler(); + rt_thread_mdelay(5); + } +} + +static int lvgl_demo_init(void) +{ + rt_thread_init(&lvgl_thread, + "LVGL", + lvgl_thread_entry, + RT_NULL, + &lvgl_thread_stack[0], + sizeof(lvgl_thread_stack), + LV_THREAD_PRIO, + 10); + rt_thread_startup(&lvgl_thread); + + return 0; +} +INIT_APP_EXPORT(lvgl_demo_init); diff --git a/bsp/imxrt/imxrt1060-nxp-evk/board/Kconfig b/bsp/imxrt/imxrt1060-nxp-evk/board/Kconfig index 830193ba98..0e26acd5c3 100644 --- a/bsp/imxrt/imxrt1060-nxp-evk/board/Kconfig +++ b/bsp/imxrt/imxrt1060-nxp-evk/board/Kconfig @@ -30,7 +30,7 @@ menu "Onboard Peripheral Drivers" config LCD_WIDTH int "width" default 480 - + config LCD_HEIGHT int "height" default 272 @@ -38,24 +38,31 @@ menu "Onboard Peripheral Drivers" config LCD_HFP int "HFP" default 4 + config LCD_VFP int "VFP" default 4 + config LCD_HBP int "HBP" default 8 + config LCD_VBP int "VBP" default 2 + config LCD_HSW int "HSW" default 40 + config LCD_VSW int "VSW" default 10 + config LCD_BL_PIN int "Backlight ctrl pin" default 63 + config LCD_RST_PIN int "Reset pin" default 2 @@ -67,9 +74,18 @@ menu "Onboard Peripheral Drivers" select BSP_USING_CACHE select BSP_USING_LCD select PKG_USING_LVGL - select PKG_USING_LV_MUSIC_DEMO default n + if BSP_USING_LVGL + config BSP_USING_LVGL_DEMO + bool "Enable LVGL demo" + select PKG_USING_LV_MUSIC_DEMO + default n + + config BSP_USING_LVGL_SQUARELINE + bool "Support LVGL SuqareLine Studio" + default n + endif endmenu menu "On-chip Peripheral Drivers" diff --git a/bsp/stm32/stm32f469-st-disco/applications/lvgl/lv_demo.c b/bsp/stm32/stm32f469-st-disco/applications/lvgl/lv_demo.c index 0026e0c06b..3059324258 100644 --- a/bsp/stm32/stm32f469-st-disco/applications/lvgl/lv_demo.c +++ b/bsp/stm32/stm32f469-st-disco/applications/lvgl/lv_demo.c @@ -15,11 +15,11 @@ #include #ifndef LV_THREAD_STACK_SIZE - #define LV_THREAD_STACK_SIZE 4096 +#define LV_THREAD_STACK_SIZE 4096 #endif #ifndef LV_THREAD_PRIO - #define LV_THREAD_PRIO (RT_THREAD_PRIORITY_MAX * 2 / 8) +#define LV_THREAD_PRIO (RT_THREAD_PRIORITY_MAX * 2 / 8) #endif static struct rt_thread lvgl_thread; @@ -39,8 +39,6 @@ static void lvgl_entry(void *parameter) static int lvgl_demo_init(void) { - rt_thread_t tid; - rt_thread_init(&lvgl_thread, "LVGL", lvgl_entry,