From 940091ae384e19a1219b10d5aea30c42b3a5da29 Mon Sep 17 00:00:00 2001 From: Barry Wardell Date: Mon, 5 May 2008 12:05:00 +0000 Subject: [PATCH] FS#7977: Bootloader logo for PP-based targets (H10, Sansa, M-Robe 100). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17374 a1c6a512-1295-4272-9138-f99709370657 --- apps/bitmaps/native/SOURCES | 4 +++ apps/bitmaps/remote_native/SOURCES | 4 +++ bootloader/Makefile | 46 ++++++++++++++++++++++++++++-- bootloader/SOURCES | 1 + bootloader/main-pp.c | 20 +++++++++---- 5 files changed, 66 insertions(+), 9 deletions(-) diff --git a/apps/bitmaps/native/SOURCES b/apps/bitmaps/native/SOURCES index 967318b0eb..9ad0dbf2c5 100644 --- a/apps/bitmaps/native/SOURCES +++ b/apps/bitmaps/native/SOURCES @@ -33,6 +33,8 @@ rockboxlogo.240x74x16.bmp rockboxlogo.320x98x16.bmp #endif +#ifndef BOOTLOADER /* We don't need these for the bootloader */ + /* USB logo */ #ifdef HAVE_LCD_COLOR #if LCD_WIDTH > 176 @@ -63,4 +65,6 @@ default_icons.6x8x2.bmp default_icons.6x8x1.bmp #endif +#endif /* BOOTLOADER */ + #endif /* HAVE_LCD_BITMAP */ diff --git a/apps/bitmaps/remote_native/SOURCES b/apps/bitmaps/remote_native/SOURCES index 2692179d5a..02d1b542b2 100644 --- a/apps/bitmaps/remote_native/SOURCES +++ b/apps/bitmaps/remote_native/SOURCES @@ -1,5 +1,7 @@ #ifdef HAVE_REMOTE_LCD +#ifndef BOOTLOADER /* We don't need these for the bootloader */ + #if (LCD_REMOTE_DEPTH == 1) remote_rockboxlogo.128x42x1.bmp remote_usblogo.104x27x1.bmp @@ -10,4 +12,6 @@ remote_usblogo.104x27x2.bmp remote_default_icons.6x8x2.bmp #endif +#endif /* BOOTLOADER */ + #endif /* HAVE_REMOTE_LCD */ diff --git a/bootloader/Makefile b/bootloader/Makefile index dd60a228f5..796cd9ae2c 100644 --- a/bootloader/Makefile +++ b/bootloader/Makefile @@ -8,11 +8,31 @@ # INCLUDES= $(TARGET_INC) -I$(FIRMDIR)/include -I$(FIRMDIR)/export -I. -I$(OBJDIR) \ - -I$(BUILDDIR) + -I$(BUILDDIR) -I$(BUILDDIR)/bitmaps DEPFILE = $(OBJDIR)/dep-bootloader LDS := $(FIRMDIR)/target/$(CPU)/$(MANUFACTURER)/boot.lds +# Set up the bitmap libraries +BITMAPLIBS = +LINKBITMAPS = +ifneq ($(strip $(BMP2RB_MONO)),) + BITMAPLIBS += $(BUILDDIR)/libbitmapsmono.a + LINKBITMAPS += -lbitmapsmono +endif +ifneq ($(strip $(BMP2RB_NATIVE)),) + BITMAPLIBS += $(BUILDDIR)/libbitmapsnative.a + LINKBITMAPS += -lbitmapsnative +endif +ifneq ($(strip $(BMP2RB_REMOTEMONO)),) + BITMAPLIBS += $(BUILDDIR)/libbitmapsremotemono.a + LINKBITMAPS += -lbitmapsremotemono +endif +ifneq ($(strip $(BMP2RB_REMOTENATIVE)),) + BITMAPLIBS += $(BUILDDIR)/libbitmapsremotenative.a + LINKBITMAPS += -lbitmapsremotenative +endif + ifdef DEBUG DEFINES := -DDEBUG CFLAGS += -g @@ -47,6 +67,8 @@ else all: $(BUILDDIR)/$(BINARY) $(FLASHFILE) endif +$(DEPFILE): $(BITMAPLIBS) + dep: $(DEPFILE) $(LINKFILE): $(LDS) @@ -58,8 +80,22 @@ $(MAXOUTFILE): $(SILENT)cat $(MAXINFILE) | $(CC) -DMEMORYSIZE=$(MEMORYSIZE) $(INCLUDES) $(TARGET) $(DEFINES) -E -P $(ROMBUILD) - > $(MAXOUTFILE) $(SILENT)rm $(MAXINFILE) -$(OBJDIR)/bootloader.elf : $(OBJS) $(LINKFILE) $(DEPFILE) $(LIBROCKBOX) - $(call PRINTS,LD $(@F))$(CC) $(GCCOPTS) -Wl,--gc-sections -Os -nostdlib -o $@ $(OBJS) -L$(BUILDDIR) -L$(BUILDDIR)/firmware -lrockbox -lgcc -T$(LINKFILE) -Wl,-Map,$(OBJDIR)/bootloader.map +build-bitmapsmono: + $(call PRINTS,MAKE in bitmaps/mono)$(MAKE) -C ../apps/bitmaps/mono OBJDIR=$(OBJDIR)/bitmaps/mono + +build-bitmapsnative: + $(call PRINTS,MAKE in bitmaps/native)$(MAKE) -C ../apps/bitmaps/native OBJDIR=$(OBJDIR)/bitmaps/native + +build-bitmapsremotemono: + $(call PRINTS,MAKE in bitmaps/remote_mono)$(MAKE) -C ../apps/bitmaps/remote_mono OBJDIR=$(OBJDIR)/bitmaps/remote_mono + +build-bitmapsremotenative: + $(call PRINTS,MAKE in bitmaps/remote_native)$(MAKE) -C ../apps/bitmaps/remote_native OBJDIR=$(OBJDIR)/bitmaps/remote_native + +$(BITMAPLIBS): $(BUILDDIR)/lib%.a: build-% + +$(OBJDIR)/bootloader.elf : $(OBJS) $(LINKFILE) $(DEPFILE) $(LIBROCKBOX) $(BITMAPLIBS) + $(call PRINTS,LD $(@F))$(CC) $(GCCOPTS) -Wl,--gc-sections -Os -nostdlib -o $@ $(OBJS) -L$(BUILDDIR) -L$(BUILDDIR)/firmware -lrockbox $(LINKBITMAPS) -lgcc -T$(LINKFILE) -Wl,-Map,$(OBJDIR)/bootloader.map $(OBJDIR)/bootloader.bin : $(OBJDIR)/bootloader.elf $(call PRINTS,OBJCOPY $(@F))$(OC) -O binary $< $@ @@ -76,5 +112,9 @@ clean: $(call PRINTS,cleaning bootloader)-rm -f $(OBJS) $(BUILDDIR)/$(BINARY) $(OBJDIR)/bootloader.asm \ $(OBJDIR)/bootloader.bin $(OBJDIR)/bootloader.elf $(OBJDIR)/*.map \ $(LINKFILE) $(MAXOUTFILE) $(DEPFILE) + $(SILENT)$(MAKE) -C bitmaps/mono clean OBJDIR=$(OBJDIR)/bitmaps/mono + $(SILENT)$(MAKE) -C bitmaps/native clean OBJDIR=$(OBJDIR)/bitmaps/native + $(SILENT)$(MAKE) -C bitmaps/remote_mono clean OBJDIR=$(OBJDIR)/bitmaps/remote_mono + $(SILENT)$(MAKE) -C bitmaps/remote_native clean OBJDIR=$(OBJDIR)/bitmaps/remote_native -include $(DEPFILE) diff --git a/bootloader/SOURCES b/bootloader/SOURCES index 9e961eeb29..40b2f5dc2a 100644 --- a/bootloader/SOURCES +++ b/bootloader/SOURCES @@ -13,6 +13,7 @@ gigabeat-s.c #ifdef E200R_INSTALLER main-e200r-installer.c #else +show_logo.c main-pp.c #endif #elif defined(ELIO_TPJ1022) diff --git a/bootloader/main-pp.c b/bootloader/main-pp.c index c6063cffb5..f4184829e0 100644 --- a/bootloader/main-pp.c +++ b/bootloader/main-pp.c @@ -43,6 +43,8 @@ #include "usb_drv.h" #endif +/* Show the Rockbox logo - in show_logo.c */ +extern int show_logo(void); /* Button definitions */ #if CONFIG_KEYPAD == IRIVER_H10_PAD @@ -442,23 +444,27 @@ void* main(void) system_init(); kernel_init(); + lcd_init(); +#if LCD_DEPTH > 1 + lcd_set_foreground(LCD_WHITE); + lcd_set_background(LCD_BLACK); +#endif + font_init(); + show_logo(); + button_init(); #if defined(SANSA_E200) i2c_init(); _backlight_on(); #endif -#if LCD_DEPTH > 1 - lcd_set_foreground(LCD_WHITE); - lcd_set_background(LCD_BLACK); -#endif - lcd_clear_display(); if (button_hold()) { verbose = true; + lcd_clear_display(); printf("Hold switch on"); printf("Shutting down..."); sleep(HZ); @@ -468,8 +474,10 @@ void* main(void) btn = button_read_device(); /* Enable bootloader messages if any button is pressed */ - if (btn) + if (btn) { + lcd_clear_display(); verbose = true; + } #if defined(SANSA_E200) || defined(SANSA_C200) #if !defined(USE_ROCKBOX_USB)