本文是下一篇文章Melis4.0[D1s]:6.mango-MQ-R基于Melis移植lvgl 的基础知识。
从上一篇文章《Melis4.0[D1s]:4.测试笔记 - 内嵌的显示命令》知道,只要2个命令就可以显示:
# 1.对显示内存全部填充红色
disp_mem -mem_id 0 -size 800 480 -file r
# 2.配置显示图层
disp_layer_cfg -in_fb 0 800 480 0 0 800 480 4
我们可以把这2个命令参数写成固定,自动调用这2个命令就可以完成显示初始化。
于是我们可以把 disp_layer_cfg 传入参数先用固定值初始化好:
函数原型(所在文件 D1s-Melis/drivers/hal/test/disp2/disp_layer_cfg.c ):
int disp_layer_cfg(struct test_layer_cfg *test_cfg)
仿制一个初始值为固定值的函数:
int disp_layer_cfg_def(void)
{
struct test_layer_cfg cfg;
//g_screen_index = 0;
cfg.mem_id = 0;
cfg.screen_id = 0;
cfg.layer_cfg.channel = 0;
cfg.layer_id = 0;
cfg.layer_cfg.layer_id = 0;
cfg.layer_cfg.info.fb.format = 0;
cfg.layer_cfg.info.fb.size[0].width = 800;
cfg.layer_cfg.info.fb.size[0].height = 480;
cfg.layer_cfg.info.fb.crop.x = 0;
cfg.layer_cfg.info.fb.crop.y = 0;
cfg.layer_cfg.info.fb.crop.width = 800;
cfg.layer_cfg.info.fb.crop.height = 480;
cfg.layer_cfg.info.fb.align[0] = 4;
cfg.layer_cfg.info.mode = 0;
cfg.layer_cfg.info.alpha_mode = 1;
cfg.layer_cfg.info.alpha_value = 255;
cfg.layer_cfg.info.zorder = 0;
cfg.layer_cfg.info.screen_win.x = 0;
cfg.layer_cfg.info.screen_win.y = 0;
disp_mem(0, 800, 480, 0, "r"); // 显示红色
disp_layer_cfg(&cfg);
msleep(200);
disp_mem(0, 800, 480, 0, "g"); // 显示绿色
msleep(200);
disp_mem(0, 800, 480, 0, "b"); // 显示蓝色
msleep(200);
}
上面的函数除了初始化,还依次显示红屏,绿屏,蓝屏。
int disp_mem(u32 mem_id, u32 width, u32 height, u32 clear_flag, char *filename)
{
unsigned long arg[6];
int phy_adr, i, n, fb_width, fb_height;
int ret = -1;
FILE *fh = NULL;
void *mem = NULL;
unsigned long count = width*height;
char *tmp;
if(clear_flag) {
/* release memory && clear layer */
disp_mem_release(mem_id);
return 0;
}
//for_test we use r g b to set color buffer
if(filename[0] != 'r' && filename[0] != 'g' && filename[0] != 'b') {
if(filename != NULL)
fh = fopen(filename, "r");
if(!fh) {
printf("open file %s fail. \n", filename);
goto OUT;
}
}
fb_width = width;
fb_height = height;
ret = disp_mem_request(mem_id, fb_width*fb_height*4);
if(ret) {
printf("DISP_MEM_REQUEST 0\n");
goto FILE_CLOSE;
}
phy_adr = g_disp_mm[mem_id].mem_start;
mem = g_disp_mm[mem_id].info_base;
tmp = mem;
g_p_mem_base = mem;
if(fh != NULL) {
memset((void*)mem, 0x0, fb_width*fb_height*4);
fread((void *)mem, fb_width * fb_height * 4, 1, fh);
} else {
while(count--) {
*(tmp + 3) = 0xff;//A
*(tmp + 2) = filename[0]=='r'?0xff:0;//R
*(tmp + 1) = filename[0]=='g'?0xff:0;//G
*(tmp + 0) = filename[0]=='b'?0xff:0;//B
tmp+=4;
}
}
FILE_CLOSE:
if(!fh)
fclose(fh);
OUT:
return ret;
}
这个函数关键部分就是往显存地址 mem = g_disp_mm[mem_id].info_base里面填写像素数据。这里的mem_id = 0.
我要大改 disp_mem.c ,不想影响原来的代码,于是我把 disp_mem.c 复制一份,改名为 disp_mem_hwd.c ,因为很多函数重名,所以 disp_mem.c 不能参与编译。就这样修改:
只要把c文件名的 .c 后缀改为 .o 后缀,增加到 obj-y即可。
如果有子目录,则增加整个目录,如下一章我们编译lvgl,需要建立一个子目录 《lv_port_pc_eclipse》,把子目录也加到 obj-y里面:
subdir-ccflags-y += -I$(srctree)/ekernel/drivers/include \
-I$(srctree)/ekernel/core/rt-thread/include \
-I$(srctree)/ekernel/drivers/drv/source/disp2/soc
obj-y += disp_layer_cfg.o
obj-y += disp_mem_hwd.o
obj-y += disp_layer_alpha_test.o
obj-y += disp_layer_scal_test.o
obj-y += disp_layer_format_test.o
obj-y += disp_lbc_test.o
obj-y += lv_port_pc_eclipse/
然后在目录 《lv_port_pc_eclipse》 新建 Makefile 文件,把需要编译的c文件名加入 obj-y即可。内容如下:
obj-y += lv_main.o
obj-y += \
lvgl/demos/benchmark/assets/img_benchmark_cogwheel_alpha16.o \
lvgl/demos/benchmark/assets/img_benchmark_cogwheel_argb.o \
lvgl/demos/benchmark/assets/img_benchmark_cogwheel_chroma_keyed.o \
lvgl/demos/benchmark/assets/img_benchmark_cogwheel_indexed16.o \
lvgl/demos/benchmark/assets/img_benchmark_cogwheel_rgb.o \
lvgl/demos/benchmark/assets/img_benchmark_cogwheel_rgb565a8.o \
lvgl/demos/benchmark/assets/lv_font_bechmark_montserrat_12_compr_az.c.o \
lvgl/demos/benchmark/assets/lv_font_bechmark_montserrat_16_compr_az.c.o \
lvgl/demos/benchmark/assets/lv_font_bechmark_montserrat_28_compr_az.c.o \
lvgl/demos/benchmark/lv_demo_benchmark.o \
lvgl/demos/keypad_encoder/lv_demo_keypad_encoder.o \
lvgl/demos/music/assets/img_lv_demo_music_btn_corner_large.o \
lvgl/demos/music/assets/img_lv_demo_music_btn_list_pause.o \
lvgl/demos/music/assets/img_lv_demo_music_btn_list_pause_large.o \
lvgl/demos/music/assets/img_lv_demo_music_btn_list_play.o \
lvgl/demos/music/assets/img_lv_demo_music_btn_list_play_large.o \
lvgl/demos/music/assets/img_lv_demo_music_btn_loop.o \
lvgl/demos/music/assets/img_lv_demo_music_btn_loop_large.o \
lvgl/demos/music/assets/img_lv_demo_music_btn_next.o \
lvgl/demos/music/assets/img_lv_demo_music_btn_next_large.o \
lvgl/demos/music/assets/img_lv_demo_music_btn_pause.o \
lvgl/demos/music/assets/img_lv_demo_music_btn_pause_large.o \
lvgl/demos/music/assets/img_lv_demo_music_btn_play.o \
lvgl/demos/music/assets/img_lv_demo_music_btn_play_large.o \
lvgl/demos/music/assets/img_lv_demo_music_btn_prev.o \
lvgl/demos/music/assets/img_lv_demo_music_btn_prev_large.o \
lvgl/demos/music/assets/img_lv_demo_music_btn_rnd.o \
lvgl/demos/music/assets/img_lv_demo_music_btn_rnd_large.o \
lvgl/demos/music/assets/img_lv_demo_music_corner_left.o \
lvgl/demos/music/assets/img_lv_demo_music_corner_left_large.o \
lvgl/demos/music/assets/img_lv_demo_music_corner_right.o \
lvgl/demos/music/assets/img_lv_demo_music_corner_right_large.o \
lvgl/demos/music/assets/img_lv_demo_music_cover_1.o \
lvgl/demos/music/assets/img_lv_demo_music_cover_1_large.o \
lvgl/demos/music/assets/img_lv_demo_music_cover_2.o \
lvgl/demos/music/assets/img_lv_demo_music_cover_2_large.o \
lvgl/demos/music/assets/img_lv_demo_music_cover_3.o \
lvgl/demos/music/assets/img_lv_demo_music_cover_3_large.o \
lvgl/demos/music/assets/img_lv_demo_music_icon_1.o \
lvgl/demos/music/assets/img_lv_demo_music_icon_1_large.o \
lvgl/demos/music/assets/img_lv_demo_music_icon_2.o \
lvgl/demos/music/assets/img_lv_demo_music_icon_2_large.o \
lvgl/demos/music/assets/img_lv_demo_music_icon_3.o \
lvgl/demos/music/assets/img_lv_demo_music_icon_3_large.o \
lvgl/demos/music/assets/img_lv_demo_music_icon_4.o \
lvgl/demos/music/assets/img_lv_demo_music_icon_4_large.o \
lvgl/demos/music/assets/img_lv_demo_music_list_border.o \
lvgl/demos/music/assets/img_lv_demo_music_list_border_large.o \
lvgl/demos/music/assets/img_lv_demo_music_logo.o \
lvgl/demos/music/assets/img_lv_demo_music_slider_knob.o \
lvgl/demos/music/assets/img_lv_demo_music_slider_knob_large.o \
lvgl/demos/music/assets/img_lv_demo_music_wave_bottom.o \
lvgl/demos/music/assets/img_lv_demo_music_wave_bottom_large.o \
lvgl/demos/music/assets/img_lv_demo_music_wave_top.o \
lvgl/demos/music/assets/img_lv_demo_music_wave_top_large.o \
lvgl/demos/music/lv_demo_music.o \
lvgl/demos/music/lv_demo_music_list.o \
lvgl/demos/music/lv_demo_music_main.o \
lvgl/demos/stress/lv_demo_stress.o \
lvgl/demos/widgets/assets/img_clothes.o \
lvgl/demos/widgets/assets/img_demo_widgets_avatar.o \
lvgl/demos/widgets/assets/img_lvgl_logo.o \
lvgl/demos/widgets/lv_demo_widgets.o \
lvgl/examples/anim/lv_example_anim_1.o \
lvgl/examples/anim/lv_example_anim_2.o \
lvgl/examples/anim/lv_example_anim_3.o \
lvgl/examples/anim/lv_example_anim_timeline_1.o \
lvgl/examples/assets/animimg001.o \
lvgl/examples/assets/animimg002.o \
lvgl/examples/assets/animimg003.o \
lvgl/examples/assets/emoji/img_emoji_F617.o \
lvgl/examples/assets/img_caret_down.o \
lvgl/examples/assets/img_cogwheel_alpha16.o \
lvgl/examples/assets/img_cogwheel_argb.o \
lvgl/examples/assets/img_cogwheel_chroma_keyed.o \
lvgl/examples/assets/img_cogwheel_indexed16.o \
lvgl/examples/assets/img_cogwheel_rgb.o \
lvgl/examples/assets/img_hand.o \
lvgl/examples/assets/img_skew_strip.o \
lvgl/examples/assets/img_star.o \
lvgl/examples/assets/imgbtn_left.o \
lvgl/examples/assets/imgbtn_mid.o \
lvgl/examples/assets/imgbtn_right.o \
lvgl/examples/event/lv_example_event_1.o \
lvgl/examples/event/lv_example_event_2.o \
lvgl/examples/event/lv_example_event_3.o \
lvgl/examples/event/lv_example_event_4.o \
lvgl/examples/get_started/lv_example_get_started_1.o \
lvgl/examples/get_started/lv_example_get_started_2.o \
lvgl/examples/get_started/lv_example_get_started_3.o \
lvgl/examples/layouts/flex/lv_example_flex_1.o \
lvgl/examples/layouts/flex/lv_example_flex_2.o \
lvgl/examples/layouts/flex/lv_example_flex_3.o \
lvgl/examples/layouts/flex/lv_example_flex_4.o \
lvgl/examples/layouts/flex/lv_example_flex_5.o \
lvgl/examples/layouts/flex/lv_example_flex_6.o \
lvgl/examples/layouts/grid/lv_example_grid_1.o \
lvgl/examples/layouts/grid/lv_example_grid_2.o \
lvgl/examples/layouts/grid/lv_example_grid_3.o \
lvgl/examples/layouts/grid/lv_example_grid_4.o \
lvgl/examples/layouts/grid/lv_example_grid_5.o \
lvgl/examples/layouts/grid/lv_example_grid_6.o \
lvgl/examples/libs/bmp/lv_example_bmp_1.o \
lvgl/examples/libs/ffmpeg/lv_example_ffmpeg_1.o \
lvgl/examples/libs/ffmpeg/lv_example_ffmpeg_2.o \
lvgl/examples/libs/freetype/lv_example_freetype_1.o \
lvgl/examples/libs/gif/img_bulb_gif.o \
lvgl/examples/libs/gif/lv_example_gif_1.o \
lvgl/examples/libs/png/img_wink_png.o \
lvgl/examples/libs/png/lv_example_png_1.o \
lvgl/examples/libs/qrcode/lv_example_qrcode_1.o \
lvgl/examples/libs/rlottie/lv_example_rlottie_1.o \
lvgl/examples/libs/rlottie/lv_example_rlottie_2.o \
lvgl/examples/libs/rlottie/lv_example_rlottie_approve.o \
lvgl/examples/libs/sjpg/lv_example_sjpg_1.o \
lvgl/examples/others/fragment/lv_example_fragment_1.o \
lvgl/examples/others/fragment/lv_example_fragment_2.o \
lvgl/examples/others/gridnav/lv_example_gridnav_1.o \
lvgl/examples/others/gridnav/lv_example_gridnav_2.o \
lvgl/examples/others/gridnav/lv_example_gridnav_3.o \
lvgl/examples/others/gridnav/lv_example_gridnav_4.o \
lvgl/examples/others/ime/lv_example_ime_pinyin_1.o \
lvgl/examples/others/ime/lv_example_ime_pinyin_2.o \
lvgl/examples/others/imgfont/lv_example_imgfont_1.o \
lvgl/examples/others/monkey/lv_example_monkey_1.o \
lvgl/examples/others/monkey/lv_example_monkey_2.o \
lvgl/examples/others/monkey/lv_example_monkey_3.o \
lvgl/examples/others/msg/lv_example_msg_1.o \
lvgl/examples/others/msg/lv_example_msg_2.o \
lvgl/examples/others/msg/lv_example_msg_3.o \
lvgl/examples/others/snapshot/lv_example_snapshot_1.o \
lvgl/examples/porting/lv_port_disp_template.o \
lvgl/examples/porting/lv_port_fs_template.o \
lvgl/examples/porting/lv_port_indev_template.o \
lvgl/examples/scroll/lv_example_scroll_1.o \
lvgl/examples/scroll/lv_example_scroll_2.o \
lvgl/examples/scroll/lv_example_scroll_3.o \
lvgl/examples/scroll/lv_example_scroll_4.o \
lvgl/examples/scroll/lv_example_scroll_5.o \
lvgl/examples/scroll/lv_example_scroll_6.o \
lvgl/examples/styles/lv_example_style_1.o \
lvgl/examples/styles/lv_example_style_10.o \
lvgl/examples/styles/lv_example_style_11.o \
lvgl/examples/styles/lv_example_style_12.o \
lvgl/examples/styles/lv_example_style_13.o \
lvgl/examples/styles/lv_example_style_14.o \
lvgl/examples/styles/lv_example_style_15.o \
lvgl/examples/styles/lv_example_style_2.o \
lvgl/examples/styles/lv_example_style_3.o \
lvgl/examples/styles/lv_example_style_4.o \
lvgl/examples/styles/lv_example_style_5.o \
lvgl/examples/styles/lv_example_style_6.o \
lvgl/examples/styles/lv_example_style_7.o \
lvgl/examples/styles/lv_example_style_8.o \
lvgl/examples/styles/lv_example_style_9.o \
lvgl/examples/widgets/animimg/lv_example_animimg_1.o \
lvgl/examples/widgets/arc/lv_example_arc_1.o \
lvgl/examples/widgets/arc/lv_example_arc_2.o \
lvgl/examples/widgets/bar/lv_example_bar_1.o \
lvgl/examples/widgets/bar/lv_example_bar_2.o \
lvgl/examples/widgets/bar/lv_example_bar_3.o \
lvgl/examples/widgets/bar/lv_example_bar_4.o \
lvgl/examples/widgets/bar/lv_example_bar_5.o \
lvgl/examples/widgets/bar/lv_example_bar_6.o \
lvgl/examples/widgets/btn/lv_example_btn_1.o \
lvgl/examples/widgets/btn/lv_example_btn_2.o \
lvgl/examples/widgets/btn/lv_example_btn_3.o \
lvgl/examples/widgets/btnmatrix/lv_example_btnmatrix_1.o \
lvgl/examples/widgets/btnmatrix/lv_example_btnmatrix_2.o \
lvgl/examples/widgets/btnmatrix/lv_example_btnmatrix_3.o \
lvgl/examples/widgets/calendar/lv_example_calendar_1.o \
lvgl/examples/widgets/canvas/lv_example_canvas_1.o \
lvgl/examples/widgets/canvas/lv_example_canvas_2.o \
lvgl/examples/widgets/chart/lv_example_chart_1.o \
lvgl/examples/widgets/chart/lv_example_chart_2.o \
lvgl/examples/widgets/chart/lv_example_chart_3.o \
lvgl/examples/widgets/chart/lv_example_chart_4.o \
lvgl/examples/widgets/chart/lv_example_chart_5.o \
lvgl/examples/widgets/chart/lv_example_chart_6.o \
lvgl/examples/widgets/chart/lv_example_chart_7.o \
lvgl/examples/widgets/chart/lv_example_chart_8.o \
lvgl/examples/widgets/chart/lv_example_chart_9.o \
lvgl/examples/widgets/checkbox/lv_example_checkbox_1.o \
lvgl/examples/widgets/checkbox/lv_example_checkbox_2.o \
lvgl/examples/widgets/colorwheel/lv_example_colorwheel_1.o \
lvgl/examples/widgets/dropdown/lv_example_dropdown_1.o \
lvgl/examples/widgets/dropdown/lv_example_dropdown_2.o \
lvgl/examples/widgets/dropdown/lv_example_dropdown_3.o \
lvgl/examples/widgets/img/lv_example_img_1.o \
lvgl/examples/widgets/img/lv_example_img_2.o \
lvgl/examples/widgets/img/lv_example_img_3.o \
lvgl/examples/widgets/img/lv_example_img_4.o \
lvgl/examples/widgets/imgbtn/lv_example_imgbtn_1.o \
lvgl/examples/widgets/keyboard/lv_example_keyboard_1.o \
lvgl/examples/widgets/label/lv_example_label_1.o \
lvgl/examples/widgets/label/lv_example_label_2.o \
lvgl/examples/widgets/label/lv_example_label_3.o \
lvgl/examples/widgets/label/lv_example_label_4.o \
lvgl/examples/widgets/label/lv_example_label_5.o \
lvgl/examples/widgets/led/lv_example_led_1.o \
lvgl/examples/widgets/line/lv_example_line_1.o \
lvgl/examples/widgets/list/lv_example_list_1.o \
lvgl/examples/widgets/list/lv_example_list_2.o \
lvgl/examples/widgets/menu/lv_example_menu_1.o \
lvgl/examples/widgets/menu/lv_example_menu_2.o \
lvgl/examples/widgets/menu/lv_example_menu_3.o \
lvgl/examples/widgets/menu/lv_example_menu_4.o \
lvgl/examples/widgets/menu/lv_example_menu_5.o \
lvgl/examples/widgets/meter/lv_example_meter_1.o \
lvgl/examples/widgets/meter/lv_example_meter_2.o \
lvgl/examples/widgets/meter/lv_example_meter_3.o \
lvgl/examples/widgets/meter/lv_example_meter_4.o \
lvgl/examples/widgets/msgbox/lv_example_msgbox_1.o \
lvgl/examples/widgets/obj/lv_example_obj_1.o \
lvgl/examples/widgets/obj/lv_example_obj_2.o \
lvgl/examples/widgets/roller/lv_example_roller_1.o \
lvgl/examples/widgets/roller/lv_example_roller_2.o \
lvgl/examples/widgets/roller/lv_example_roller_3.o \
lvgl/examples/widgets/slider/lv_example_slider_1.o \
lvgl/examples/widgets/slider/lv_example_slider_2.o \
lvgl/examples/widgets/slider/lv_example_slider_3.o \
lvgl/examples/widgets/span/lv_example_span_1.o \
lvgl/examples/widgets/spinbox/lv_example_spinbox_1.o \
lvgl/examples/widgets/spinner/lv_example_spinner_1.o \
lvgl/examples/widgets/switch/lv_example_switch_1.o \
lvgl/examples/widgets/table/lv_example_table_1.o \
lvgl/examples/widgets/table/lv_example_table_2.o \
lvgl/examples/widgets/tabview/lv_example_tabview_1.o \
lvgl/examples/widgets/tabview/lv_example_tabview_2.o \
lvgl/examples/widgets/textarea/lv_example_textarea_1.o \
lvgl/examples/widgets/textarea/lv_example_textarea_2.o \
lvgl/examples/widgets/textarea/lv_example_textarea_3.o \
lvgl/examples/widgets/tileview/lv_example_tileview_1.o \
lvgl/examples/widgets/win/lv_example_win_1.o \
lvgl/src/core/lv_disp.o \
lvgl/src/core/lv_event.o \
lvgl/src/core/lv_group.o \
lvgl/src/core/lv_indev.o \
lvgl/src/core/lv_indev_scroll.o \
lvgl/src/core/lv_obj.o \
lvgl/src/core/lv_obj_class.o \
lvgl/src/core/lv_obj_draw.o \
lvgl/src/core/lv_obj_pos.o \
lvgl/src/core/lv_obj_scroll.o \
lvgl/src/core/lv_obj_style.o \
lvgl/src/core/lv_obj_style_gen.o \
lvgl/src/core/lv_obj_tree.o \
lvgl/src/core/lv_refr.o \
lvgl/src/core/lv_theme.o \
lvgl/src/draw/arm2d/lv_gpu_arm2d.o \
lvgl/src/draw/lv_draw.o \
lvgl/src/draw/lv_draw_arc.o \
lvgl/src/draw/lv_draw_img.o \
lvgl/src/draw/lv_draw_label.o \
lvgl/src/draw/lv_draw_layer.o \
lvgl/src/draw/lv_draw_line.o \
lvgl/src/draw/lv_draw_mask.o \
lvgl/src/draw/lv_draw_rect.o \
lvgl/src/draw/lv_draw_transform.o \
lvgl/src/draw/lv_draw_triangle.o \
lvgl/src/draw/lv_img_buf.o \
lvgl/src/draw/lv_img_cache.o \
lvgl/src/draw/lv_img_decoder.o \
lvgl/src/draw/nxp/lv_gpu_nxp.o \
lvgl/src/draw/nxp/pxp/lv_draw_pxp_blend.o \
lvgl/src/draw/nxp/pxp/lv_gpu_nxp_pxp.o \
lvgl/src/draw/nxp/pxp/lv_gpu_nxp_pxp_osa.o \
lvgl/src/draw/nxp/vglite/lv_draw_vglite_arc.o \
lvgl/src/draw/nxp/vglite/lv_draw_vglite_blend.o \
lvgl/src/draw/nxp/vglite/lv_draw_vglite_rect.o \
lvgl/src/draw/nxp/vglite/lv_gpu_nxp_vglite.o \
lvgl/src/draw/sdl/lv_draw_sdl.o \
lvgl/src/draw/sdl/lv_draw_sdl_arc.o \
lvgl/src/draw/sdl/lv_draw_sdl_bg.o \
lvgl/src/draw/sdl/lv_draw_sdl_composite.o \
lvgl/src/draw/sdl/lv_draw_sdl_img.o \
lvgl/src/draw/sdl/lv_draw_sdl_label.o \
lvgl/src/draw/sdl/lv_draw_sdl_layer.o \
lvgl/src/draw/sdl/lv_draw_sdl_line.o \
lvgl/src/draw/sdl/lv_draw_sdl_mask.o \
lvgl/src/draw/sdl/lv_draw_sdl_polygon.o \
lvgl/src/draw/sdl/lv_draw_sdl_rect.o \
lvgl/src/draw/sdl/lv_draw_sdl_stack_blur.o \
lvgl/src/draw/sdl/lv_draw_sdl_texture_cache.o \
lvgl/src/draw/sdl/lv_draw_sdl_utils.o \
lvgl/src/draw/stm32_dma2d/lv_gpu_stm32_dma2d.o \
lvgl/src/draw/sw/lv_draw_sw.o \
lvgl/src/draw/sw/lv_draw_sw_arc.o \
lvgl/src/draw/sw/lv_draw_sw_blend.o \
lvgl/src/draw/sw/lv_draw_sw_dither.o \
lvgl/src/draw/sw/lv_draw_sw_gradient.o \
lvgl/src/draw/sw/lv_draw_sw_img.o \
lvgl/src/draw/sw/lv_draw_sw_layer.o \
lvgl/src/draw/sw/lv_draw_sw_letter.o \
lvgl/src/draw/sw/lv_draw_sw_line.o \
lvgl/src/draw/sw/lv_draw_sw_polygon.o \
lvgl/src/draw/sw/lv_draw_sw_rect.o \
lvgl/src/draw/sw/lv_draw_sw_transform.o \
lvgl/src/draw/swm341_dma2d/lv_gpu_swm341_dma2d.o \
lvgl/src/extra/layouts/flex/lv_flex.o \
lvgl/src/extra/layouts/grid/lv_grid.o \
lvgl/src/extra/libs/bmp/lv_bmp.o \
lvgl/src/extra/libs/ffmpeg/lv_ffmpeg.o \
lvgl/src/extra/libs/freetype/lv_freetype.o \
lvgl/src/extra/libs/fsdrv/lv_fs_fatfs.o \
lvgl/src/extra/libs/fsdrv/lv_fs_posix.o \
lvgl/src/extra/libs/fsdrv/lv_fs_stdio.o \
lvgl/src/extra/libs/fsdrv/lv_fs_win32.o \
lvgl/src/extra/libs/gif/gifdec.o \
lvgl/src/extra/libs/gif/lv_gif.o \
lvgl/src/extra/libs/png/lodepng.o \
lvgl/src/extra/libs/png/lv_png.o \
lvgl/src/extra/libs/qrcode/lv_qrcode.o \
lvgl/src/extra/libs/qrcode/qrcodegen.o \
lvgl/src/extra/libs/rlottie/lv_rlottie.o \
lvgl/src/extra/libs/sjpg/lv_sjpg.o \
lvgl/src/extra/libs/sjpg/tjpgd.o \
lvgl/src/extra/lv_extra.o \
lvgl/src/extra/others/fragment/lv_fragment.o \
lvgl/src/extra/others/fragment/lv_fragment_manager.o \
lvgl/src/extra/others/gridnav/lv_gridnav.o \
lvgl/src/extra/others/ime/lv_ime_pinyin.o \
lvgl/src/extra/others/imgfont/lv_imgfont.o \
lvgl/src/extra/others/monkey/lv_monkey.o \
lvgl/src/extra/others/msg/lv_msg.o \
lvgl/src/extra/others/snapshot/lv_snapshot.o \
lvgl/src/extra/themes/basic/lv_theme_basic.o \
lvgl/src/extra/themes/default/lv_theme_default.o \
lvgl/src/extra/themes/mono/lv_theme_mono.o \
lvgl/src/extra/widgets/animimg/lv_animimg.o \
lvgl/src/extra/widgets/calendar/lv_calendar.o \
lvgl/src/extra/widgets/calendar/lv_calendar_header_arrow.o \
lvgl/src/extra/widgets/calendar/lv_calendar_header_dropdown.o \
lvgl/src/extra/widgets/chart/lv_chart.o \
lvgl/src/extra/widgets/colorwheel/lv_colorwheel.o \
lvgl/src/extra/widgets/imgbtn/lv_imgbtn.o \
lvgl/src/extra/widgets/keyboard/lv_keyboard.o \
lvgl/src/extra/widgets/led/lv_led.o \
lvgl/src/extra/widgets/list/lv_list.o \
lvgl/src/extra/widgets/menu/lv_menu.o \
lvgl/src/extra/widgets/meter/lv_meter.o \
lvgl/src/extra/widgets/msgbox/lv_msgbox.o \
lvgl/src/extra/widgets/span/lv_span.o \
lvgl/src/extra/widgets/spinbox/lv_spinbox.o \
lvgl/src/extra/widgets/spinner/lv_spinner.o \
lvgl/src/extra/widgets/tabview/lv_tabview.o \
lvgl/src/extra/widgets/tileview/lv_tileview.o \
lvgl/src/extra/widgets/win/lv_win.o \
lvgl/src/font/lv_font.o \
lvgl/src/font/lv_font_dejavu_16_persian_hebrew.o \
lvgl/src/font/lv_font_fmt_txt.o \
lvgl/src/font/lv_font_loader.o \
lvgl/src/font/lv_font_montserrat_10.o \
lvgl/src/font/lv_font_montserrat_12.o \
lvgl/src/font/lv_font_montserrat_12_subpx.o \
lvgl/src/font/lv_font_montserrat_14.o \
lvgl/src/font/lv_font_montserrat_16.o \
lvgl/src/font/lv_font_montserrat_18.o \
lvgl/src/font/lv_font_montserrat_20.o \
lvgl/src/font/lv_font_montserrat_22.o \
lvgl/src/font/lv_font_montserrat_24.o \
lvgl/src/font/lv_font_montserrat_26.o \
lvgl/src/font/lv_font_montserrat_28.o \
lvgl/src/font/lv_font_montserrat_28_compressed.o \
lvgl/src/font/lv_font_montserrat_30.o \
lvgl/src/font/lv_font_montserrat_32.o \
lvgl/src/font/lv_font_montserrat_34.o \
lvgl/src/font/lv_font_montserrat_36.o \
lvgl/src/font/lv_font_montserrat_38.o \
lvgl/src/font/lv_font_montserrat_40.o \
lvgl/src/font/lv_font_montserrat_42.o \
lvgl/src/font/lv_font_montserrat_44.o \
lvgl/src/font/lv_font_montserrat_46.o \
lvgl/src/font/lv_font_montserrat_48.o \
lvgl/src/font/lv_font_montserrat_8.o \
lvgl/src/font/lv_font_simsun_16_cjk.o \
lvgl/src/font/lv_font_unscii_16.o \
lvgl/src/font/lv_font_unscii_8.o \
lvgl/src/hal/lv_hal_disp.o \
lvgl/src/hal/lv_hal_indev.o \
lvgl/src/hal/lv_hal_tick.o \
lvgl/src/misc/lv_anim.o \
lvgl/src/misc/lv_anim_timeline.o \
lvgl/src/misc/lv_area.o \
lvgl/src/misc/lv_async.o \
lvgl/src/misc/lv_bidi.o \
lvgl/src/misc/lv_color.o \
lvgl/src/misc/lv_fs.o \
lvgl/src/misc/lv_gc.o \
lvgl/src/misc/lv_ll.o \
lvgl/src/misc/lv_log.o \
lvgl/src/misc/lv_lru.o \
lvgl/src/misc/lv_math.o \
lvgl/src/misc/lv_mem.o \
lvgl/src/misc/lv_printf.o \
lvgl/src/misc/lv_style.o \
lvgl/src/misc/lv_style_gen.o \
lvgl/src/misc/lv_templ.o \
lvgl/src/misc/lv_timer.o \
lvgl/src/misc/lv_tlsf.o \
lvgl/src/misc/lv_txt.o \
lvgl/src/misc/lv_txt_ap.o \
lvgl/src/misc/lv_utils.o \
lvgl/src/widgets/lv_arc.o \
lvgl/src/widgets/lv_bar.o \
lvgl/src/widgets/lv_btn.o \
lvgl/src/widgets/lv_btnmatrix.o \
lvgl/src/widgets/lv_canvas.o \
lvgl/src/widgets/lv_checkbox.o \
lvgl/src/widgets/lv_dropdown.o \
lvgl/src/widgets/lv_img.o \
lvgl/src/widgets/lv_label.o \
lvgl/src/widgets/lv_line.o \
lvgl/src/widgets/lv_objx_templ.o \
lvgl/src/widgets/lv_roller.o \
lvgl/src/widgets/lv_slider.o \
lvgl/src/widgets/lv_switch.o \
lvgl/src/widgets/lv_table.o \
lvgl/src/widgets/lv_textarea.o