/* * 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_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