summaryrefslogtreecommitdiffstats
path: root/lvgl/hello
diff options
context:
space:
mode:
Diffstat (limited to 'lvgl/hello')
-rw-r--r--lvgl/hello/test.c154
-rw-r--r--lvgl/hello/wscript32
2 files changed, 186 insertions, 0 deletions
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 <vijaykumar9597@gmail.com>.
+ * 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 <assert.h>
+#include <stdlib.h>
+#include <sysexits.h>
+
+#include <rtems.h>
+#include <rtems/bsd/bsd.h>
+#include <bsp/i2c.h>
+#include <rtems/console.h>
+#include <rtems/shell.h>
+
+#define PRIO_SHELL 150
+#define STACK_SIZE_SHELL (64 * 1024)
+
+#include <fbdev.h>
+
+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 <machine/rtems-bsd-config.h>
+
+/*
+ * 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 <rtems/confdefs.h>
+
+/*
+ * Configure Shell.
+ */
+#include <rtems/netcmds-config.h>
+#include <bsp/irq-info.h>
+#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 <rtems/shellconfig.h>
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'])