当前位置: 首页 > news >正文

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应该也算不上很高吧~

先说下我基本情况,本科不是计算机专业,现在是学通信,然后做图像处理,可能面试官看我不是科班出身没有问太多计算机相关的问题,因为第一次找工作,华为的游戏专场又是最早开始的,就投递了&#xf…...

全国青少年电子信息智能创新大赛(复赛)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 则表示水域。由垂直、水平或对角连接的水域为池塘。 池塘的大小是指相连接的水域的个数。 编写一个方法来计算矩阵…...

3步解锁鸣潮性能上限:WaveTools工具箱的帧率优化与抽卡分析实践

3步解锁鸣潮性能上限:WaveTools工具箱的帧率优化与抽卡分析实践 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 你是否在《鸣潮》游戏中遭遇过帧率卡顿、画质设置受限或抽卡记录混乱的困扰&…...

保姆级教程:用ESP32 AT固件实现手机蓝牙配对,从编译到连接一次搞定

ESP32蓝牙开发实战:从固件编译到手机配对的完整指南 在物联网设备开发中,蓝牙连接是最基础也最常用的功能之一。ESP32作为一款高性价比的Wi-Fi/蓝牙双模芯片,凭借其出色的性能和丰富的开发资源,已经成为智能家居、可穿戴设备等领域…...

WandEnhancer:彻底解锁WeMod专业版功能的终极解决方案

WandEnhancer:彻底解锁WeMod专业版功能的终极解决方案 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 还在为WeMod免费版的种种限制而烦恼吗…...

国产巴伦替代 Mini-Circuits TCM1‑63AX+,H3‑TCM1‑63AX+ 现货可原位替代

最近很多做射频 / 通信 / 无线项目的朋友都在找Mini TCM1‑63AX 的国产替代,既要性能对标、又要现货快交、还要价格友好。给大家分享一款恒利泰 H3‑TCM1‑63AX,完全原位替代 TCM1‑63AX,参数一致、脚位兼容,直接替换不用改板。 ✅…...

SmartDock:让Android设备拥有桌面级生产力的智能启动器

SmartDock:让Android设备拥有桌面级生产力的智能启动器 【免费下载链接】smartdock A user-friendly desktop mode launcher that offers a modern and customizable user interface 项目地址: https://gitcode.com/gh_mirrors/smar/smartdock 你是否曾经想过…...

nodejs后端服务如何接入taotoken调用多模型能力

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Node.js 后端服务如何接入 Taotoken 调用多模型能力 基础教程类,面向使用 Node.js 构建后端服务或前端应用的开发者&am…...

PySOT单目标跟踪实战:从零搭建环境到模型部署的避坑指南(手把手教学,附代码)

1. 环境准备:从零搭建PySOT开发环境 第一次接触PySOT时,我花了整整两天时间折腾环境配置,踩遍了所有能踩的坑。为了让你们少走弯路,我把这些经验整理成可复现的步骤。首先需要明确的是,PySOT对系统环境有特定要求&…...

clj-kondo Hook系统完全指南:自定义宏和函数的智能分析

clj-kondo Hook系统完全指南:自定义宏和函数的智能分析 【免费下载链接】clj-kondo Static analyzer and linter for Clojure code that sparks joy 项目地址: https://gitcode.com/gh_mirrors/cl/clj-kondo clj-kondo 是一款为 Clojure 代码提供静态分析和 …...

5G入网第一步:手把手拆解Msg3 PUSCH传输的时频资源分配(附避坑指南)

5G入网第一步:手把手拆解Msg3 PUSCH传输的时频资源分配(附避坑指南) 当5G终端尝试接入网络时,随机接入流程中的Msg3 PUSCH传输往往是工程师们遇到的第一个技术深水区。作为首个由基站调度的上行共享信道传输,Msg3承载着…...

告别文献混乱!Mendeley保姆级入门指南:从安装、导入到Word引用,一篇搞定

Mendeley科研文献管理全流程实战:从零搭建高效学术工作流 刚踏入科研领域的研究生们,往往会被海量文献淹没——下载的PDF散落各处,引用格式五花八门,重复阅读相同文献却找不到重点。这种混乱不仅消耗时间,更会打断研究…...