From 4c71eb2a7b742aca65eda1ab343aa1a646aea692 Mon Sep 17 00:00:00 2001 From: Vijay Kumar Banerjee Date: Wed, 18 Sep 2019 02:56:46 +0530 Subject: Add lvgl/hello: Sample Hello world app using littleVGL and libbsd --- lvgl/hello/test.c | 154 +++++++++++++++++++++++++++++++++++++++++++++++++++++ lvgl/hello/wscript | 32 +++++++++++ 2 files changed, 186 insertions(+) create mode 100644 lvgl/hello/test.c create mode 100644 lvgl/hello/wscript (limited to 'lvgl/hello') diff --git a/lvgl/hello/test.c b/lvgl/hello/test.c new file mode 100644 index 0000000..c85bb35 --- /dev/null +++ b/lvgl/hello/test.c @@ -0,0 +1,154 @@ +/* + * Copyright (c) 2019 Vijay Kumar Banerjee . + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +#include +#include + +#include +#include +#include +#include +#include + +#define PRIO_SHELL 150 +#define STACK_SIZE_SHELL (64 * 1024) + +#include + +void +libbsdhelper_start_shell(rtems_task_priority prio) +{ + rtems_status_code sc = rtems_shell_init( + "SHLL", + STACK_SIZE_SHELL, + prio, + CONSOLE_DEVICE_NAME, + false, + true, + NULL + ); + assert(sc == RTEMS_SUCCESSFUL); +} + +static void +Init(rtems_task_argument arg) +{ + rtems_status_code sc; + int exit_code; + (void)arg; + static lv_color_t buf[LV_HOR_RES_MAX*10]; + static lv_disp_buf_t disp_buf; + + puts("\nRTEMS LVGL HELLO WORLD\n"); + sc = rtems_bsd_initialize(); + assert(sc == RTEMS_SUCCESSFUL); + + lv_init(); + + fbdev_init(); + + lv_disp_buf_init(&disp_buf, buf, NULL, LV_HOR_RES_MAX*10); + + lv_disp_drv_t disp_drv; + lv_disp_drv_init(&disp_drv); + disp_drv.buffer = &disp_buf; + disp_drv.flush_cb = fbdev_flush; + lv_disp_drv_register(&disp_drv); + + lv_obj_t * label = lv_label_create(lv_scr_act(), NULL); + lv_label_set_text(label, "Hello world!"); + lv_obj_align(label, NULL, LV_ALIGN_CENTER, 0, 0); + + lv_tick_inc(5); + lv_task_handler(); + + /* Some time for USB device to be detected. */ + libbsdhelper_start_shell(PRIO_SHELL); + + + exit(0); +} + +/* + * Configure LibBSD. + */ +#define RTEMS_BSD_CONFIG_BSP_CONFIG +#define RTEMS_BSD_CONFIG_TERMIOS_KQUEUE_AND_POLL +#define RTEMS_BSD_CONFIG_INIT + +#include + +/* + * Configure RTEMS. + */ +#define CONFIGURE_MICROSECONDS_PER_TICK 1000 + +#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_LIBBLOCK + +#define CONFIGURE_FILESYSTEM_DOSFS +#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 32 + +#define CONFIGURE_UNLIMITED_OBJECTS +#define CONFIGURE_UNIFIED_WORK_AREAS +#define CONFIGURE_MAXIMUM_USER_EXTENSIONS 1 + +#define CONFIGURE_INIT_TASK_STACK_SIZE (64*1024) +#define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES +#define CONFIGURE_INIT_TASK_ATTRIBUTES RTEMS_FLOATING_POINT + +#define CONFIGURE_BDBUF_BUFFER_MAX_SIZE (32 * 1024) +#define CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS 4 +#define CONFIGURE_BDBUF_CACHE_MEMORY_SIZE (1 * 1024 * 1024) +#define CONFIGURE_BDBUF_READ_AHEAD_TASK_PRIORITY 97 +#define CONFIGURE_SWAPOUT_TASK_PRIORITY 97 + +//#define CONFIGURE_STACK_CHECKER_ENABLED + +#define CONFIGURE_RTEMS_INIT_TASKS_TABLE +#define CONFIGURE_INIT + +#include + +/* + * Configure Shell. + */ +#include +#include +#define CONFIGURE_SHELL_COMMANDS_INIT + +#define CONFIGURE_SHELL_USER_COMMANDS \ + &bsp_interrupt_shell_command, \ + &rtems_shell_ARP_Command, \ + &rtems_shell_I2C_Command + +#define CONFIGURE_SHELL_COMMANDS_ALL + +#include diff --git a/lvgl/hello/wscript b/lvgl/hello/wscript new file mode 100644 index 0000000..cbc001a --- /dev/null +++ b/lvgl/hello/wscript @@ -0,0 +1,32 @@ +# Copyright 2019 Vijay Kumar Banerjee (vijaykumar9597@gmail.com) +# +# This file's license is 2-clause BSD as in this distribution's LICENSE.2 file. +# + +import rtems_waf.rtems as rtems +import rtems_waf.rtems_bsd as rtems_bsd +import os + +def configure(conf): + rtems.check_lib_path(conf, lib = 'm') + rtems.check_lib_path(conf, lib = 'lvgl', mandatory = False) + rtems.check_lib_path(conf, lib = 'bsd', mandatory = False) + +def build(bld): + rtems.build(bld) + if rtems.check_lib(bld, ['bsd', 'lvgl']): + arch_inc_path = rtems.arch_bsp_include_path(str(bld.env.RTEMS_VERSION), + str(bld.env.RTEMS_ARCH_BSP)) + include_paths = ['', + 'lvgl', + 'lvgl/src', + 'lv_drivers/display',] + + for i in range(0,len(include_paths)): + include_paths[i] = os.path.join(bld.env.PREFIX, arch_inc_path, include_paths[i]) + + bld(features = 'c cprogram', + target = 'lvgl_hello.exe', + source = ['test.c'], + includes = include_paths, + lib = ['m', 'lvgl', 'bsd']) -- cgit v1.2.3