From de8bb97ed51af386c35c659e94c9f08248ed65a4 Mon Sep 17 00:00:00 2001 From: Christian Vogel Date: Thu, 14 Oct 2010 21:00:16 +0200 Subject: Calypso FB: Makefile, "dummy" driver, Hello World --- src/target/firmware/Makefile | 20 ++++++--- src/target/firmware/apps/hello_world/main.c | 25 +++++++++++ src/target/firmware/fb/fb_dummy.c | 69 +++++++++++++++++++++++++++++ 3 files changed, 108 insertions(+), 6 deletions(-) create mode 100644 src/target/firmware/fb/fb_dummy.c diff --git a/src/target/firmware/Makefile b/src/target/firmware/Makefile index 12bfa098..624b0555 100644 --- a/src/target/firmware/Makefile +++ b/src/target/firmware/Makefile @@ -6,6 +6,14 @@ BOARDS?=compal_e88 compal_e86 compal_e99 se_j100 gta0x pirelli_dpl10 # List of all applications (meant to be overridden on command line) APPLICATIONS?=hello_world compal_dsp_dump layer1 loader chainload +# Framebuffer support, board specific drivers +# + +FB_OBJS=fb/framebuffer.o fb/font.o fb/helvR08.o fb/helvB14.o + +FB_e88_OBJS=$(FB_OBJS) fb/fb_bw8.o fb/fb_st7558.o +FB_e99_OBJS=$(FB_OBJS) fb/fb_rgb332.o fb/fb_ssd1783.o +FB_dummy_OBJS=$(FB_OBJS) fb/fb_dummy.o # TI Calypso @@ -13,12 +21,12 @@ calypso_COMMON_OBJS=board/common/calypso_uart.o board/common/calypso_pwl.o # OpenMoko GTA0x -gta0x_OBJS=$(calypso_COMMON_OBJS) board/gta0x/rffe_gta0x_triband.o board/gta0x/init.o board/gta0x/rf_power.o +gta0x_OBJS=$(calypso_COMMON_OBJS) board/gta0x/rffe_gta0x_triband.o board/gta0x/init.o board/gta0x/rf_power.o $(FB_dummy_OBJS) gta0x_ENVIRONMENTS=highram # Pirelli DP-L10 -pirelli_dpl10_OBJS=$(calypso_COMMON_OBJS) board/pirelli_dpl10/rffe_dpl10_triband.o board/pirelli_dpl10/init.o board/pirelli_dpl10/rf_power.o +pirelli_dpl10_OBJS=$(calypso_COMMON_OBJS) board/pirelli_dpl10/rffe_dpl10_triband.o board/pirelli_dpl10/init.o board/pirelli_dpl10/rf_power.o $(FB_dummy_OBJS) pirelli_dpl10_ENVIRONMENTS=highram # Compal Generic @@ -34,7 +42,7 @@ highram_OBJS=board/compal/start.ram.o board/compal/exceptions_redirected.o board # Compal E88 -compal_e88_OBJS=$(compal_COMMON_OBJS) board/compal_e88/init.o +compal_e88_OBJS=$(compal_COMMON_OBJS) board/compal_e88/init.o $(FB_e88_OBJS) compal_e88_ENVIRONMENTS=$(compal_COMMON_ENVIRONMENTS) e88loader e88flash e88loader_LDS=board/compal_e88/loader.lds @@ -45,12 +53,12 @@ e88flash_OBJS=board/compal/start.rom.o board/compal/header.o board/compal/except # Compal E86 (has a different RFFE configuration) -compal_e86_OBJS=$(calypso_COMMON_OBJS) board/compal_e86/rffe_dualband_e86.o board/compal/rf_power.o board/compal_e86/init.o +compal_e86_OBJS=$(calypso_COMMON_OBJS) board/compal_e86/rffe_dualband_e86.o board/compal/rf_power.o board/compal_e86/init.o $(FB_dummy_OBJS) compal_e86_ENVIRONMENTS=$(compal_COMMON_ENVIRONMENTS) # Compal E99 -compal_e99_OBJS=$(compal_COMMON_OBJS) board/compal_e99/init.o +compal_e99_OBJS=$(compal_COMMON_OBJS) board/compal_e99/init.o $(FB_e99_OBJS) compal_e99_ENVIRONMENTS=$(compal_COMMON_ENVIRONMENTS) e99loader_LDS=board/compal_e99/loader.lds @@ -59,7 +67,7 @@ e99flash_LDS=board/compal_e99/flash.lds # Sony Ericsson J100 (made by Compal) -se_j100_OBJS=$(compal_COMMON_OBJS) board/se_j100/init.o +se_j100_OBJS=$(compal_COMMON_OBJS) board/se_j100/init.o $(FB_dummy_OBJS) se_j100_ENVIRONMENTS=$(compal_COMMON_ENVIRONMENTS) # Global include path diff --git a/src/target/firmware/apps/hello_world/main.c b/src/target/firmware/apps/hello_world/main.c index 1f49145e..174d7e3f 100644 --- a/src/target/firmware/apps/hello_world/main.c +++ b/src/target/firmware/apps/hello_world/main.c @@ -40,6 +40,7 @@ #include #include #include +#include /* Main Program */ const char *hr = "======================================================================\n"; @@ -87,6 +88,30 @@ int main(void) calypso_clk_dump(); puts(hr); + fb_clear(); + + fb_setfg(FB_COLOR_GREEN); + fb_setbg(FB_COLOR_WHITE); + fb_setfont(FB_FONT_HELVB14); + + fb_gotoxy(2,20); + fb_putstr("Hello World!",framebuffer->width-4); + + fb_setfg(FB_COLOR_RED); + fb_setbg(FB_COLOR_BLUE); + + fb_gotoxy(2,25); + fb_boxto(framebuffer->width-3,38); + + fb_setfg(FB_COLOR_WHITE); + fb_setfont(FB_FONT_HELVR08); + fb_gotoxy(8,33); + fb_putstr("osmocom-bb",framebuffer->width-4); + + fb_flush(); + + + /* Dump all memory */ //dump_mem(); #if 0 diff --git a/src/target/firmware/fb/fb_dummy.c b/src/target/firmware/fb/fb_dummy.c new file mode 100644 index 00000000..f0ff24d5 --- /dev/null +++ b/src/target/firmware/fb/fb_dummy.c @@ -0,0 +1,69 @@ +/* + "hardware" driver for a dummy framebuffer. Used when no + display hardware is supported + */ + +/* (C) 2010 by Christian Vogel + * + * All Rights Reserved + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ + +#include + +static void +fb_dummy_init(){ +} + +static void +fb_dummy_clear(){ +} + +static void +fb_dummy_boxto(uint16_t x,uint16_t y){ + framebuffer->cursor_x = x; + framebuffer->cursor_y = y; +} + +static void +fb_dummy_lineto(uint16_t x,uint16_t y){ + framebuffer->cursor_x = x; + framebuffer->cursor_y = y; +} + +static int +fb_dummy_putstr(char *c,int maxwidth){ + return 0; +} + +static void +fb_dummy_flush(){ +} + +struct framebuffer fb_dummy_framebuffer = { + .name = "dummyfb", + .init = fb_dummy_init, + .clear = fb_dummy_clear, + .boxto = fb_dummy_boxto, + .lineto = fb_dummy_lineto, + .putstr = fb_dummy_putstr, + .flush = fb_dummy_flush, + .width = 128, + .height = 64 +}; + +struct framebuffer *framebuffer = & fb_dummy_framebuffer; -- cgit v1.2.3