基于UBUNTU18.04 Framebuffer运行LittleVGL

217 篇文章 29 订阅
98 篇文章 7 订阅

基于SDL的LittleVGL环境搭建请参考这里

这篇文章介绍通过修改上篇中的demo,将LittleVGL运行于ubuntu的framebuffer节点/dev/fb0之上:

修改点:

diff --git a/Makefile b/Makefile
index 59e07af..e00bd30 100644
--- a/Makefile
+++ b/Makefile
@@ -15,7 +15,7 @@ WARNINGS ?= -Werror -Wall -Wextra \
             -Wtype-limits -Wsizeof-pointer-memaccess -Wpointer-arith
             
 CFLAGS ?= -O3 -g0 -I$(LVGL_DIR)/ $(WARNINGS)
-LDFLAGS ?= -lSDL2 -lm
+LDFLAGS ?= -lm
 BIN = demo
 
 
diff --git a/lv_drivers b/lv_drivers
--- a/lv_drivers
+++ b/lv_drivers
@@ -1 +1 @@
-Subproject commit 8c96359f4199297809ab205870eb603b03d98b4e
+Subproject commit 8c96359f4199297809ab205870eb603b03d98b4e-dirty
diff --git a/lv_drv_conf.h b/lv_drv_conf.h
index 39a8c2d..af25a57 100644
--- a/lv_drv_conf.h
+++ b/lv_drv_conf.h
@@ -83,7 +83,7 @@
  *  Monitor of PC
  *-------------------*/
 #ifndef USE_MONITOR
-#  define USE_MONITOR         1
+#  define USE_MONITOR         0
 #endif
 
 #if USE_MONITOR
@@ -251,7 +251,7 @@
  *  Linux frame buffer device (/dev/fbx)
  *-----------------------------------------*/
 #ifndef USE_FBDEV
-#  define USE_FBDEV           0
+#  define USE_FBDEV           1
 #endif
 
 #if USE_FBDEV
diff --git a/main.c b/main.c
index 7b433e6..69a2187 100644
--- a/main.c
+++ b/main.c
@@ -82,7 +82,9 @@ int main(int argc, char **argv)
  */
 static void hal_init(void) {
   /* Use the 'monitor' driver which creates window on PC's monitor to simulate a display*/
-  monitor_init();
+  /*monitor_init();*/
+  void fbdev_init(void);
+  fbdev_init();
 
   /*Create a display buffer*/
   static lv_disp_buf_t disp_buf1;
@@ -93,7 +95,8 @@ static void hal_init(void) {
   lv_disp_drv_t disp_drv;
   lv_disp_drv_init(&disp_drv); /*Basic initialization*/
   disp_drv.buffer = &disp_buf1;
-  disp_drv.flush_cb = monitor_flush;
+  void fbdev_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * color_p);
+  disp_drv.flush_cb = fbdev_flush;
   lv_disp_drv_register(&disp_drv);
 
   /* Add the mouse as input device
@@ -130,7 +133,7 @@ static void hal_init(void) {
   /* Tick init.
    * You have to call 'lv_tick_inc()' in periodically to inform LittelvGL about
    * how much time were elapsed Create an SDL thread to do this*/
-  SDL_CreateThread(tick_thread, "tick", NULL);
+  /*SDL_CreateThread(tick_thread, "tick", NULL);*/
 
   /* Optional:
    * Create a memory monitor task which prints the memory usage in

默认的显示后端使用SDL, 主要修改点包括关闭默认的monitor显示后端,使能FBDEV后端,主要修改围绕这个改变展开。

编译:

CC main.c
cc -o demo ./main.o  lv_group.o lv_indev.o lv_disp.o lv_obj.o lv_refr.o lv_style.o lv_hal_disp.o lv_hal_indev.o lv_hal_tick.o lv_arc.o lv_bar.o lv_checkbox.o lv_cpicker.o lv_dropdown.o lv_keyboard.o lv_line.o lv_msgbox.o lv_spinner.o lv_roller.o lv_table.o lv_tabview.o lv_tileview.o lv_btn.o lv_calendar.o lv_chart.o lv_canvas.o lv_gauge.o lv_label.o lv_list.o lv_slider.o lv_textarea.o lv_spinbox.o lv_btnmatrix.o lv_cont.o lv_img.o lv_imgbtn.o lv_led.o lv_linemeter.o lv_page.o lv_switch.o lv_win.o lv_objmask.o lv_font.o lv_font_fmt_txt.o lv_font_loader.o lv_font_dejavu_16_persian_hebrew.o lv_font_montserrat_8.o lv_font_montserrat_10.o lv_font_montserrat_12.o lv_font_montserrat_12_subpx.o lv_font_montserrat_14.o lv_font_montserrat_16.o lv_font_montserrat_18.o lv_font_montserrat_20.o lv_font_montserrat_22.o lv_font_montserrat_24.o lv_font_montserrat_26.o lv_font_montserrat_28.o lv_font_montserrat_28_compressed.o lv_font_montserrat_30.o lv_font_montserrat_32.o lv_font_montserrat_34.o lv_font_montserrat_36.o lv_font_montserrat_38.o lv_font_montserrat_40.o lv_font_montserrat_42.o lv_font_montserrat_44.o lv_font_montserrat_46.o lv_font_montserrat_48.o lv_font_simsun_16_cjk.o lv_font_unscii_8.o lv_font_unscii_16.o lv_area.o lv_task.o lv_fs.o lv_anim.o lv_mem.o lv_ll.o lv_color.o lv_txt.o lv_txt_ap.o lv_math.o lv_log.o lv_gc.o lv_utils.o lv_async.o lv_printf.o lv_bidi.o lv_debug.o lv_theme.o lv_theme_empty.o lv_theme_material.o lv_theme_mono.o lv_theme_template.o lv_draw_mask.o lv_draw_blend.o lv_draw_rect.o lv_draw_label.o lv_draw_line.o lv_draw_img.o lv_draw_arc.o lv_draw_triangle.o lv_img_decoder.o lv_img_cache.o lv_img_buf.o lv_gpu_stm32_dma2d.o /home/caozilong/gui/pc_simulator/lv_drivers/win_drv.o /home/caozilong/gui/pc_simulator/lv_drivers/indev/mousewheel.o /home/caozilong/gui/pc_simulator/lv_drivers/indev/AD_touch.o /home/caozilong/gui/pc_simulator/lv_drivers/indev/mouse.o /home/caozilong/gui/pc_simulator/lv_drivers/indev/libinput.o /home/caozilong/gui/pc_simulator/lv_drivers/indev/evdev.o /home/caozilong/gui/pc_simulator/lv_drivers/indev/XPT2046.o /home/caozilong/gui/pc_simulator/lv_drivers/indev/keyboard.o /home/caozilong/gui/pc_simulator/lv_drivers/indev/FT5406EE8.o /home/caozilong/gui/pc_simulator/lv_drivers/gtkdrv/gtkdrv.o /home/caozilong/gui/pc_simulator/lv_drivers/display/ST7565.o /home/caozilong/gui/pc_simulator/lv_drivers/display/UC1610.o /home/caozilong/gui/pc_simulator/lv_drivers/display/R61581.o /home/caozilong/gui/pc_simulator/lv_drivers/display/fbdev.o /home/caozilong/gui/pc_simulator/lv_drivers/display/drm.o /home/caozilong/gui/pc_simulator/lv_drivers/display/ILI9341.o /home/caozilong/gui/pc_simulator/lv_drivers/display/monitor.o /home/caozilong/gui/pc_simulator/lv_drivers/display/GC9A01.o /home/caozilong/gui/pc_simulator/lv_drivers/display/SSD1963.o /home/caozilong/gui/pc_simulator/lv_drivers/display/SHARP_MIP.o lv_examples/src/lv_ex_widgets/lv_ex_calendar/lv_ex_calendar_1.o lv_examples/src/lv_ex_widgets/lv_ex_obj/lv_ex_obj_1.o lv_examples/src/lv_ex_widgets/lv_ex_arc/lv_ex_arc_2.o lv_examples/src/lv_ex_widgets/lv_ex_arc/lv_ex_arc_1.o lv_examples/src/lv_ex_widgets/lv_ex_linemeter/lv_ex_linemeter_1.o lv_examples/src/lv_ex_widgets/lv_ex_tabview/lv_ex_tabview_1.o lv_examples/src/lv_ex_widgets/lv_ex_table/lv_ex_table_1.o lv_examples/src/lv_ex_widgets/lv_ex_msgbox/lv_ex_msgbox_2.o lv_examples/src/lv_ex_widgets/lv_ex_msgbox/lv_ex_msgbox_1.o lv_examples/src/lv_ex_widgets/lv_ex_tileview/lv_ex_tileview_1.o lv_examples/src/lv_ex_widgets/lv_ex_led/lv_ex_led_1.o lv_examples/src/lv_ex_widgets/lv_ex_switch/lv_ex_switch_1.o lv_examples/src/lv_ex_widgets/lv_ex_label/lv_ex_label_2.o lv_examples/src/lv_ex_widgets/lv_ex_label/lv_ex_label_3.o lv_examples/src/lv_ex_widgets/lv_ex_label/lv_ex_label_1.o lv_examples/src/lv_ex_widgets/lv_ex_objmask/lv_ex_objmask_2.o lv_examples/src/lv_ex_widgets/lv_ex_objmask/lv_ex_objmask_1.o lv_examples/src/lv_ex_widgets/lv_ex_keyboard/lv_ex_keyboard_1.o lv_examples/src/lv_ex_widgets/lv_ex_page/lv_ex_page_1.o lv_examples/src/lv_ex_widgets/lv_ex_bar/lv_ex_bar_1.o lv_examples/src/lv_ex_widgets/lv_ex_slider/lv_ex_slider_2.o lv_examples/src/lv_ex_widgets/lv_ex_slider/lv_ex_slider_1.o lv_examples/src/lv_ex_widgets/lv_ex_dropdown/lv_ex_dropdown_1.o lv_examples/src/lv_ex_widgets/lv_ex_dropdown/lv_ex_dropdown_2.o lv_examples/src/lv_ex_widgets/lv_ex_chart/lv_ex_chart_2.o lv_examples/src/lv_ex_widgets/lv_ex_chart/lv_ex_chart_1.o lv_examples/src/lv_ex_widgets/lv_ex_roller/lv_ex_roller_1.o lv_examples/src/lv_ex_widgets/lv_ex_imgbtn/lv_ex_imgbtn_1.o lv_examples/src/lv_ex_widgets/lv_ex_imgbtn/imgbtn_green.o lv_examples/src/lv_ex_widgets/lv_ex_imgbtn/imgbtn_blue.o lv_examples/src/lv_ex_widgets/lv_ex_cpicker/lv_ex_cpicker_1.o lv_examples/src/lv_ex_widgets/lv_ex_cpicker/lv_ex_cpicker_2.o lv_examples/src/lv_ex_widgets/lv_ex_canvas/lv_ex_canvas_2.o lv_examples/src/lv_ex_widgets/lv_ex_canvas/lv_ex_canvas_1.o lv_examples/src/lv_ex_widgets/lv_ex_btn/lv_ex_btn_2.o lv_examples/src/lv_ex_widgets/lv_ex_btn/lv_ex_btn_1.o lv_examples/src/lv_ex_widgets/lv_ex_spinner/lv_ex_spinner_1.o lv_examples/src/lv_ex_widgets/lv_ex_spinbox/lv_ex_spinbox_1.o lv_examples/src/lv_ex_widgets/lv_ex_win/lv_ex_win_1.o lv_examples/src/lv_ex_widgets/lv_ex_line/lv_ex_line_1.o lv_examples/src/lv_ex_widgets/lv_ex_textarea/lv_ex_textarea_1.o lv_examples/src/lv_ex_widgets/lv_ex_textarea/lv_ex_textarea_2.o lv_examples/src/lv_ex_widgets/lv_ex_textarea/lv_ex_textarea_3.o lv_examples/src/lv_ex_widgets/lv_ex_cont/lv_ex_cont_1.o lv_examples/src/lv_ex_widgets/lv_ex_list/lv_ex_list_1.o lv_examples/src/lv_ex_widgets/lv_ex_gauge/lv_ex_gauge_2.o lv_examples/src/lv_ex_widgets/lv_ex_gauge/lv_ex_gauge_1.o lv_examples/src/lv_ex_widgets/lv_ex_img/lv_ex_img_3.o lv_examples/src/lv_ex_widgets/lv_ex_img/lv_ex_img_1.o lv_examples/src/lv_ex_widgets/lv_ex_img/lv_ex_img_2.o lv_examples/src/lv_ex_widgets/lv_ex_checkbox/lv_ex_checkbox_1.o lv_examples/src/lv_ex_widgets/lv_ex_btnmatrix/lv_ex_btnmatrix_1.o lv_examples/src/lv_demo_widgets/lv_demo_widgets.o lv_examples/src/lv_demo_music/lv_demo_music_list.o lv_examples/src/lv_demo_music/assets/img_lv_demo_music_btn_next.o lv_examples/src/lv_demo_music/assets/img_lv_demo_music_btn_list_play.o lv_examples/src/lv_demo_music/assets/img_lv_demo_music_icon_2.o lv_examples/src/lv_demo_music/assets/img_lv_demo_music_btn_loop.o lv_examples/src/lv_demo_music/assets/img_lv_demo_music_cover_1.o lv_examples/src/lv_demo_music/assets/img_lv_demo_music_btn_prev.o lv_examples/src/lv_demo_music/assets/img_lv_demo_music_slider_knob.o lv_examples/src/lv_demo_music/assets/img_lv_demo_music_cover_3.o lv_examples/src/lv_demo_music/assets/img_lv_demo_music_wave_bottom.o lv_examples/src/lv_demo_music/assets/img_lv_demo_music_corner_left.o lv_examples/src/lv_demo_music/assets/img_lv_demo_music_btn_play.o lv_examples/src/lv_demo_music/assets/img_lv_demo_music_btn_list_pause.o lv_examples/src/lv_demo_music/assets/img_lv_demo_music_wave_top.o lv_examples/src/lv_demo_music/assets/img_lv_demo_music_logo.o lv_examples/src/lv_demo_music/assets/lv_demo_music_font_16_bold.o lv_examples/src/lv_demo_music/assets/img_lv_demo_music_corner_right.o lv_examples/src/lv_demo_music/assets/img_lv_demo_music_icon_3.o lv_examples/src/lv_demo_music/assets/img_lv_demo_music_list_border.o lv_examples/src/lv_demo_music/assets/img_lv_demo_music_btn_rnd.o lv_examples/src/lv_demo_music/assets/img_lv_demo_music_btn_pause.o lv_examples/src/lv_demo_music/assets/img_lv_demo_music_icon_1.o lv_examples/src/lv_demo_music/assets/img_lv_demo_music_cover_2.o lv_examples/src/lv_demo_music/assets/img_lv_demo_music_icon_4.o lv_examples/src/lv_demo_music/lv_demo_music.o lv_examples/src/lv_demo_music/lv_demo_music_main.o lv_examples/src/lv_demo_keypad_encoder/lv_demo_keypad_encoder.o lv_examples/src/assets/img_cogwheel_argb.o lv_examples/src/assets/img_cogwheel_chroma_keyed.o lv_examples/src/assets/img_cogwheel_indexed16.o lv_examples/src/assets/lv_font_montserrat_12_compr_az.o lv_examples/src/assets/img_hand.o lv_examples/src/assets/lv_font_montserrat_16_compr_az.o lv_examples/src/assets/img_cogwheel_alpha16.o lv_examples/src/assets/lv_font_montserrat_28_compr_az.o lv_examples/src/assets/img_cogwheel_rgb.o lv_examples/src/lv_demo_printer/lv_demo_printer_theme.o lv_examples/src/lv_demo_printer/lv_demo_printer.o lv_examples/src/lv_demo_printer/images/lv_demo_printer_img_usb.o lv_examples/src/lv_demo_printer/images/lv_demo_printer_img_copy.o lv_examples/src/lv_demo_printer/images/lv_demo_printer_img_no_internet.o lv_examples/src/lv_demo_printer/images/lv_demo_printer_img_wave.o lv_examples/src/lv_demo_printer/images/lv_demo_printer_icon_hue.o lv_examples/src/lv_demo_printer/images/lv_demo_printer_img_setup.o lv_examples/src/lv_demo_printer/images/lv_demo_printer_img_print.o lv_examples/src/lv_demo_printer/images/lv_demo_printer_img_scan.o lv_examples/src/lv_demo_printer/images/lv_demo_printer_img_internet.o lv_examples/src/lv_demo_printer/images/lv_demo_printer_img_btn_bg_1.o lv_examples/src/lv_demo_printer/images/lv_demo_printer_icon_eco.o lv_examples/src/lv_demo_printer/images/lv_demo_printer_icon_tel.o lv_examples/src/lv_demo_printer/images/lv_demo_printer_icon_bright.o lv_examples/src/lv_demo_printer/images/lv_demo_printer_img_btn_bg_4.o lv_examples/src/lv_demo_printer/images/lv_demo_printer_img_cloud.o lv_examples/src/lv_demo_printer/images/lv_demo_printer_icon_pc.o lv_examples/src/lv_demo_printer/images/lv_demo_printer_img_ready.o lv_examples/src/lv_demo_printer/images/lv_demo_printer_img_printer2.o lv_examples/src/lv_demo_printer/images/lv_demo_printer_img_btn_bg_3.o lv_examples/src/lv_demo_printer/images/lv_demo_printer_img_phone.o lv_examples/src/lv_demo_printer/images/lv_demo_printer_img_btn_bg_2.o lv_examples/src/lv_demo_printer/images/lv_demo_printer_img_scan_example.o lv_examples/src/lv_demo_printer/images/lv_demo_printer_icon_wifi.o lv_examples/src/lv_demo_printer/images/lv_demo_printer_img_mobile.o lv_examples/src/lv_ex_get_started/lv_ex_get_started_2.o lv_examples/src/lv_ex_get_started/lv_ex_get_started_3.o lv_examples/src/lv_ex_get_started/lv_ex_get_started_1.o lv_examples/src/lv_demo_stress/lv_demo_stress.o lv_examples/src/lv_demo_benchmark/lv_demo_benchmark.o lv_examples/src/lv_ex_style/lv_ex_style_2.o lv_examples/src/lv_ex_style/lv_ex_style_3.o lv_examples/src/lv_ex_style/lv_ex_style_4.o lv_examples/src/lv_ex_style/lv_ex_style_9.o lv_examples/src/lv_ex_style/lv_ex_style_11.o lv_examples/src/lv_ex_style/lv_ex_style_5.o lv_examples/src/lv_ex_style/lv_ex_style_8.o lv_examples/src/lv_ex_style/lv_ex_style_1.o lv_examples/src/lv_ex_style/lv_ex_style_6.o lv_examples/src/lv_ex_style/lv_ex_style_7.o lv_examples/src/lv_ex_style/lv_ex_style_10.o /home/caozilong/gui/pc_simulator/mouse_cursor_icon.o -lm
caozilong@caozilong-Vostro-3268:~/gui/pc_simulator$ 

切换控制台并且运行:

sudo chvt 3


 结束!

 

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

papaofdoudou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值