Melis4.0[D1s]:5.测试笔记 - 修改显示测试源码
文章目录
- 1.将显示命令参数固化
- 2.disp_mem源码阅读
- 3.Melis子目录Makefile编写
本文是下一篇文章Melis4.0[D1s]:6.mango-MQ-R基于Melis移植lvgl 的基础知识。
1.将显示命令参数固化
从上一篇文章《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);
}
上面的函数除了初始化,还依次显示红屏,绿屏,蓝屏。
2.disp_mem源码阅读
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 bufferif(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;//Btmp+=4;}}
FILE_CLOSE:if(!fh)fclose(fh);
OUT:return ret;
}
这个函数关键部分就是往显存地址 mem = g_disp_mm[mem_id].info_base里面填写像素数据。这里的mem_id = 0.
3.Melis子目录Makefile编写
我要大改 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.oobj-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
相关文章:

Melis4.0[D1s]:5.测试笔记 - 修改显示测试源码
文章目录1.将显示命令参数固化2.disp_mem源码阅读3.Melis子目录Makefile编写本文是下一篇文章Melis4.0[D1s]:6.mango-MQ-R基于Melis移植lvgl 的基础知识。 1.将显示命令参数固化 从上一篇文章《Melis4.0[D1s]:4.测试笔记 - 内嵌的显示命令》知道,只要2个命令就可以…...

yolov7目标检测:基于自定义数据集完成检测、训练、测试
文章目录 前言一、环境与文件准备1.1、环境配置1.2、源码下载1.3、权重文件下载1.4、详解源码中的文件夹与文件1.5、详解配置参数二、检测模型(detect.py)2.1、自定义检测数据准备2.2、配置参数2.2.1、方式一:打开Pycharm,进入Terminal,输入指令开始检测2.2.2、方式二:点…...

托福高频真词List13 // 附托福TPO阅读真题
目录 4.4单词 生词 熟词 4.5真题 4.4单词 生词 🫐damagemutilatev.损害🫐outlyingfarfar from the centeradj.偏远的🫐posterity[pɑːˈsterəti]further generationn.后代🫐🫐premiseassumpti…...

动力节点王鹤SpringBoot3笔记——第八章 文章管理模块
目录 第八章 文章管理模块 8.1 配置文件 8.2 视图文件 8.3 Java代码 第八章 文章管理模块 创建新的Spring Boot项目,综合运用视频中的知识点,做一个文章管理的后台应用。 新的Spring Boot项目Lession20-BlogAdmin。Maven构建工具,包…...

ROS功能包|mav_control_rw(基于MPC的无人机轨迹跟踪控制)---gazebo仿真测试
ROS功能包|mav_control_rw(基于MPC的无人机轨迹跟踪控制)---gazebo仿真测试gazebo仿真测试gazebo仿真测试 启动gazebo并加载无人机模型 $ roslaunch rotors_gazebo mav.launch mav_name:firefly启动 linear mpc 控制器 $ roslaunch mav_linear_mpc ma…...

iOS 内存管理机制与原理
内存分区 内存一般分为五大区:栈区、堆区、常量区、全局区、代码区。如图 1.栈区 是由编译器自动分配并释放的,主要用来存储局部变量、函数的参数等,是一块连续的内存区域,遵循先进后出(FILO)原则。一般在…...

Linux之父:连你自己都懒得解释,那这就是一堆垃圾!
不出意外,Linus又开喷了,这次的激情开麦,源自一部分没有做注释的合并请求:Linux6.3内核收到了一部分合并请求,但这部分合并完全没有注释。 如果你懒得解释为什么存在一个合并,那这个合并从本质上来说就是错…...

二战华为成功上岸,准备了小半年,要个27k应该也算不上很高吧~
先说下我基本情况,本科不是计算机专业,现在是学通信,然后做图像处理,可能面试官看我不是科班出身没有问太多计算机相关的问题,因为第一次找工作,华为的游戏专场又是最早开始的,就投递了…...

全国青少年电子信息智能创新大赛(复赛)python·模拟三卷,含答案解析
目录 一、编程题 答案解析: 文档下载打印: 老子搞不懂了,答案解析,还版权问题,有毛病是不。谁在瞎投诉啊。 全国青少年电子信息智能创新大赛(复赛)python模拟三卷 一、编程题 第一题:描述 输入某学生成绩,若成绩在 85分及以上,输出“A”,若成绩在 60分到 85分之间…...

服务网关选型指南
1、为服务网关选型需要考虑哪些因素? 功能需求:您需要考虑您的服务网关需要提供哪些功能,例如 API 管理、请求转发、负载均衡、安全认证等。您应该选择能够满足您的需求的服务网关。 可扩展性:您的服务网关需要能够扩展以支持未来…...

华为OD机试-查找充电设备组合-2022Q4 A卷-Py/Java/JS
某个充电站,可提供n个充电设备,每个充电设备均有对应的输出功率。任意个充电设备组合的输出功率总和,均构成功率集合P的1个元素。功率集合P的最优元素,表示最接近充电站最大输出功率P_max的元素 输入描述 输入为3行: 第1行为充电设…...

免费好用的oa系统有哪些?盘点这几款!
免费好用的oa系统有哪些?盘点这几款! 办公自动化(OA),英文Office Automation的缩写。它可以通过特定流程或特定环节与日常事务联系在一起,使公文在流转、审批、发布等方面提高效率,实现办公管理…...

光伏发电系统模拟及其发电预测开源python工具pvlib
1. 太阳辐照量模拟 pysolar是一个用于计算太阳位置和辐照量的Python库。它是基于python语言编写的,可以方便地在各种python项目中使用。pysolar主要用于计算太阳的位置、太阳高度角、太阳方位角、日出和日落时间等信息。这些信息可以用于太阳能电池板和太阳能集热器…...

精彩回顾 | 2023工赋Meetup—上海站
2023工赋Meetup—上海站 2023年4月2日下午,在上海数字长宁体验馆举办的“价值驱动的数字化转型技术专场”Meetup圆满落幕,本次活动由工赋开发者社区主办,上海市工业互联网协会指导,长宁区东虹桥发展办公室和积梦智能联合主办。 …...

[oeasy]python0132_[专业选修]utf-8_unicode_transformation_format_8_编码方式
utf-8 回忆上次内容 上次再次输出了大红心♥ 找到了红心对应的编码黑红梅方都对应有编码 原来的编码叫做 ascii️ \u这种新的编码方式叫unicode包括了 中日韩字符集等 各书写系统的字符集 但是有个问题 拜这个字在字节中应该是b"\x62\xdc"两个字节 该如何理解b&qu…...

DNS 的解析过程以及相关问题
文章目录DNS解析过程DNS 为什么用 UDP简单说下怎么实现 DNS 劫持谈谈你对域名缓存的了解DNS解析过程 浏览器首先看看自己浏览器缓存有没有对应的IP记录,同时还要查询一下主机本地文件里面有没有对应的记录,如果有记录就没必要进行后面的步骤了。 浏览器…...

个人情况-单词练习
目录 前言原文兴趣爱好特长专业习惯理想志向情境常用单词性别家庭成员正面性格前言 加油 原文 1.come from… 来自…… I come from Shanghai. 我来自上海/我是上海人。 2.born[bɔrn]adj.出生的 be born into + 家庭 出身……的家庭 George was born into a poor fami…...

python天狗吃月 青少年编程电子学会python编程等级考试一级真题解析2022年9月
目录 python天狗吃月 一、题目要求 编程实现 二、解题思路 1、图形分析...

JAVA做语言国际化
项目场景: 问题描述 提示:这里描述项目中遇到的问题: 例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据 APP 中接收数据代码: Overridepublic void run() {bytes mmInStream.read(buff…...

面试题 16.19. 水域大小
题目链接 面试题 16.19. 水域大小 mid 题目描述 你有一个用于表示一片土地的整数矩阵 land,该矩阵中每个点的值代表对应地点的海拔高度。若值为 0 则表示水域。由垂直、水平或对角连接的水域为池塘。 池塘的大小是指相连接的水域的个数。 编写一个方法来计算矩阵…...

在vscode中切换分支,显示已经删除的远程分支
运行命令:修剪远程分支 git remote prune origin 然后远程的已经删除的分支就不见了。...

森林督查违法图斑内业报告高效制作实践技术
Python已成为最热门的编程语言之一,与arcpy、geopandas等行业软件包相结合,能极大程度地减轻森林督查违法图斑内业报告制作的工作量,显著提升工作效率。为了提升广大从业人员在森林违法图斑内业报告制作等方面的技能,内容主要包括…...

华为OD机试-日志限流-2022Q4 A卷-Py/Java/JS
某软件系统会在运行过程中持续产生日志,系统每天运行N单位时间,运行期间每单位时间产生的日志条数保行在数组 records中。records[i]表示第i单位时间内产生日志条数。 由于系统磁盘空间限制,每天可记录保存的日志总数上限为total条。 如果一天…...

ChatGPT能胜任高级程序员吗?
与开发人员信任的其他软件开发工具不同,AI工具在训练、构建、托管和使用方式等方面都存在一些独特的风险。 自2022年底ChatGPT发布以来,互联网上便充斥着对其几乎相同比例的支持和怀疑的论调。不管你是否喜欢它,AI正在逐步进入你的开发组织。…...

effective c++ item 25-29
item25:自定义swap函数 namespace std{template<typename T>void swap(T& a, T& b){T temp(a); // T要满足拷贝构造和拷贝赋值a b;b temp; } }1、Pimpl 2、自定义swap item26:尽可能延后变量的定义 case 1: temp j; for(int i 0; i < n; …...

MasterCAM实体旋转命令相关几个问题:曲线相交于边缘等
MasterCAM版本:2022 目的:通过旋转画杯子边缘主体 内外环直径分别是:56、60mm 命令:实体 - 旋转 问题: 一、处理实体期间错误parasolid(r) kernel 界面错误PK 错误代码:942-曲线相交于边缘 对应参数&a…...

p标签需要设置宽高吗?不用
Dusk: # 引用补丁,开头必须以 -javaagent: 开头,后面跟着补丁的绝对路径(可根据你实际的位置进行修改),注意路径一定要填写正确,且不能包含中文,否则会导致 IDEA 无法启动-javaagent:D:/ja-netfilter/ja-ne…...

Andorid 事件分发机制案例实操与解析
文章目录为什么要理解Android事件分发机制?滑动冲突类问题我们以什么开始?代码如下:activity xml 代码:Activity代码:item_user.xml代码修改后代码如下:Activity xmlactivity代码item_gift.xml问题出现了An…...

Git 版本控制/项目迭代
一、Git的作用/为什么要进行版本控制? 什么是项目迭代? 搞开发的时候我们不是一次性就做好平台的所有功能,而是先上线一个功能差不多的版本让用户用着,然后不断迭代、修改,上线新的版本,所以一个项目就会…...

智慧农业大数据项目建设方案
智慧农业大数据项目建设方案 目录 项目概述.................................... 6...