On Mon, Sep 2, 2019 at 4:34 AM Chris Johns <chr...@rtems.org> wrote: > Hi, > > > Thank you for the patch. > > Can this please be moved as lvgl/hello? It would allow for other examples > to be > added. > > We need a test for liblvgl.a. Maybe lvgl/wscript can check and not build > if not > found. > > OK. Understood.
> On 31/8/19 4:23 am, Vijay Kumar Banerjee wrote: > > --- > > README | 2 +- > > lvgl_hello/README | 6 ++ > > lvgl_hello/test.c | 180 +++++++++++++++++++++++++++++++++++++++++++++ > > lvgl_hello/wscript | 25 +++++++ > > wscript | 1 + > > 5 files changed, 213 insertions(+), 1 deletion(-) > > create mode 100644 lvgl_hello/README > > create mode 100644 lvgl_hello/test.c > > create mode 100644 lvgl_hello/wscript > > > > diff --git a/README b/README > > index 99ca787..f1e127c 100644 > > --- a/README > > +++ b/README > > @@ -15,4 +15,4 @@ posix_api - POSIX API examples (no led) > > schedsim - RTEMS Scheduler Simulator examples > > ticker - Ticker Variations > > uboot - U-Boot interaction examples > > - > > +lvgl_hello - LittleVGL graphics app example using libbsd framebuffer > driver > > diff --git a/lvgl_hello/README b/lvgl_hello/README > > new file mode 100644 > > index 0000000..866d0cd > > --- /dev/null > > +++ b/lvgl_hello/README > > @@ -0,0 +1,6 @@ > > +This folder contains a sample graphics app using littleVGL library and > libbsd > > +The generated exe file can be directly run using a JTAG debugger on a > target > > +with the right device tree or this can be converted into an image. > > + > > +For instructions on how to build the image or how to run the exe, > please refer > > +to the BSP documentation in https://docs.rtems.org > > diff --git a/lvgl_hello/test.c b/lvgl_hello/test.c > > new file mode 100644 > > index 0000000..6e0c030 > > --- /dev/null > > +++ b/lvgl_hello/test.c > > @@ -0,0 +1,180 @@ > > +/* > > + * Copyright (c) 2019 Vijay Kumar Banerjee <vijaykumar9...@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 <rtems/dhcpcd.h> > > Needed? > > > +#include <bsp/i2c.h> > > +#include <libcpu/am335x.h> > > This ... > > > +#include <rtems/irq-extension.h> > > [ Needed? ] > > Not all these headers are needed, they seeped in from the experimental app that I made. I'll remove the ones that are unnecessary. > > +#include <rtems/counter.h> > > +#include <bsp/bbb-gpio.h> > > .. and this header make the example BBB specific. Is there a way this can > be > moved into the BBB BSP or libbsd? > > I think bbb-gpio.h isn't needed anymore, so it can just be removed. I'll have a look and report. > > +#include <rtems/console.h> > > +#include <rtems/shell.h> > > +#include <sys/ioctl.h> > > +#include <fcntl.h> > > +#include <dev/iicbus/iic.h> > > + > > +#include <machine/rtems-bsd-commands.h> > > + > > +#include <bsp.h> > > + > > +#define PRIO_SHELL 150 > > +#define STACK_SIZE_SHELL (64 * 1024) > > + > > +#include <stdio.h> > > +#include <string.h> > > +#include <unistd.h> > > +#include <sys/fcntl.h> > > +#include <sys/ioctl.h> > > +#include <sys/mman.h> > > +#include <sys/time.h> > > Which headers are needed in this list? > > > + > > +#include <sys/consio.h> > > +#include <sys/fbio.h> > > + > > +#include <lvgl.h> > > +#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 I2C TEST\n"); > > + exit_code = bbb_register_i2c_0(); > > + assert(exit_code == 0); > > Is this needed for the display to work? > > Yes. We need to register the rtems i2c device in order to work with the TDA driver as libbsd uses rtems i2c driver. The bbb_register_* is making it bbb specific, what do you suggest to make it more generic? > > + 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..45413ba > > --- /dev/null > > +++ b/lvgl_hello/wscript > > Please move to lvgl/hello/wscript. > > OK. > > @@ -0,0 +1,25 @@ > > +# Copyright 2019 Vijay Kumar Banerjee (vijaykumar9...@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 os > > + > > +def build(bld): > > + rtems.build(bld) > > + arch_inc_path = rtems.arch_bsp_include_path(bld.env.RTEMS_VERSION, > > + 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']) > > diff --git a/wscript b/wscript > > index 4f5705b..fef95ff 100644 > > --- a/wscript > > +++ b/wscript > > @@ -42,6 +42,7 @@ def build(bld): > > bld.recurse('posix_api') > > bld.recurse('cxx') > > bld.recurse('c11') > > + bld.recurse('lvgl_hello') > > Please change to ... > > bld.recurse('lvgl') > > .. and add a wscript to check for liblvgl. You will need a `def > configure(conf)` > function to check for lvgl in lvgl/wscript. See ... > > https://git.rtems.org/rtems_waf/tree/rtems_bsd.py#n52 > > as an example. > > I updated rtems_waf a month ago with better libbsd support. If the > rtems_waf > module is updated you will pick up the needed functionality. The top level > wscript file will need to be updated, an example is here .. > > https://git.rtems.org/chrisj/rtems-examples.git/tree/wscript?h=libbsd-libdl > > The module is loaded with ... > > import rtems_waf.rtems_bsd as rtems_bsd > > then in options() add ... > > rtems_bsd.options(opt) > > and in bsp_configure() add ... > > rtems_bsd.bsp_configure(conf, arch_bsp, mandatory = False) > conf.recurse('lvgl') > > The configure will then be picked up by all BSPs. I suspect with this > functionality you will not need the specifics to find headers or libraries > in > the hello/wscript file. > > OK. Thanks for the review. I'll do the necessary changes and post a v2. > Thanks > Chris > > > > > def rebuild(ctx): > > import waflib.Options > > >
_______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel