From 86d3e031ac20ae699abb89b19fe7ffcc82fa803e Mon Sep 17 00:00:00 2001 From: bernd Date: Tue, 26 Jul 2011 05:23:19 +0200 Subject: [PATCH 1/9] Implemented backlight for simulat0r --- simulat0r/gui/qsimulat0r.cc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/simulat0r/gui/qsimulat0r.cc b/simulat0r/gui/qsimulat0r.cc index 0ef57e0..9cc36c5 100644 --- a/simulat0r/gui/qsimulat0r.cc +++ b/simulat0r/gui/qsimulat0r.cc @@ -19,6 +19,7 @@ using namespace std; extern "C" { #include "basic/basic.h" +#include "lcd/backlight.h" #define lcdGetPixel __hideaway_lcdGetPixel #include "lcd/display.h" @@ -86,7 +87,12 @@ public: painter.scale(1,1); QPoint pts[dimx*dimy]; - pixmap.fill(0); + // draw backlight + const int backlight=backlightGetBrightness()*255/100; + pixmap.setPixel(1,1,(QColor(backlight,backlight,backlight).rgb())); + pixmap.fill(pixmap.pixel(1,1)); + + // draw lcd array for (int x = 0; x < dimx; ++x) { for(int y=0; y Date: Thu, 28 Jul 2011 02:20:00 +0200 Subject: [PATCH 2/9] Follow change of lcd_lyout to globalconfig.lcdstate in simulat0r --- simulat0r/gui/qsimulat0r.cc | 6 +++--- simulat0r/tui/simulat0r.c | 9 ++++----- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/simulat0r/gui/qsimulat0r.cc b/simulat0r/gui/qsimulat0r.cc index 9cc36c5..c2146d2 100644 --- a/simulat0r/gui/qsimulat0r.cc +++ b/simulat0r/gui/qsimulat0r.cc @@ -96,10 +96,10 @@ public: for (int x = 0; x < dimx; ++x) { for(int y=0; y -extern int lcd_layout; - void simlcdDisplayUpdate() { write(1,"\033[H",3); for(int y=0; y Date: Thu, 28 Jul 2011 02:21:27 +0200 Subject: [PATCH 3/9] Provide time_t for globalconfig in simulat0r --- simulat0r/firmware/basic/idle.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/simulat0r/firmware/basic/idle.h b/simulat0r/firmware/basic/idle.h index a230196..975ef7c 100644 --- a/simulat0r/firmware/basic/idle.h +++ b/simulat0r/firmware/basic/idle.h @@ -1,2 +1,2 @@ -/* AUTOGENERATED SOURCE FILE */ +#include /* need time_t in config_t */ #include "../../../firmware/basic/idle.h" From e0ae77294eb615ff015c3255e64052f4afd061c7 Mon Sep 17 00:00:00 2001 From: bernd Date: Fri, 29 Jul 2011 02:46:22 +0200 Subject: [PATCH 4/9] Removed #error statement (that was left in after debugging architektur ifdef?) --- firmware/basic/idle.c | 1 - 1 file changed, 1 deletion(-) diff --git a/firmware/basic/idle.c b/firmware/basic/idle.c index 3d01408..623154b 100644 --- a/firmware/basic/idle.c +++ b/firmware/basic/idle.c @@ -7,7 +7,6 @@ QUEUE the_queue; #ifdef __arm__ volatile uint32_t _timectr=0; #else -#error "foo" extern uint32_t simTimeCounter(); #define _timectr (simTimeCounter()) #endif From 9d933f7d4cdbcff8fbb43632cff90a54635d6dda Mon Sep 17 00:00:00 2001 From: bernd Date: Fri, 29 Jul 2011 04:33:29 +0200 Subject: [PATCH 5/9] Use untracked Makefile.sitespecific to optionally override some build flags --- firmware/Makefile | 4 ++-- firmware/Makefile.inc | 6 ++++++ simulat0r/firmware/Makefile.inc | 7 ++++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/firmware/Makefile b/firmware/Makefile index f92d179..0f47a3d 100644 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -62,7 +62,7 @@ loadables: $(OUTFILE).bin clean: rm -f $(OBJS) $(LD_TEMP) $(OUTFILE).elf $(OUTFILE).bin $(OUTFILE).hex for dir in $(SUBDIRS); do \ - $(MAKE) --no-print-directory -C $$dir clean; \ + $(MAKE) $(CONFIG_MAKE_PRINTDIRECTORY) -C $$dir clean; \ done flash: all ../tools/bootloader/autoflash @@ -78,7 +78,7 @@ flash: all subdirs: $(SUBDIRS) $(SUBDIRS): - $(MAKE) ROOT_PATH=../$(ROOT_PATH) --no-print-directory -C $@ + $(MAKE) ROOT_PATH=../$(ROOT_PATH) $(CONFIG_MAKE_PRINTDIRECTORY) -C $@ ../tools/bootloader/lpcfix: cd ../tools/bootloader && $(MAKE) diff --git a/firmware/Makefile.inc b/firmware/Makefile.inc index 2c06605..7085dd9 100644 --- a/firmware/Makefile.inc +++ b/firmware/Makefile.inc @@ -42,3 +42,9 @@ CPU_TYPE = cortex-$(CORTEX_TYPE) CFLAGS = -std=c99 -c -g -Os $(INCLUDE_PATHS) -Wall -mthumb -ffunction-sections -fdata-sections -fmessage-length=0 -mcpu=$(CPU_TYPE) -DTARGET=$(TARGET) -DRAMCODE=$(RAMCODE) -fno-builtin LDFLAGS = -nostartfiles + + +CONFIG_MAKE_PRINTDIRECTORY = --no-print-directory +CONFIG_GCC_SHOWCOLUMN = + +-include Makefile.sitespecific diff --git a/simulat0r/firmware/Makefile.inc b/simulat0r/firmware/Makefile.inc index c444d46..cfa0f0a 100644 --- a/simulat0r/firmware/Makefile.inc +++ b/simulat0r/firmware/Makefile.inc @@ -41,6 +41,11 @@ endif # Compiler settings, parameters and flags ########################################################################## -CFLAGS = -std=c99 -c -g -O0 $(INCLUDE_PATHS) -Wall -funsigned-char -ffunction-sections -fdata-sections -fmessage-length=0 -DRAMCODE=$(RAMCODE) -fno-builtin -DSIMULATOR -I$(ROOT_PATH)/../simcore -include libc-unc0llide.h +CFLAGS = -std=c99 -c -g -O0 $(INCLUDE_PATHS) -Wall -funsigned-char -ffunction-sections -fdata-sections -fmessage-length=0 -DRAMCODE=$(RAMCODE) -fno-builtin -DSIMULATOR -I$(ROOT_PATH)/../simcore -include libc-unc0llide.h $(CONFIG_GCC_SHOWCOLUMN) #LDFLAGS = -nostartfiles + +CONFIG_MAKE_PRINTDIRECTORY = --no-print-directory +CONFIG_GCC_SHOWCOLUMN = + +-include Makefile.sitespecific From ad81bd24ac98ec2469840e5c6f3d67ee47910c31 Mon Sep 17 00:00:00 2001 From: bernd Date: Fri, 29 Jul 2011 04:37:52 +0200 Subject: [PATCH 6/9] Added some more bridge files for simulat0r --- simulat0r/firmware/applications/initial.c | 2 ++ simulat0r/firmware/applications/serial/serial.c | 2 ++ simulat0r/firmware/applications/tester/config.c | 2 ++ simulat0r/firmware/applications/tester/font.c | 2 ++ simulat0r/firmware/applications/tester/funk.c | 2 ++ simulat0r/firmware/applications/tester/queue.c | 2 ++ simulat0r/firmware/applications/tester/util.c | 2 ++ simulat0r/firmware/applications/tester/uuid.c | 2 ++ simulat0r/firmware/basic/config.c | 2 ++ 9 files changed, 18 insertions(+) create mode 100644 simulat0r/firmware/applications/initial.c create mode 100644 simulat0r/firmware/applications/serial/serial.c create mode 100644 simulat0r/firmware/applications/tester/config.c create mode 100644 simulat0r/firmware/applications/tester/font.c create mode 100644 simulat0r/firmware/applications/tester/funk.c create mode 100644 simulat0r/firmware/applications/tester/queue.c create mode 100644 simulat0r/firmware/applications/tester/util.c create mode 100644 simulat0r/firmware/applications/tester/uuid.c create mode 100644 simulat0r/firmware/basic/config.c diff --git a/simulat0r/firmware/applications/initial.c b/simulat0r/firmware/applications/initial.c new file mode 100644 index 0000000..acb4791 --- /dev/null +++ b/simulat0r/firmware/applications/initial.c @@ -0,0 +1,2 @@ +/* AUTOGENERATED SOURCE FILE */ +#include "../../../firmware/applications/initial.c" diff --git a/simulat0r/firmware/applications/serial/serial.c b/simulat0r/firmware/applications/serial/serial.c new file mode 100644 index 0000000..11e56f9 --- /dev/null +++ b/simulat0r/firmware/applications/serial/serial.c @@ -0,0 +1,2 @@ +/* AUTOGENERATED SOURCE FILE */ +#include "../../../../firmware/applications/serial/serial.c" diff --git a/simulat0r/firmware/applications/tester/config.c b/simulat0r/firmware/applications/tester/config.c new file mode 100644 index 0000000..6b24bef --- /dev/null +++ b/simulat0r/firmware/applications/tester/config.c @@ -0,0 +1,2 @@ +/* AUTOGENERATED SOURCE FILE */ +#include "../../../../firmware/applications/tester/config.c" diff --git a/simulat0r/firmware/applications/tester/font.c b/simulat0r/firmware/applications/tester/font.c new file mode 100644 index 0000000..4ea412b --- /dev/null +++ b/simulat0r/firmware/applications/tester/font.c @@ -0,0 +1,2 @@ +/* AUTOGENERATED SOURCE FILE */ +#include "../../../../firmware/applications/tester/font.c" diff --git a/simulat0r/firmware/applications/tester/funk.c b/simulat0r/firmware/applications/tester/funk.c new file mode 100644 index 0000000..4838391 --- /dev/null +++ b/simulat0r/firmware/applications/tester/funk.c @@ -0,0 +1,2 @@ +/* AUTOGENERATED SOURCE FILE */ +#include "../../../../firmware/applications/tester/funk.c" diff --git a/simulat0r/firmware/applications/tester/queue.c b/simulat0r/firmware/applications/tester/queue.c new file mode 100644 index 0000000..45eb133 --- /dev/null +++ b/simulat0r/firmware/applications/tester/queue.c @@ -0,0 +1,2 @@ +/* AUTOGENERATED SOURCE FILE */ +#include "../../../../firmware/applications/tester/queue.c" diff --git a/simulat0r/firmware/applications/tester/util.c b/simulat0r/firmware/applications/tester/util.c new file mode 100644 index 0000000..5eeed11 --- /dev/null +++ b/simulat0r/firmware/applications/tester/util.c @@ -0,0 +1,2 @@ +/* AUTOGENERATED SOURCE FILE */ +#include "../../../../firmware/applications/tester/util.c" diff --git a/simulat0r/firmware/applications/tester/uuid.c b/simulat0r/firmware/applications/tester/uuid.c new file mode 100644 index 0000000..c34fad6 --- /dev/null +++ b/simulat0r/firmware/applications/tester/uuid.c @@ -0,0 +1,2 @@ +/* AUTOGENERATED SOURCE FILE */ +#include "../../../../firmware/applications/tester/uuid.c" diff --git a/simulat0r/firmware/basic/config.c b/simulat0r/firmware/basic/config.c new file mode 100644 index 0000000..211c3ef --- /dev/null +++ b/simulat0r/firmware/basic/config.c @@ -0,0 +1,2 @@ +/* AUTOGENERATED SOURCE FILE */ +#include "../../../firmware/basic/config.c" From aed4765bf86a5bf6c62f209cfe7419783d1fe182 Mon Sep 17 00:00:00 2001 From: bernd Date: Fri, 29 Jul 2011 04:47:15 +0200 Subject: [PATCH 7/9] Added some more bridge files for simulat0r --- simulat0r/firmware/applications/serial/config.c | 2 ++ simulat0r/firmware/applications/serial/remote.c | 2 ++ simulat0r/firmware/applications/serial/util.c | 2 ++ simulat0r/firmware/applications/serial/uuid.c | 2 ++ simulat0r/firmware/basic/itoa.c | 2 ++ simulat0r/firmware/usbcdc/util.c | 2 ++ simulat0r/firmware/usbcdc/util.h | 2 ++ 7 files changed, 14 insertions(+) create mode 100644 simulat0r/firmware/applications/serial/config.c create mode 100644 simulat0r/firmware/applications/serial/remote.c create mode 100644 simulat0r/firmware/applications/serial/util.c create mode 100644 simulat0r/firmware/applications/serial/uuid.c create mode 100644 simulat0r/firmware/basic/itoa.c create mode 100644 simulat0r/firmware/usbcdc/util.c create mode 100644 simulat0r/firmware/usbcdc/util.h diff --git a/simulat0r/firmware/applications/serial/config.c b/simulat0r/firmware/applications/serial/config.c new file mode 100644 index 0000000..611fc4b --- /dev/null +++ b/simulat0r/firmware/applications/serial/config.c @@ -0,0 +1,2 @@ +/* AUTOGENERATED SOURCE FILE */ +#include "../../../../firmware/applications/serial/config.c" diff --git a/simulat0r/firmware/applications/serial/remote.c b/simulat0r/firmware/applications/serial/remote.c new file mode 100644 index 0000000..965b79e --- /dev/null +++ b/simulat0r/firmware/applications/serial/remote.c @@ -0,0 +1,2 @@ +/* AUTOGENERATED SOURCE FILE */ +#include "../../../../firmware/applications/serial/remote.c" diff --git a/simulat0r/firmware/applications/serial/util.c b/simulat0r/firmware/applications/serial/util.c new file mode 100644 index 0000000..62716d8 --- /dev/null +++ b/simulat0r/firmware/applications/serial/util.c @@ -0,0 +1,2 @@ +/* AUTOGENERATED SOURCE FILE */ +#include "../../../../firmware/applications/serial/util.c" diff --git a/simulat0r/firmware/applications/serial/uuid.c b/simulat0r/firmware/applications/serial/uuid.c new file mode 100644 index 0000000..d04a944 --- /dev/null +++ b/simulat0r/firmware/applications/serial/uuid.c @@ -0,0 +1,2 @@ +/* AUTOGENERATED SOURCE FILE */ +#include "../../../../firmware/applications/serial/uuid.c" diff --git a/simulat0r/firmware/basic/itoa.c b/simulat0r/firmware/basic/itoa.c new file mode 100644 index 0000000..92eda12 --- /dev/null +++ b/simulat0r/firmware/basic/itoa.c @@ -0,0 +1,2 @@ +/* AUTOGENERATED SOURCE FILE */ +#include "../../../firmware/basic/itoa.c" diff --git a/simulat0r/firmware/usbcdc/util.c b/simulat0r/firmware/usbcdc/util.c new file mode 100644 index 0000000..417d521 --- /dev/null +++ b/simulat0r/firmware/usbcdc/util.c @@ -0,0 +1,2 @@ +/* AUTOGENERATED SOURCE FILE */ +#include "../../../firmware/usbcdc/util.c" diff --git a/simulat0r/firmware/usbcdc/util.h b/simulat0r/firmware/usbcdc/util.h new file mode 100644 index 0000000..18f3995 --- /dev/null +++ b/simulat0r/firmware/usbcdc/util.h @@ -0,0 +1,2 @@ +/* AUTOGENERATED SOURCE FILE */ +#include "../../../firmware/usbcdc/util.h" From 020c4d81905164f80fb1de9daa6b066ebc736181 Mon Sep 17 00:00:00 2001 From: bernd Date: Fri, 29 Jul 2011 07:06:12 +0200 Subject: [PATCH 8/9] Cleanup: use r0ket source expect for that one init function --- simulat0r/firmware/core/systick/systick.c | 230 +--------------------- 1 file changed, 4 insertions(+), 226 deletions(-) diff --git a/simulat0r/firmware/core/systick/systick.c b/simulat0r/firmware/core/systick/systick.c index 3d5bff6..840e0ed 100644 --- a/simulat0r/firmware/core/systick/systick.c +++ b/simulat0r/firmware/core/systick/systick.c @@ -1,231 +1,9 @@ -#warning "cleanupthisfile" -#if 0 +#define systickInit _hideaway_systickInit #include "../../firmware/core/systick/systick.c" -#else +#undef systickInit -/**************************************************************************/ -/*! - @file systick.c - @author K. Townsend (microBuilder.eu) - @date 22 March 2010 - @version 0.10 - - @section DESCRIPTION - - Controls the 24-bit 'system tick' clock, which can be used as a - generic timer or to control time sharing with an embedded real-time - operating system (such as FreeRTOS). - - @section Example - - @code - #include "core/cpu/cpu.h" - #include "core/systick/systick.h" - - void main (void) - { - cpuInit(); - - // Start systick timer with one tick every 10ms - systickInit(10); - - while(1) - { - } - } - @endcode - - @section LICENSE - - Software License Agreement (BSD License) - - Copyright (c) 2010, microBuilder SARL - 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. - 3. Neither the name of the copyright holders nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''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 COPYRIGHT HOLDER 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 "systick.h" - -volatile uint32_t systickTicks = 0; // 1ms tick counter -volatile uint32_t systickRollovers = 0; - -void tick_wrapper(void); - -/**************************************************************************/ -/*! - @brief Systick interrupt handler -*/ -/**************************************************************************/ -void SysTick_Handler (void) -{ - systickTicks++; - - // Increment rollover counter - if (systickTicks == 0xFFFFFFFF) systickRollovers++; - - tick_wrapper(); -} - -/**************************************************************************/ -/*! - @brief Configures the systick timer - - @param[in] ticks - The number of clock cycles between each tick of the - systick timer. for example, 'CFG_CPU_CCLK / 1000' = - 1 millisecond. This value must not exceed 0x00FFFFFF. -*/ -/**************************************************************************/ -static uint32_t systickConfig(uint32_t ticks) -{ - fprintf(stderr,"systickConfig: unimplemented\n"); - return 0; - - // Check if 'ticks' is greater than maximum value - if (ticks > SYSTICK_STRELOAD_MASK) - { - return (1); - } - - // Reset counter - systickTicks = 0; - - // Set reload register - SYSTICK_STRELOAD = (ticks & SYSTICK_STRELOAD_MASK) - 1; - - // Load the systick counter value - SYSTICK_STCURR = 0; - - // Enable systick IRQ and timer - SYSTICK_STCTRL = SYSTICK_STCTRL_CLKSOURCE | - SYSTICK_STCTRL_TICKINT | - SYSTICK_STCTRL_ENABLE; - - return (0); -} - -/**************************************************************************/ -/*! - @brief Initialises the systick timer - - @param[in] delayMs - The number of milliseconds between each tick of the systick - timer. - - @note The shortest possible delay is 1 millisecond, which will - allow fine grained delays, but will cause more load on the - system than a 10mS delay. The resolution of the systick - timer needs to be balanced with the amount of processing - time you can spare. The delay should really only be set - to 1 mS if you genuinely have a need for 1mS delays, - otherwise a higher value like 5 or 10 mS is probably - more appropriate. -*/ -/**************************************************************************/ void systickInit (uint32_t delayMs) { - systickConfig ((CFG_CPU_CCLK / 1000) * delayMs); + fprintf(stderr,"systickConfig %d: unimplemented\n",delayMs); + // systickConfig ((CFG_CPU_CCLK / 1000) * delayMs); } - -/**************************************************************************/ -/*! - @brief Causes a blocking delay for 'delayTicks' ticks on the - systick timer. For example: systickDelay(100) would cause - a blocking delay for 100 ticks of the systick timer. - - @param[in] delayTicks - The number of systick ticks to cause a blocking delay for - - @Note This function takes into account the fact that the tick - counter may eventually roll over to 0 once it reaches - 0xFFFFFFFF. -*/ -/**************************************************************************/ -void systickDelay (uint32_t delayTicks) -{ - uint32_t curTicks; - curTicks = systickTicks; - - // Make sure delay is at least 1 tick in case of division, etc. - if (delayTicks == 0) delayTicks = 1; - - if (curTicks > 0xFFFFFFFF - delayTicks) - { - // Rollover will occur during delay - while (systickTicks >= curTicks) - { - while (systickTicks < (delayTicks - (0xFFFFFFFF - curTicks))); - } - } - else - { - while ((systickTicks - curTicks) < delayTicks); - } -} - -/**************************************************************************/ -/*! - @brief Returns the current value of the systick timer counter. - This value is incremented by one every time an interrupt - fires for the systick timer. -*/ -/**************************************************************************/ -uint32_t systickGetTicks(void) -{ - return systickTicks; -} - -/**************************************************************************/ -/*! - @brief Returns the current value of the systick timer rollover - counter. This value is incremented by one every time the - tick counter rolls over from 0xFFFFFFFF to 0. -*/ -/**************************************************************************/ -uint32_t systickGetRollovers(void) -{ - return systickRollovers; -} - -/**************************************************************************/ -/*! - @brief Returns the approximate number of seconds that the - systick timer has been running. -*/ -/**************************************************************************/ -uint32_t systickGetSecondsActive(void) -{ - uint32_t currentTick = systickTicks; - uint32_t rollovers = systickRollovers; - uint32_t secsActive = currentTick / (1000 / CFG_SYSTICK_DELAY_IN_MS); - secsActive += rollovers * (0xFFFFFFFF / (1000 / CFG_SYSTICK_DELAY_IN_MS)); - - return secsActive; -} - - - -#endif - From d7990ec434f1ce9db4566b1e0bb392d4b20a3741 Mon Sep 17 00:00:00 2001 From: bernd Date: Fri, 29 Jul 2011 07:06:50 +0200 Subject: [PATCH 9/9] Link with liblcd a second time, silence some warning about cmake behaviour --- simulat0r/gui/CMakeLists.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/simulat0r/gui/CMakeLists.txt b/simulat0r/gui/CMakeLists.txt index 4a4e8f7..8837e88 100644 --- a/simulat0r/gui/CMakeLists.txt +++ b/simulat0r/gui/CMakeLists.txt @@ -1,5 +1,10 @@ project (qsimulat0r) cmake_minimum_required(VERSION 2.4.0) + +if(POLICY CMP0015) + cmake_policy(SET CMP0015 OLD) +endif(POLICY CMP0015) + find_package(Qt4 REQUIRED) include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../firmware ${CMAKE_CURRENT_SOURCE_DIR}/../firmware/core) @@ -55,6 +60,9 @@ libfunk.a libusbcdc.a libbasic.a libcore.a + +liblcd.a + )