You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(79) |
Aug
(27) |
Sep
(64) |
Oct
(202) |
Nov
(31) |
Dec
(59) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(125) |
Feb
(173) |
Mar
(13) |
Apr
(140) |
May
(75) |
Jun
(1) |
Jul
(37) |
Aug
(14) |
Sep
|
Oct
(20) |
Nov
(9) |
Dec
(2) |
2003 |
Jan
(51) |
Feb
(12) |
Mar
(18) |
Apr
(24) |
May
(1) |
Jun
|
Jul
|
Aug
(72) |
Sep
(12) |
Oct
(18) |
Nov
(60) |
Dec
(26) |
2004 |
Jan
(1) |
Feb
(40) |
Mar
(3) |
Apr
(3) |
May
|
Jun
(1) |
Jul
(4) |
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
(1) |
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(1) |
Dec
(5) |
2006 |
Jan
(13) |
Feb
(5) |
Mar
(8) |
Apr
(13) |
May
(7) |
Jun
(6) |
Jul
(10) |
Aug
(6) |
Sep
(6) |
Oct
(35) |
Nov
(20) |
Dec
(10) |
2007 |
Jan
(13) |
Feb
(9) |
Mar
(2) |
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
(2) |
Aug
(3) |
Sep
(1) |
Oct
|
Nov
(1) |
Dec
(1) |
2008 |
Jan
|
Feb
|
Mar
(1) |
Apr
(4) |
May
(1) |
Jun
|
Jul
|
Aug
(2) |
Sep
(1) |
Oct
|
Nov
|
Dec
|
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(54) |
Jun
(78) |
Jul
(35) |
Aug
(21) |
Sep
(21) |
Oct
(29) |
Nov
(10) |
Dec
(5) |
2010 |
Jan
|
Feb
|
Mar
(26) |
Apr
(55) |
May
(73) |
Jun
(63) |
Jul
(38) |
Aug
(39) |
Sep
(19) |
Oct
(2) |
Nov
(1) |
Dec
(1) |
2011 |
Jan
(2) |
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
From: Erik M. <er...@us...> - 2003-02-13 01:10:57
|
Update of /cvsroot/blob/blob In directory sc8-pr-cvs1:/tmp/cvs-serv20927 Modified Files: configure.in Log Message: LED driver modularisation from Kevin O'Neill. Index: configure.in =================================================================== RCS file: /cvsroot/blob/blob/configure.in,v retrieving revision 1.59 retrieving revision 1.60 diff -u -d -r1.59 -r1.60 --- configure.in 11 Feb 2003 00:02:09 -0000 1.59 +++ configure.in 13 Feb 2003 01:10:52 -0000 1.60 @@ -106,6 +106,8 @@ board_name="Accelent IDP" AC_DEFINE(ACCELENT_SA) BLOB_PLATFORM_OBJS="accelent_sa.o" + BLOB_LED_DRIVER_OBJS="led-sa11x0.o" + BLOB_LED_STARTCODE="ledasm-sa11x0.o" BLOB_FLASH_OBJS="intel32.o" DIAG_PLATFORM_OBJS="accelent_sa.o" use_cpu="sa1110" @@ -115,6 +117,8 @@ board_name="Intel Assabet" AC_DEFINE(ASSABET) BLOB_PLATFORM_OBJS="assabet.o" + BLOB_LED_DRIVER_OBJS="led-sa11x0.o" + BLOB_LED_STARTCODE="ledasm-sa11x0.o" AC_MSG_WARN([Please check assabet memory config in arch/assabet.h]) BLOB_FLASH_OBJS="intel32.o" DIAG_PLATFORM_OBJS="assabet.o" @@ -126,6 +130,8 @@ AC_DEFINE(ASSABET) AC_DEFINE(NEPONSET) BLOB_PLATFORM_OBJS="assabet.o" + BLOB_LED_DRIVER_OBJS="led-sa11x0.o" + BLOB_LED_STARTCODE="ledasm-sa11x0.o" AC_MSG_WARN([Please check assabet memory config in arch/assabet.h]) BLOB_FLASH_OBJS="intel32.o" DIAG_PLATFORM_OBJS="assabet.o" @@ -136,6 +142,8 @@ board_name="Hewlett-Packard Laboratories Badge-4" AC_DEFINE(BADGE4) BLOB_PLATFORM_OBJS="badge4.o" + BLOB_LED_DRIVER_OBJS="led-sa11x0.o" + BLOB_LED_STARTCODE="ledasm-sa11x0.o" BLOB_FLASH_OBJS="intel16.o" DIAG_PLATFORM_OBJS="badge4.o" use_cpu="sa1110" @@ -145,6 +153,8 @@ board_name="Intel Brutus" AC_DEFINE(BRUTUS) BLOB_PLATFORM_OBJS="brutus.o" + BLOB_LED_DRIVER_OBJS="led-sa11x0.o" + BLOB_LED_STARTCODE="ledasm-sa11x0.o" AC_MSG_WARN([Please check Brutus flash]) BLOB_FLASH_OBJS="nullflash.o" DIAG_PLATFORM_OBJS="brutus.o" @@ -155,6 +165,8 @@ board_name="Iskratel CEP" AC_DEFINE(CEP) BLOB_PLATFORM_OBJS="cep.o" + BLOB_LED_DRIVER_OBJS="led-sa11x0.o" + BLOB_LED_STARTCODE="ledasm-sa11x0.o" AC_MSG_WARN([Please check configuration in arch/cep.h]) BLOB_FLASH_OBJS="intel32.o" DIAG_PLATFORM_OBJS="cep.o" @@ -165,6 +177,8 @@ board_name="Delft University of Technology CreditLART" AC_DEFINE(CLART) BLOB_PLATFORM_OBJS="clart.o" + BLOB_LED_DRIVER_OBJS="led-sa11x0.o" + BLOB_LED_STARTCODE="ledasm-sa11x0.o" AC_MSG_WARN([Please check creditlart memory config in arch/clart.h]) BLOB_FLASH_OBJS="intel16.o" DIAG_PLATFORM_OBJS="clart.o" @@ -175,6 +189,8 @@ board_name="2d3D, Inc. SA-1110 Development Board" AC_DEFINE(FRODO) BLOB_PLATFORM_OBJS="frodo.o" + BLOB_LED_DRIVER_OBJS="led-sa11x0.o" + BLOB_LED_STARTCODE="ledasm-sa11x0.o" BLOB_FLASH_OBJS="intel32.o" DIAG_PLATFORM_OBJS="frodo.o" use_cpu="sa1110" @@ -184,6 +200,8 @@ board_name="Compaq Ipaq H3600 series" AC_DEFINE(H3600) BLOB_PLATFORM_OBJS="h3600.o" + BLOB_LED_DRIVER_OBJS="led-sa11x0.o" + BLOB_LED_STARTCODE="ledasm-sa11x0.o" AC_MSG_WARN([Warning: untested platform!]) AC_MSG_WARN([Please check h3600 memory config in arch/h3600.h]) BLOB_FLASH_OBJS="intel32.o" @@ -195,6 +213,8 @@ board_name="The Hack Kit base cpu board" AC_DEFINE(HKIT) BLOB_PLATFORM_OBJS="hackkit.o" + BLOB_LED_DRIVER_OBJS="led-sa11x0.o" + BLOB_LED_STARTCODE="ledasm-sa11x0.o" BLOB_FLASH_OBJS="intel32.o" DIAG_PLATFORM_OBJS="hackkit.o" use_cpu="sa1110" @@ -204,6 +224,8 @@ board_name="Vercel UD-1 (IDR)" AC_DEFINE(IDR) BLOB_PLATFORM_OBJS="idr.o" + BLOB_LED_DRIVER_OBJS="led-sa11x0.o" + BLOB_LED_STARTCODE="ledasm-sa11x0.o" BLOB_FLASH_OBJS="intel16.o" DIAG_PLATFORM_OBJS="idr.o" use_cpu="sa1110" @@ -213,6 +235,8 @@ board_name="Hewlett-Packard Jornada 720 with flash daughter board" AC_DEFINE(JORNADA720) BLOB_PLATFORM_OBJS="jornada720.o" + BLOB_LED_DRIVER_OBJS="led-sa11x0.o" + BLOB_LED_STARTCODE="ledasm-sa11x0.o" AC_MSG_WARN([Warning: untested platform!]) BLOB_FLASH_OBJS="intel32.o" DIAG_PLATFORM_OBJS="jornada720.o" @@ -223,6 +247,8 @@ board_name="Delft University of Technology LART" AC_DEFINE(LART) BLOB_PLATFORM_OBJS="lart.o" + BLOB_LED_DRIVER_OBJS="led-sa11x0.o" + BLOB_LED_STARTCODE="ledasm-sa11x0.o" BLOB_FLASH_OBJS="intel32.o" DIAG_PLATFORM_OBJS="lart.o" use_cpu="sa1100" @@ -233,6 +259,8 @@ AC_DEFINE(LUBBOCK) AC_MSG_WARN([Warning: untested platform!]) BLOB_PLATFORM_OBJS="lubbock.o" + BLOB_LED_DRIVER_OBJS="led-sa11x0.o" + BLOB_LED_STARTCODE="ledasm-sa11x0.o" BLOB_FLASH_OBJS="intel32.o" DIAG_PLATFORM_OBJS="lubbock.o" use_cpu="pxa250" @@ -242,6 +270,8 @@ board_name="FGAG miniprint" AC_DEFINE(MINIPRINT) BLOB_PLATFORM_OBJS="miniprint.o" + BLOB_LED_DRIVER_OBJS="led-sa11x0.o" + BLOB_LED_STARTCODE="ledasm-sa11x0.o" BLOB_FLASH_OBJS="intel32.o" DIAG_PLATFORM_OBJS="miniprint.o" use_cpu="sa1110" @@ -251,6 +281,8 @@ board_name="NESA" AC_DEFINE(NESA) BLOB_PLATFORM_OBJS="nesa.o" + BLOB_LED_DRIVER_OBJS="led-sa11x0.o" + BLOB_LED_STARTCODE="ledasm-sa11x0.o" BLOB_FLASH_OBJS="amd32.o" DIAG_PLATFORM_OBJS="nesa.o" use_cpu="sa1100" @@ -260,6 +292,8 @@ board_name="University of New South Wales PLEB" AC_DEFINE(PLEB) BLOB_PLATFORM_OBJS="pleb.o" + BLOB_LED_DRIVER_OBJS="led-sa11x0.o" + BLOB_LED_STARTCODE="ledasm-sa11x0.o" AC_MSG_WARN([Please check PLEB flash]) BLOB_FLASH_OBJS="nullflash.o" DIAG_PLATFORM_OBJS="pleb.o" @@ -279,6 +313,8 @@ board_name="TuxScreen (Shannon)" AC_DEFINE(SHANNON) BLOB_PLATFORM_OBJS="shannon.o" + BLOB_LED_DRIVER_OBJS="led-sa11x0.o" + BLOB_LED_STARTCODE="ledasm-sa11x0.o" BLOB_FLASH_OBJS="amd32.o" DIAG_PLATFORM_OBJS="shannon.o" use_cpu="sa1100" @@ -288,6 +324,8 @@ board_name="Prueftechnik Digital Board REV 0802" AC_DEFINE(PT_SYSTEM3) BLOB_PLATFORM_OBJS="system3.o" + BLOB_LED_DRIVER_OBJS="led-sa11x0.o" + BLOB_LED_STARTCODE="ledasm-sa11x0.o" BLOB_FLASH_OBJS="intel32.o" DIAG_PLATFORM_OBJS="system3.o" use_cpu="sa1110" @@ -297,6 +335,8 @@ board_name="Keith & Koep Trizeps Board" AC_DEFINE(TRIZEPS) BLOB_PLATFORM_OBJS="trizeps.o" + BLOB_LED_DRIVER_OBJS="led-sa11x0.o" + BLOB_LED_STARTCODE="ledasm-sa11x0.o" AC_MSG_WARN([Warning: untested platform!]) AC_MSG_WARN([Please check trizeps memory config in arch/trizeps.h]) BLOB_FLASH_OBJS="intel16.o" @@ -317,6 +357,7 @@ + dnl define board name and CPU in configuration AC_MSG_RESULT("${board_name}") AC_DEFINE_UNQUOTED(BOARD_NAME, "${board_name}") @@ -356,6 +397,8 @@ AC_SUBST(BLOB_MEMSETUP_OBJS) AC_SUBST(BLOB_REBOOT_DRIVER_OBJS) AC_SUBST(BLOB_SERIAL_DRIVER_OBJS) +AC_SUBST(BLOB_LED_STARTCODE) +AC_SUBST(BLOB_LED_DRIVER_OBJS) |
From: Erik M. <er...@us...> - 2003-02-12 22:40:03
|
Update of /cvsroot/blob/blob/src/commands In directory sc8-pr-cvs1:/tmp/cvs-serv26511/src/commands Modified Files: ferase.c Log Message: Fix ferase help text (from Kevin O'Neill) Index: ferase.c =================================================================== RCS file: /cvsroot/blob/blob/src/commands/ferase.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- ferase.c 17 Apr 2002 19:39:51 -0000 1.1 +++ ferase.c 12 Feb 2003 22:39:59 -0000 1.2 @@ -81,5 +81,5 @@ DONE: return ret; } -char ferase_help[] = "ferase srcadr destadr size(bytes)\n" +char ferase_help[] = "ferase destadr size(bytes)\n" "flash a memory region\n"; |
From: Erik M. <er...@us...> - 2003-02-12 21:56:09
|
Update of /cvsroot/blob/blob/include/blob In directory sc8-pr-cvs1:/tmp/cvs-serv5574/include/blob Modified Files: command.h Log Message: Double the command line length (from Kevin O'Neill) Index: command.h =================================================================== RCS file: /cvsroot/blob/blob/include/blob/command.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- command.h 7 Oct 2001 15:27:35 -0000 1.2 +++ command.h 12 Feb 2003 21:56:01 -0000 1.3 @@ -66,7 +66,7 @@ int parse_command(char *cmdline); -#define MAX_COMMANDLINE_LENGTH (128) +#define MAX_COMMANDLINE_LENGTH (256) #define MAX_ARGS (MAX_COMMANDLINE_LENGTH / 4) void DisplayPrompt(char *prompt); |
From: Erik M. <er...@us...> - 2003-02-11 00:02:51
|
Update of /cvsroot/blob/blob/src/blob In directory sc8-pr-cvs1:/tmp/cvs-serv6970/src/blob Modified Files: jffs2.c memsetup-sa1110.S Log Message: Fix a couple of compile-time warnings Index: jffs2.c =================================================================== RCS file: /cvsroot/blob/blob/src/blob/jffs2.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- jffs2.c 14 Jan 2003 21:10:39 -0000 1.5 +++ jffs2.c 11 Feb 2003 00:02:47 -0000 1.6 @@ -145,7 +145,7 @@ { int i; long uncompressed = 0; - char *src; + char *src = 0; /* look for the next reference to this page */ for (; first; first = first->next) { Index: memsetup-sa1110.S =================================================================== RCS file: /cvsroot/blob/blob/src/blob/memsetup-sa1110.S,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- memsetup-sa1110.S 25 Oct 2002 17:24:14 -0000 1.16 +++ memsetup-sa1110.S 11 Feb 2003 00:02:47 -0000 1.17 @@ -53,7 +53,6 @@ * We want blob to compile right out of the box. * - stefan */ -#define __ASSEMBLY__ #define BLOB_NEED_MEMCONFIG #include <blob/memsetup.h> #include <blob/arch.h> |
From: Erik M. <er...@us...> - 2003-02-11 00:02:51
|
Update of /cvsroot/blob/blob/src/commands In directory sc8-pr-cvs1:/tmp/cvs-serv6970/src/commands Modified Files: reboot.c Log Message: Fix a couple of compile-time warnings Index: reboot.c =================================================================== RCS file: /cvsroot/blob/blob/src/commands/reboot.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- reboot.c 4 Jan 2003 02:11:43 -0000 1.2 +++ reboot.c 11 Feb 2003 00:02:48 -0000 1.3 @@ -29,6 +29,7 @@ #include <blob/serial.h> #include <blob/reboot.h> +#include <blob/util.h> |
From: Erik M. <er...@us...> - 2003-02-11 00:02:13
|
Update of /cvsroot/blob/blob In directory sc8-pr-cvs1:/tmp/cvs-serv6549 Modified Files: configure.in Log Message: Oops, this is needed to make the linker magic work. Index: configure.in =================================================================== RCS file: /cvsroot/blob/blob/configure.in,v retrieving revision 1.58 retrieving revision 1.59 diff -u -d -r1.58 -r1.59 --- configure.in 4 Jan 2003 02:11:42 -0000 1.58 +++ configure.in 11 Feb 2003 00:02:09 -0000 1.59 @@ -46,6 +46,7 @@ AC_CHECK_PROGS(OBJCOPY, arm-linux-objcopy objcopy, echo) AC_CHECK_PROGS(RANLIB, arm-linux-ranlib ranlib, echo) AC_CHECK_PROGS(AR, arm-linux-ar ar, echo) +AC_CHECK_PROGS(LD, arm-linux-ld ld, echo) |
From: Erik M. <er...@us...> - 2003-02-10 23:07:19
|
Update of /cvsroot/blob/blob/src/blob In directory sc8-pr-cvs1:/tmp/cvs-serv9435 Modified Files: Makefile.am chain.S start-ld-script start.S Log Message: The linker magic patch that fixes Kevin O'Neill's BLOB_START_SIZE problem. We basically ask ld to put blob-rest as a binary blob of data in the .data section of blob-rest-piggy.o. Tell the linker we want to link it with the first stage loaders, put a couple of addresses around blob-rest-piggy.o in the linker script, and all is set. I've tested this with the chain loader, but don't have a machine ready to test the real flash loader. It's obviously correct, though (famous last words :) Index: Makefile.am =================================================================== RCS file: /cvsroot/blob/blob/src/blob/Makefile.am,v retrieving revision 1.35 retrieving revision 1.36 diff -u -d -r1.35 -r1.36 --- Makefile.am 4 Jan 2003 02:05:53 -0000 1.35 +++ Makefile.am 10 Feb 2003 23:07:03 -0000 1.36 @@ -22,13 +22,11 @@ # bin_PROGRAMS = \ - blob-start-elf32 \ - blob-start \ - blob-start-chain-elf32 \ - blob-start-chain \ blob-rest-elf32 \ blob-rest \ + blob-elf32 \ blob \ + blob-chain-elf32 \ blob-chain @@ -50,75 +48,10 @@ commands.c: ${top_srcdir}/src/commands/make_commands.sh @BLOB_COMMANDS@ > $@ -# ---- Blob first stage loader --------------------------------------- .S.o: $(COMPILE) -D__ASSEMBLY__ -c $< -# WARNING: start.S *must* be the first file, otherwise the target will -# be linked in the wrong order! -blob_start_elf32_SOURCES = \ - start.S \ - ledasm.S \ - testmem.S - -EXTRA_blob_start_elf32_SOURCES = \ - memsetup-sa1100.S \ - memsetup-sa1110.S \ - start-pxa.S \ - start-sa11x0.S - -blob_start_elf32_DEPENDENCIES = \ - @BLOB_MEMSETUP_OBJS@ \ - @BLOB_STARTCODE_OBJS@ \ - start-ld-script - -blob_start_elf32_LDFLAGS += \ - -Wl,-T,${srcdir}/start-ld-script \ - -Wl,-Map,blob-start-elf32.map - -blob_start_elf32_LDADD += \ - @BLOB_MEMSETUP_OBJS@ \ - @BLOB_STARTCODE_OBJS@ \ - -lgcc - - -blob_start_SOURCES = - - -blob-start: blob-start-elf32 - $(OBJCOPY) $(OCFLAGS) $< $@ - - - - -# ---- Blob first stage chain loader -------------------------------- - -# WARNING: chain.S *must* be the first file, otherwise the target will -# be linked in the wrong order! -blob_start_chain_elf32_SOURCES = \ - chain.S \ - ledasm.S - -blob_start_chain_elf32_DEPENDENCIES =\ - start-ld-script - -blob_start_chain_elf32_LDFLAGS += \ - -Wl,-T,${srcdir}/start-ld-script \ - -Wl,-Map,blob-start-chain-elf32.map - -blob_start_chain_elf32_LDADD += \ - -lgcc - - -blob_start_chain_SOURCES = - - -blob-start-chain: blob-start-chain-elf32 - $(OBJCOPY) $(OCFLAGS) $< $@ - - - # ---- Blob second stage --------------------------------------------- @@ -198,33 +131,75 @@ $(OBJCOPY) $(OCFLAGS) $< $@ +# create an object file from the binary so we can link it into the +# first stage loaders +blob-rest-piggy.o: blob-rest + $(LD) -r -o $@ -b binary $< -# ---- Final blob binary --------------------------------------------- +# ---- Blob first stage loader --------------------------------------- -blob_SOURCES = +# WARNING: start.S *must* be the first file, otherwise the target will +# be linked in the wrong order! +blob_elf32_SOURCES = \ + start.S \ + ledasm.S \ + testmem.S +EXTRA_blob_elf32_SOURCES = \ + memsetup-sa1100.S \ + memsetup-sa1110.S \ + start-pxa.S \ + start-sa11x0.S -blob: blob-start blob-rest - rm -f $@ - dd if=blob-start of=$@ bs=1k conv=sync - dd if=blob-rest of=$@ bs=1k seek=1 - chmod +x $@ +blob_elf32_DEPENDENCIES = \ + @BLOB_MEMSETUP_OBJS@ \ + @BLOB_STARTCODE_OBJS@ \ + start-ld-script \ + blob-rest-piggy.o +blob_elf32_LDFLAGS += \ + -Wl,-T,${srcdir}/start-ld-script \ + -Wl,-Map,blob-start-elf32.map +blob_elf32_LDADD += \ + @BLOB_MEMSETUP_OBJS@ \ + @BLOB_STARTCODE_OBJS@ \ + -lgcc -# ---- Final blob chain loader binary -------------------------------- +blob_SOURCES = -blob_chain_SOURCES = -blob-chain: blob-start-chain blob-rest - rm -f $@ - dd if=blob-start-chain of=$@ bs=1k conv=sync - dd if=blob-rest of=$@ bs=1k seek=1 - chmod +x $@ +blob: blob-elf32 + $(OBJCOPY) $(OCFLAGS) $< $@ + + +# ---- Blob first stage chain loader -------------------------------- + +# WARNING: chain.S *must* be the first file, otherwise the target will +# be linked in the wrong order! +blob_chain_elf32_SOURCES = \ + chain.S \ + ledasm.S + +blob_chain_elf32_DEPENDENCIES =\ + start-ld-script \ + blob-rest-piggy.o + +blob_chain_elf32_LDFLAGS += \ + -Wl,-T,${srcdir}/start-ld-script \ + -Wl,-Map,blob-start-chain-elf32.map + +blob_chain_elf32_LDADD += \ + -lgcc +blob_chain_SOURCES = + + +blob-chain: blob-chain-elf32 + $(OBJCOPY) $(OCFLAGS) $< $@ # ---- Automake administrativia -------------------------------------- @@ -234,7 +209,9 @@ rest-ld-script.in -CLEANFILES = ${srcdir}/*~ rest-ld-script commands.c *.map +CLEANFILES = \ + ${srcdir}/*~ rest-ld-script \ + commands.c *.map blob-rest-piggy.o DISTCLEANFILES = ${builddir}/.deps/*.P Index: chain.S =================================================================== RCS file: /cvsroot/blob/blob/src/blob/chain.S,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- chain.S 4 Nov 2001 23:12:50 -0000 1.2 +++ chain.S 10 Feb 2003 23:07:05 -0000 1.3 @@ -72,11 +72,13 @@ relocate: /* get a clue where we are running so we know what to copy */ - ldr r0, START + ldr r1, START /* relocate the second stage loader */ - add r2, r0, #(64 * 1024) /* blob maximum size is 64kB */ - add r0, r0, #0x400 /* skip first 1024 bytes */ + ldr r0, piggy_start + add r0, r0, r1 + ldr r2, piggy_end + add r2, r2, r1 ldr r1, BLOB_START /* r0 = source address @@ -103,3 +105,5 @@ START: .word 0x00000000 BLOB_START: .word BLOB_ABS_BASE_ADDR +piggy_start: .word __piggy_start +piggy_end: .word __piggy_end Index: start-ld-script =================================================================== RCS file: /cvsroot/blob/blob/src/blob/start-ld-script,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- start-ld-script 7 Oct 2001 15:51:01 -0000 1.1 +++ start-ld-script 10 Feb 2003 23:07:06 -0000 1.2 @@ -18,7 +18,13 @@ . = 0x00000000; . = ALIGN(4); - .text : { *(.text) } + .text : { *(.text) + + __piggy_start = .; + blob-rest-piggy.o + . = ALIGN(8); + __piggy_end = .; + } . = ALIGN(4); .rodata : { *(.rodata) } Index: start.S =================================================================== RCS file: /cvsroot/blob/blob/src/blob/start.S,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- start.S 14 Aug 2002 21:04:25 -0000 1.10 +++ start.S 10 Feb 2003 23:07:06 -0000 1.11 @@ -59,6 +59,8 @@ /* some defines to make life easier */ /* main memory starts at 0xc0000000 */ BLOB_START: .word BLOB_ABS_BASE_ADDR +piggy_start: .word __piggy_start +piggy_end: .word __piggy_end .globl normal_boot @@ -80,11 +82,14 @@ relocate: - adr r0, _start - /* relocate the second stage loader */ - add r2, r0, #(64 * 1024) /* blob maximum size is 64kB */ - add r0, r0, #0x400 /* skip first 1024 bytes */ + adr r1, _start + + ldr r0, piggy_start + add r0, r0, r1 + ldr r2, piggy_end + add r2, r2, r1 + ldr r1, BLOB_START /* r0 = source address |
From: Erik M. <er...@us...> - 2003-02-07 02:46:48
|
Update of /cvsroot/blob/blob/src/blob In directory sc8-pr-cvs1:/tmp/cvs-serv17633/src/blob Modified Files: linux.c Log Message: Fix the physical ramdisk location bug by issueing an ATAG_INITRD2 node. The comment tells the whole story. Index: linux.c =================================================================== RCS file: /cvsroot/blob/blob/src/blob/linux.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- linux.c 24 Jan 2003 09:31:42 -0000 1.16 +++ linux.c 7 Feb 2003 02:46:44 -0000 1.17 @@ -179,6 +179,23 @@ params->u.initrd.size = RAMDISK_FLASH_LEN; params = tag_next(params); + + /* Uhoh, we got it all wrong. ATAG_INITRD takes a *virtual* address + * not a physical address, so it nicely breaks on PXA machines. + * This was fixed in linux-2.4.18-rmk6, which added the + * ATAG_INITRD2 node. This one really takes a physical address. + * Pre 2.4.18-rmk6 SA11x0 kernels will just ignore this node and + * skip over it. Post 2.4.18-rmk6 kernels will parse both the + * INITRD and the INITRD2 node, but the latter will supersede + * the former and everything will be all right. -- Erik + */ + params->hdr.tag = ATAG_INITRD2; + params->hdr.size = tag_size(tag_initrd); + + params->u.initrd.start = RAMDISK_RAM_BASE; + params->u.initrd.size = RAMDISK_FLASH_LEN; + + params = tag_next(params); } |
From: Christopher H. <ch...@us...> - 2003-02-03 21:54:41
|
Update of /cvsroot/blob/blob/src/blob In directory sc8-pr-cvs1:/tmp/cvs-serv1241 Modified Files: intel16.c Log Message: Fix bug in flash_query_block_lock_intel16 noticed by Kevin O'Neill. Index: intel16.c =================================================================== RCS file: /cvsroot/blob/blob/src/blob/intel16.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- intel16.c 24 Jan 2003 09:26:01 -0000 1.7 +++ intel16.c 3 Feb 2003 21:54:36 -0000 1.8 @@ -311,7 +311,7 @@ result = *(p + 2); barrier(); - *blockStart = READ_ARRAY; + *p = READ_ARRAY; barrier(); #ifdef FLASH_DEBUG |
From: Christopher H. <ch...@us...> - 2003-01-29 23:55:53
|
Update of /cvsroot/blob/blob/src/blob In directory sc8-pr-cvs1:/tmp/cvs-serv20307 Modified Files: flash-commands.c Log Message: Fix cut-and-paste errors. Index: flash-commands.c =================================================================== RCS file: /cvsroot/blob/blob/src/blob/flash-commands.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- flash-commands.c 28 Jan 2003 03:32:43 -0000 1.5 +++ flash-commands.c 29 Jan 2003 23:55:49 -0000 1.6 @@ -137,7 +137,7 @@ if(argc != 2) return -ENOPARAMS; - if (!flash_driver->unlock_block) { + if (!flash_driver->lock_block) { printerror(EINVAL, argv[1]); return 0; } @@ -208,7 +208,7 @@ if(argc != 2) return -ENOPARAMS; - if (!flash_driver->unlock_block) { + if (!flash_driver->erase) { printerror(EINVAL, argv[1]); return 0; } |
From: Christopher H. <ch...@us...> - 2003-01-28 04:58:29
|
Update of /cvsroot/blob/blob/src/blob In directory sc8-pr-cvs1:/tmp/cvs-serv19085/src/blob Modified Files: load_kernel.c Log Message: back out small changed from before: for now use KERNEL_RAM_BASE and ignore partition mem_base -- mem_base is not currently set for jffs2 and cramfs parts Index: load_kernel.c =================================================================== RCS file: /cvsroot/blob/blob/src/blob/load_kernel.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- load_kernel.c 28 Jan 2003 03:40:40 -0000 1.14 +++ load_kernel.c 28 Jan 2003 04:58:26 -0000 1.15 @@ -117,7 +117,7 @@ printf("Loading kernel from partition %s (%s) ...", p->name, loader->name); - if ((size = loader->load_kernel((u32 *) p->mem_base, + if ((size = loader->load_kernel((u32 *) KERNEL_RAM_BASE, &part, "/boot/linux")) == 0) { eprintf("error loading kernel!\n"); return(EINVAL); |
From: Christopher H. <ch...@us...> - 2003-01-28 03:46:34
|
Update of /cvsroot/blob/blob/utils/test In directory sc8-pr-cvs1:/tmp/cvs-serv23327 Modified Files: load_kernel_test.c Log Message: Kill off hash_defined_partitions hack. Index: load_kernel_test.c =================================================================== RCS file: /cvsroot/blob/blob/utils/test/load_kernel_test.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- load_kernel_test.c 9 Jan 2003 01:41:21 -0000 1.5 +++ load_kernel_test.c 28 Jan 2003 03:46:31 -0000 1.6 @@ -6,8 +6,10 @@ #include <sys/stat.h> #include <unistd.h> #include <libgen.h> +#include <string.h> #include "blob/load_kernel.h" + int main(int argc, char *argv[]) { char *out; @@ -46,8 +48,8 @@ printf("flash emulation region is 0x%x bytes\n", part.size); - for (i = 0; /**/ ; i++) { - loader = hash_defined_part_table[i].loader; + for (i = 0; ;i++) { + loader = known_loaders[i]; if (!loader) break; |
From: Christopher H. <ch...@us...> - 2003-01-28 03:45:28
|
Update of /cvsroot/blob/blob/utils/test In directory sc8-pr-cvs1:/tmp/cvs-serv22534/utils/test Modified Files: Makefile.am Log Message: add partition.c Index: Makefile.am =================================================================== RCS file: /cvsroot/blob/blob/utils/test/Makefile.am,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- Makefile.am 25 May 2002 17:09:57 -0000 1.7 +++ Makefile.am 28 Jan 2003 03:45:25 -0000 1.8 @@ -37,6 +37,7 @@ mini_inflate.c \ error.c \ flash.c \ + partition.c \ util.c \ jffs2.c \ compr_rtime.c \ |
From: Christopher H. <ch...@us...> - 2003-01-28 03:44:44
|
Update of /cvsroot/blob/blob/include/blob/arch In directory sc8-pr-cvs1:/tmp/cvs-serv21997 Modified Files: badge4.h Log Message: Bump up "RAMDISK"_FLASH_LEN to allow for bigger downloads. Actually length is determined automagically via flash size. Index: badge4.h =================================================================== RCS file: /cvsroot/blob/blob/include/blob/arch/badge4.h,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- badge4.h 27 Jan 2003 20:49:05 -0000 1.14 +++ badge4.h 28 Jan 2003 03:44:41 -0000 1.15 @@ -101,9 +101,9 @@ # define PARAM_FLASH_BASE (BLOB_FLASH_BASE + BLOB_FLASH_LEN) # define PARAM_FLASH_LEN (0x00002000 * 2) # define KERNEL_FLASH_BASE (PARAM_FLASH_BASE + PARAM_FLASH_LEN) -# define KERNEL_FLASH_LEN (0x00010000 * 14) +# define KERNEL_FLASH_LEN (0x00010000 * 16) # define RAMDISK_FLASH_BASE (KERNEL_FLASH_BASE + KERNEL_FLASH_LEN) -# define RAMDISK_FLASH_LEN (0x00010000 * (127 - 14)) +# define RAMDISK_FLASH_LEN (0x00010000 * (127 - 16)) /* limit for d/l only */ #else @@ -112,9 +112,9 @@ # define PARAM_FLASH_BASE (BLOB_FLASH_BASE + BLOB_FLASH_LEN) # define PARAM_FLASH_LEN (0x00002000 * 2) # define RAMDISK_FLASH_BASE (PARAM_FLASH_BASE + PARAM_FLASH_LEN) -# define RAMDISK_FLASH_LEN (0x00010000 * 127) +# define RAMDISK_FLASH_LEN (0x00010000 * (127 - 16)) /* limit for d/l only */ -# define KERNEL_FLASH_LEN (2 * 1024 * 1024) /* limit for download */ +# define KERNEL_FLASH_LEN (2 * 1024 * 1024) /* limit for d/l only */ #endif |
From: Christopher H. <ch...@us...> - 2003-01-28 03:43:09
|
Update of /cvsroot/blob/blob/include/blob In directory sc8-pr-cvs1:/tmp/cvs-serv20937 Modified Files: partition.h Log Message: Added pt_first,pt_next for iterating over partition table. Added pt_flash_start to get absolute address of start of partition in flash. Index: partition.h =================================================================== RCS file: /cvsroot/blob/blob/include/blob/partition.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- partition.h 27 Jan 2003 20:45:00 -0000 1.6 +++ partition.h 28 Jan 2003 03:43:06 -0000 1.7 @@ -115,7 +115,11 @@ extern const blob_partition_t *default_partition_table; extern blob_partition_t *flash_partition_table; +const blob_partition_t *pt_first(void); +const blob_partition_t *pt_next(const blob_partition_t *p); const blob_partition_t *pt_find_by_name(const char *s); const blob_partition_t *pt_find_by_address(u32 addr); + +void *pt_flash_start(const blob_partition_t *p); #endif |
From: Christopher H. <ch...@us...> - 2003-01-28 03:42:34
|
Update of /cvsroot/blob/blob/include/blob In directory sc8-pr-cvs1:/tmp/cvs-serv20528a Modified Files: load_kernel.h Log Message: Kill off hash_defined_partitions hack. Index: load_kernel.h =================================================================== RCS file: /cvsroot/blob/blob/include/blob/load_kernel.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- load_kernel.h 9 Jan 2003 01:41:04 -0000 1.7 +++ load_kernel.h 28 Jan 2003 03:42:31 -0000 1.8 @@ -59,13 +59,7 @@ char *name; }; -/* this will go away once we integrate the new partition code */ -struct hash_defined_partition { - const struct kernel_loader *loader; - char *offset; - u32 size; -}; -extern struct hash_defined_partition hash_defined_part_table[]; +extern struct kernel_loader *known_loaders[]; #ifndef USER_SPACE_TEST /* this is a large area of ram for the loaders to use as a scratchpad */ |
From: Christopher H. <ch...@us...> - 2003-01-28 03:41:30
|
Update of /cvsroot/blob/blob/src/blob In directory sc8-pr-cvs1:/tmp/cvs-serv19804 Modified Files: badge4.c Log Message: Use new initializers. Index: badge4.c =================================================================== RCS file: /cvsroot/blob/blob/src/blob/badge4.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- badge4.c 27 Jan 2003 20:49:06 -0000 1.14 +++ badge4.c 28 Jan 2003 03:41:28 -0000 1.15 @@ -41,18 +41,18 @@ #define DEBUG static struct i2c_bus_gpio_private badge4_i2c_bus_gpio_private = { - sda_gpio: BADGE4_GPIO_SDSDA, - scl_gpio: BADGE4_GPIO_SDSCL, - delay: 100 + .sda_gpio= BADGE4_GPIO_SDSDA, + .scl_gpio= BADGE4_GPIO_SDSCL, + .delay= 100 }; static struct i2c_bus badge4_i2c_bus = { - init_bus: init_bus_gpio, - set_sda: set_sda_gpio, - get_sda: get_sda_gpio, - set_scl: set_scl_gpio, - get_scl: get_scl_gpio, - private: &badge4_i2c_bus_gpio_private + .init_bus= init_bus_gpio, + .set_sda= set_sda_gpio, + .get_sda= get_sda_gpio, + .set_scl= set_scl_gpio, + .get_scl= get_scl_gpio, + .private= &badge4_i2c_bus_gpio_private }; /* flash descriptors for BadgePAD 4 flash */ @@ -64,52 +64,54 @@ static blob_partition_t badge4_default_partition_table[] = { { /* start of table */ - magic: BLOB_DEFAULT_PART_TABLE_MAGIC, - next: sizeof(blob_partition_t), - offset: 0x00000000, /* absolute base address */ - size: BLOB_PART_SIZ_FULL + .magic= BLOB_DEFAULT_PART_TABLE_MAGIC, + .next= sizeof(blob_partition_t), + .offset= 0x00000000, /* absolute base address */ + .size= BLOB_PART_SIZ_FULL }, { /* blob itself */ - magic: BLOB_PART_VALID_MAGIC, - next: sizeof(blob_partition_t), - offset: BLOB_PART_OFS_APPEND, - size: BLOB_FLASH_LEN, - name: "blob", - mem_base: BLOB_RAM_BASE + .magic= BLOB_PART_VALID_MAGIC, + .next= sizeof(blob_partition_t), + .offset= BLOB_PART_OFS_APPEND, + .size= BLOB_FLASH_LEN, + .name= "blob", + .mem_base= BLOB_RAM_BASE }, { /* parameter block */ - magic: BLOB_PART_VALID_MAGIC, - next: sizeof(blob_partition_t), - offset: BLOB_PART_OFS_APPEND, - size: PARAM_FLASH_LEN, - name: "parameters", + .magic= BLOB_PART_VALID_MAGIC, + .next= sizeof(blob_partition_t), + .offset= BLOB_PART_OFS_APPEND, + .size= PARAM_FLASH_LEN, + .name= "param", + .flags= BLOB_PART_FLAG_PTABLE }, #ifdef CONFIG_ZIMAGE_SUPPORT { /* parameter block */ - magic: BLOB_PART_VALID_MAGIC, - next: sizeof(blob_partition_t), - offset: BLOB_PART_OFS_APPEND, - size: KERNEL_FLASH_LEN, - name: "kernel", - flags: BLOB_PART_FLAG_EXEC + .magic= BLOB_PART_VALID_MAGIC, + .next= sizeof(blob_partition_t), + .offset= BLOB_PART_OFS_APPEND, + .size= KERNEL_FLASH_LEN, + .name= "kernel", + .flags= BLOB_PART_FLAG_EXEC, + .mem_base= KERNEL_RAM_BASE, + .entry_point= KERNEL_RAM_BASE }, #endif { /* root */ - magic: BLOB_PART_VALID_MAGIC, - next: sizeof(blob_partition_t), - offset: BLOB_PART_OFS_APPEND, - size: BLOB_PART_SIZ_FULL, - name: "root", - flags: BLOB_PART_FLAG_JFFS2 + .magic= BLOB_PART_VALID_MAGIC, + .next= sizeof(blob_partition_t), + .offset= BLOB_PART_OFS_APPEND, + .size= BLOB_PART_SIZ_FULL, + .name= "ramdisk", /* not really */ + .flags= BLOB_PART_FLAG_JFFS2 }, { /* last entry */ -#define PART_LAST (PART_ROOT + 1) - magic: BLOB_PART_LAST_MAGIC + .magic= BLOB_PART_LAST_MAGIC } }; |
From: Christopher H. <ch...@us...> - 2003-01-28 03:40:43
|
Update of /cvsroot/blob/blob/src/blob In directory sc8-pr-cvs1:/tmp/cvs-serv19274 Modified Files: load_kernel.c Log Message: Iterate over the partition table in load_kernel. Index: load_kernel.c =================================================================== RCS file: /cvsroot/blob/blob/src/blob/load_kernel.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- load_kernel.c 24 Jan 2003 09:39:20 -0000 1.13 +++ load_kernel.c 28 Jan 2003 03:40:40 -0000 1.14 @@ -39,6 +39,7 @@ #include <blob/load_kernel.h> #include <blob/util.h> #include <blob/flash.h> +#include <blob/partition.h> #ifdef CONFIG_CRAMFS_SUPPORT extern struct kernel_loader cramfs_load; @@ -50,41 +51,24 @@ extern struct kernel_loader jffs2_load; #endif -#define FODDER_RAM_BASE (0xC0F00000) - -const void *fodder_ram_base = (void *) FODDER_RAM_BASE; - - -/* this will go away once we integrate the new partition code */ -struct hash_defined_partition hash_defined_part_table[] = { +struct kernel_loader *known_loaders[] = { #ifdef CONFIG_CRAMFS_SUPPORT - { - .loader = &cramfs_load, - .offset = (char *) RAMDISK_FLASH_BASE, - .size = RAMDISK_FLASH_LEN - }, + &cramfs_load, #endif #ifdef CONFIG_ZIMAGE_SUPPORT - { - .loader = &zImage_load, - .offset = (char *) KERNEL_FLASH_BASE, - .size = KERNEL_FLASH_LEN - }, + &zImage_load, #endif #ifdef CONFIG_JFFS2_SUPPORT - { - .loader = &jffs2_load, - .offset = (char *) RAMDISK_FLASH_BASE, - .size = RAMDISK_FLASH_LEN - }, + &jffs2_load, #endif - { - .loader = 0, - .offset = 0, - .size = 0 - } + 0 }; +#define FODDER_RAM_BASE (0xC0F00000) + +const void *fodder_ram_base = (void *) FODDER_RAM_BASE; + + /* function calls for blob */ void ldr_update_progress(void) @@ -94,43 +78,49 @@ int load_kernel(blob_status_t *blob_status) { - int i; u32 size; - const struct kernel_loader *loader; + const struct kernel_loader *loader = 0; + const blob_partition_t *p; struct part_info part; - for (i = 0; /**/ ; i++) { - loader = hash_defined_part_table[i].loader; - - if (!loader) - break; - - part.offset = hash_defined_part_table[i].offset; - part.size = hash_defined_part_table[i].size; + for (p = pt_first(); p != 0; p = pt_next(p)) { +#ifdef CONFIG_JFFS2_SUPPORT + if (p->flags & BLOB_PART_FLAG_JFFS2) + loader = &jffs2_load; + else +#endif +#ifdef CONFIG_CRAMFS_SUPPORT + if (p->flags & BLOB_PART_FLAG_CRAMFS) + loader = &cramfs_load; + else +#endif +#ifdef CONFIG_ZIMAGE_SUPPORT + if (p->flags & BLOB_PART_FLAG_EXEC) /* ?? */ + loader = &zImage_load; + else +#endif + continue; + + part.offset = pt_flash_start(p); + part.size = p->size; part.erasesize = flash_get_block_size((u32)part.offset); if (loader->check_magic(&part)) break; } - if (!loader) { -#if defined(KERNEL_FLASH_BASE) - /* if we have an old-style kernel partition, try that */ - eprintf("Unable to find kernel, loading raw data " - "and hoping for the best!\n"); - size = KERNEL_FLASH_LEN; - MyMemCpy((u32 *)KERNEL_RAM_BASE, (u32 *)KERNEL_FLASH_BASE, size >> 2); -#else + if (!p) { eprintf("Unable to find kernel"); return EINVAL; -#endif - } else { - printf("Loading kernel from %s ...", loader->name); - if ((size = loader->load_kernel((u32 *)KERNEL_RAM_BASE, - &part, "/boot/linux")) == 0) { - eprintf("error loading kernel!\n"); - return(EINVAL); - } + } + + + printf("Loading kernel from partition %s (%s) ...", + p->name, loader->name); + if ((size = loader->load_kernel((u32 *) p->mem_base, + &part, "/boot/linux")) == 0) { + eprintf("error loading kernel!\n"); + return(EINVAL); } blob_status->kernelSize = size; |
From: Christopher H. <ch...@us...> - 2003-01-28 03:38:51
|
Update of /cvsroot/blob/blob/src/blob In directory sc8-pr-cvs1:/tmp/cvs-serv18073 Modified Files: partition.c Log Message: Added pt_first,pt_next for iterating over partition table. Added pt_flash_start to get absolute address of start of partition in flash. Index: partition.c =================================================================== RCS file: /cvsroot/blob/blob/src/blob/partition.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- partition.c 27 Jan 2003 23:23:49 -0000 1.8 +++ partition.c 28 Jan 2003 03:38:48 -0000 1.9 @@ -344,27 +344,60 @@ /* FIXME: if there is still no flash partition table found we * could check for a bootldr partition table over here */ - if ((check_ptable_magic(ptable, BLOB_COPY_PART_TABLE_MAGIC) != 0) || - (fixup_ptable(ptable) != 0)) { - dprintf("no valid partition table found\n"); + if (check_ptable_magic(ptable, BLOB_COPY_PART_TABLE_MAGIC) != 0) { + dprintf("invalid partition table magic\n"); + goto invalid_part; + } - /* construct a minimal partition table */ - ptable[0].magic = BLOB_COPY_PART_TABLE_MAGIC; - ptable[0].next = sizeof(blob_partition_t); - ptable[0].offset = 0; - ptable[0].size = 0; - ptable[1].magic = BLOB_PART_LAST_MAGIC; + if (fixup_ptable(ptable) != 0) { + dprintf("could not fix up partition table\n"); + goto invalid_part; } +done: #ifdef BLOB_DEBUG ptable_print(ptable); -#endif +#endif + return; + +invalid_part: + /* construct a minimal partition table */ + ptable[0].magic = BLOB_COPY_PART_TABLE_MAGIC; + ptable[0].next = sizeof(blob_partition_t); + ptable[0].offset = 0; + ptable[0].size = 0; + ptable[1].magic = BLOB_PART_LAST_MAGIC; + + goto done; } __initlist(ptable_init, INIT_LEVEL_OTHER_STUFF + 2); +const blob_partition_t *pt_first(void) +{ + return pt_next(ptable); +} + +const blob_partition_t *pt_next(const blob_partition_t *p) +{ + for (;;) { + p = next_ptable_entry(p); + + switch (p->magic) { + case BLOB_PART_LAST_MAGIC: + return 0; + case BLOB_PART_VALID_MAGIC: + return p; + case BLOB_PART_INVALID_MAGIC: + break; + default: + return 0; + } + } +} + const blob_partition_t *pt_find_by_name(const char *s) { @@ -427,6 +460,11 @@ } } +void *pt_flash_start(const blob_partition_t *p) +{ + /* absolute location within flash of the given partition */ + return (void *) (ptable->offset + p->offset); +} |
From: Christopher H. <ch...@us...> - 2003-01-28 03:36:39
|
Update of /cvsroot/blob/blob/src/blob In directory sc8-pr-cvs1:/tmp/cvs-serv16782 Modified Files: main.c Log Message: Moved Flash command to flash-commands.c Find parameter block using partition table. Index: main.c =================================================================== RCS file: /cvsroot/blob/blob/src/blob/main.c,v retrieving revision 1.51 retrieving revision 1.52 diff -u -d -r1.51 -r1.52 --- main.c 24 Jan 2003 09:39:20 -0000 1.51 +++ main.c 28 Jan 2003 03:36:36 -0000 1.52 @@ -39,12 +39,11 @@ #endif #include <blob/arch.h> +#include <blob/debug.h> #include <blob/command.h> #include <blob/errno.h> #include <blob/error.h> -#include <blob/flash.h> #include <blob/init.h> -#include <blob/led.h> #include <blob/main.h> #include <blob/md5.h> #include <blob/md5support.h> @@ -56,13 +55,13 @@ #include <blob/uucodec.h> #include <blob/xmodem.h> #include <blob/load_kernel.h> +#include <blob/partition.h> static int do_reload(char *what); static void PrintSerialSpeed(serial_baud_t speed); static void print_elf_sections(void); - - +static void *find_parameters(void); blob_status_t blob_status; @@ -72,9 +71,8 @@ { int numRead = 0; char commandline[MAX_COMMANDLINE_LENGTH]; -#ifdef PARAM_START u32 conf = 0; -#endif + void *params; /* initialise status */ blob_status.paramType = fromFlash; @@ -89,18 +87,20 @@ /* call subsystems (blob_status.* may change) */ init_subsystems(); + /* find parameter partition, if it exists */ + params = find_parameters(); + /* call serial_init() because the default 9k6 speed might not be what the user requested */ serial_init(blob_status.terminalSpeed); /* parse the core tag, for critical things like terminal speed */ -#ifdef PARAM_START - parse_ptag((void *) PARAM_START, &conf); -#endif + if (params) + parse_ptag(params, &conf); /* Print the required GPL string */ printf("\nConsider yourself BLOBed!\n\n"); - printf("%sCopyright (C) 1999 2000 2001 2002 " + printf("%sCopyright (C) 1999 2000 2001 2002 2003 " "Jan-Derk Bakker and Erik Mouw\n", version_str); printf(PACKAGE " comes with ABSOLUTELY NO WARRANTY; " "read the GNU GPL for details.\n"); @@ -121,10 +121,9 @@ } #endif - /* Parse all the tags in the parameter block */ -#ifdef PARAM_START - parse_ptags((void *) PARAM_START, &conf); -#endif + /* Load remaining parameters */ + if (params) + parse_ptags(params, &conf); /* Load kernel and ramdisk from flash to RAM */ do_reload("blob"); @@ -190,6 +189,8 @@ int *bufLen, int **numRead, u32 **digest) { + /* Use of _FLASH_LEN here is WRONG. This should be + the size of the ram buffer */ if(strncmp(name, "blob", 5) == 0) { /* download blob */ *startAddress = BLOB_RAM_BASE; @@ -197,7 +198,6 @@ *numRead = &blob_status.blobSize; *digest = blob_status.blob_md5_digest; blob_status.blobType = fromDownload; -#ifdef PARAM_START } else if(strncmp(name, "param", 6) == 0) { /* download param */ *startAddress = PARAM_RAM_BASE; @@ -205,7 +205,6 @@ *numRead = &blob_status.paramSize; *digest = blob_status.param_md5_digest; blob_status.paramType = fromDownload; -#endif } else if(strncmp(name, "kernel", 7) == 0) { /* download kernel */ *startAddress = KERNEL_RAM_BASE; @@ -402,97 +401,6 @@ #endif /* #ifdef CONFIG_XMODEM_SUPPORT */ - - - - - - -static int Flash(int argc, char *argv[]) -{ - u32 *src; - u32 *dst; - u32 numBytes = 0; - u32 maxSize = 0; - u32 nwords; - block_source_t type = fromFlash; - - - if(argc < 2) - return -ENOPARAMS; - - if(strncmp(argv[1], "blob", 5) == 0) { - src = (u32 *)BLOB_RAM_BASE; - dst = (u32 *)BLOB_FLASH_BASE; - maxSize = BLOB_FLASH_LEN; - numBytes = blob_status.blobSize; - type = blob_status.blobType; -#ifdef PARAM_FLASH_BASE - } else if(strncmp(argv[1], "param", 6) == 0) { - src = (u32 *)PARAM_RAM_BASE; - dst = (u32 *)PARAM_FLASH_BASE; - maxSize = PARAM_FLASH_LEN; - numBytes = blob_status.paramSize; - type = blob_status.paramType; -#endif -#ifdef KERNEL_FLASH_BASE - } else if(strncmp(argv[1], "kernel", 7) == 0) { -# if defined(RAMDISK_FLASH_BASE) && (KERNEL_FLASH_BASE == RAMDISK_FLASH_BASE) - printerrprefix(); - printf("configured for kernel in ramdisk\n"); - return -EINVAL; -# else - src = (u32 *)KERNEL_RAM_BASE; - dst = (u32 *)KERNEL_FLASH_BASE; - numBytes = blob_status.kernelSize; - maxSize = KERNEL_FLASH_LEN; - type = blob_status.kernelType; -# endif -#endif -#ifdef RAMDISK_FLASH_BASE - } else if(strncmp(argv[1], "ramdisk", 8) == 0) { - src = (u32 *)RAMDISK_RAM_BASE; - dst = (u32 *)RAMDISK_FLASH_BASE; - numBytes = blob_status.ramdiskSize; - maxSize = RAMDISK_FLASH_LEN; - type = blob_status.ramdiskType; -#endif - } else { - printerror(EINVAL, argv[1]); - return 0; - } - - if(type == fromFlash) { - printerrprefix(); - printf("%s not downloaded\n", argv[1]); - return -EINVAL; - } - - if(numBytes > maxSize) { - printerrprefix(); - printf("image too large for flash: 0x%08x > 0x%08x\n", - (unsigned int)numBytes, (unsigned int)maxSize); - - return -ETOOLONG; - } - - nwords = (numBytes + sizeof(u32) - 1) / sizeof(u32); - - printf("Saving %s to flash\n", argv[1]); - - flash_write_region(dst, src, nwords); - - return 0; -} - -static char flashhelp[] = "flash {blob|param|kernel|ramdisk}\n" -"Write <argument> image to flash\n"; - -__commandlist(Flash, "flash", flashhelp); - - - - static int SetDownloadSpeed(int argc, char *argv[]) { if(argc < 2) @@ -780,4 +688,11 @@ PRINT_ELF_SECTION(__bss_start, __bss_end, ".bss"); PRINT_ELF_SECTION(__stack_start, __stack_end, ".stack (in .bss)"); #endif +} + +static void *find_parameters(void) +{ + const blob_partition_t *p = pt_find_by_name("parameters"); + + return p ? pt_flash_start(p) : 0; } |
From: Christopher H. <ch...@us...> - 2003-01-28 03:32:46
|
Update of /cvsroot/blob/blob/src/blob In directory sc8-pr-cvs1:/tmp/cvs-serv14258 Modified Files: flash-commands.c Log Message: Use the partition table information for start and length when flashing a parttion. Moved Flash command here. Index: flash-commands.c =================================================================== RCS file: /cvsroot/blob/blob/src/blob/flash-commands.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- flash-commands.c 24 Jan 2003 09:39:20 -0000 1.4 +++ flash-commands.c 28 Jan 2003 03:32:43 -0000 1.5 @@ -39,39 +39,93 @@ #include <blob/util.h> #include <blob/serial.h> #include <blob/flash.h> +#include <blob/partition.h> +#include <blob/main.h> #include <blob/command.h> -static int parse_partition(char *s, u32 **addr, u32 *length) +int parse_partition(char *s, u32 **addr, u32 *length) { - /* this will eventually be replaced by some functionality - in the partition manager */ + const blob_partition_t *p = pt_find_by_name(s); + + if (p == 0) + return -EINVAL; - if(strncmp(s, "blob", 5) == 0) { - *addr = (u32 *)BLOB_FLASH_BASE; - *length = BLOB_FLASH_LEN; -#ifdef PARAM_FLASH_BASE - } else if(strncmp(s, "param", 6) == 0) { - *addr = (u32 *)PARAM_FLASH_BASE; - *length = PARAM_FLASH_LEN; -#endif -#ifdef KERNEL_FLASH_BASE - } else if(strncmp(s, "kernel", 7) == 0) { - *addr = (u32 *)KERNEL_FLASH_BASE; - *length = KERNEL_FLASH_LEN; -#endif -#ifdef RAMDISK_FLASH_BASE - } else if(strncmp(s, "ramdisk", 8) == 0) { - *addr = (u32 *)RAMDISK_FLASH_BASE; - *length = RAMDISK_FLASH_LEN; -#endif + *addr = (u32 *) pt_flash_start(p); + *length = p->size; + + return 0; +} + + + +static int Flash(int argc, char *argv[]) +{ + int rv; + u32 *src; + u32 *dst; + u32 numBytes = 0; + u32 maxSize = 0; + u32 nwords; + block_source_t type = fromFlash; + + if(argc < 2) + return -ENOPARAMS; + + rv = parse_partition(argv[1], &dst, &maxSize); + if (rv < 0) { + printerror(rv, argv[1]); + return 0; + } + + if(strncmp(argv[1], "blob", 5) == 0) { + src = (u32 *)BLOB_RAM_BASE; + numBytes = blob_status.blobSize; + type = blob_status.blobType; + } else if(strncmp(argv[1], "param", 6) == 0) { + src = (u32 *)PARAM_RAM_BASE; + numBytes = blob_status.paramSize; + type = blob_status.paramType; + } else if(strncmp(argv[1], "kernel", 7) == 0) { + src = (u32 *)KERNEL_RAM_BASE; + numBytes = blob_status.kernelSize; + type = blob_status.kernelType; + } else if(strncmp(argv[1], "ramdisk", 8) == 0) { + src = (u32 *)RAMDISK_RAM_BASE; + numBytes = blob_status.ramdiskSize; + type = blob_status.ramdiskType; } else { + printerror(EINVAL, argv[1]); + return 0; + } + + if(type == fromFlash) { + printerrprefix(); + printf("%s not downloaded\n", argv[1]); return -EINVAL; } + if(numBytes > maxSize) { + printerrprefix(); + printf("image too large for flash: 0x%08x > 0x%08x\n", + (unsigned int)numBytes, (unsigned int)maxSize); + + return -ETOOLONG; + } + + nwords = (numBytes + sizeof(u32) - 1) / sizeof(u32); + + printf("Saving %s to flash\n", argv[1]); + + flash_write_region(dst, src, nwords); + return 0; } +static char flashhelp[] = "flash {blob|param|kernel|ramdisk}\n" +"Write <argument> image to flash\n"; + +__commandlist(Flash, "flash", flashhelp); @@ -103,8 +157,8 @@ return 0; } -static char lockhelp[] = "lock {blob|param|kernel|ramdisk}\n" -"Lock <argument> region of flash\n"; +static char lockhelp[] = "lock partition\n" +"Lock <partition> region of flash\n"; __commandlist(Lock, "lock", lockhelp); @@ -139,8 +193,8 @@ return 0; } -static char unlockhelp[] = "unlock {blob|param|kernel|ramdisk}\n" -"Unlock <argument> region of flash\n"; +static char unlockhelp[] = "unlock partition\n" +"Unlock <partition> region of flash\n"; __commandlist(Unlock, "unlock", unlockhelp); @@ -174,7 +228,7 @@ return 0; } -static char erasehelp[] = "erase {blob|param|kernel|ramdisk}\n" -"Erase <argument> region of flash\n"; +static char erasehelp[] = "erase partition\n" +"Erase <partition> region of flash\n"; __commandlist(Erase, "erase", erasehelp); |
From: Christopher H. <ch...@us...> - 2003-01-27 23:23:52
|
Update of /cvsroot/blob/blob/src/blob In directory sc8-pr-cvs1:/tmp/cvs-serv20623 Modified Files: partition.c Log Message: fixup_ptable: quietly skip part entries marked as invalid. Index: partition.c =================================================================== RCS file: /cvsroot/blob/blob/src/blob/partition.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- partition.c 27 Jan 2003 20:45:56 -0000 1.7 +++ partition.c 27 Jan 2003 23:23:49 -0000 1.8 @@ -278,6 +278,9 @@ case BLOB_PART_LAST_MAGIC: return 0; + case BLOB_PART_INVALID_MAGIC: + break; + case BLOB_PART_VALID_MAGIC: dprintf("part @ 0x%p\n", t); |
From: Christopher H. <ch...@us...> - 2003-01-27 20:49:09
|
Update of /cvsroot/blob/blob/include/blob/arch In directory sc8-pr-cvs1:/tmp/cvs-serv13665/include/blob/arch Modified Files: badge4.h Log Message: use new part offset and size support; allow for CONFIG_ZIMAGE_SUPPORT Index: badge4.h =================================================================== RCS file: /cvsroot/blob/blob/include/blob/arch/badge4.h,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- badge4.h 24 Jan 2003 09:29:05 -0000 1.13 +++ badge4.h 27 Jan 2003 20:49:05 -0000 1.14 @@ -94,19 +94,35 @@ #define RAMDISK_RAM_BASE (0xc0600000) /* and where do they live in flash */ -#define BLOB_FLASH_BASE (0x00000000) -#define BLOB_FLASH_LEN (0x00002000 * 6) -#define PARAM_FLASH_BASE (BLOB_FLASH_BASE + BLOB_FLASH_LEN) -#define PARAM_FLASH_LEN (0x00002000 * 2) -#define RAMDISK_FLASH_BASE (PARAM_FLASH_BASE + PARAM_FLASH_LEN) -#define RAMDISK_FLASH_LEN (0x00010000 * 63) +#ifdef CONFIG_ZIMAGE_SUPPORT + +# define BLOB_FLASH_BASE (0x00000000) +# define BLOB_FLASH_LEN (0x00002000 * 6) +# define PARAM_FLASH_BASE (BLOB_FLASH_BASE + BLOB_FLASH_LEN) +# define PARAM_FLASH_LEN (0x00002000 * 2) +# define KERNEL_FLASH_BASE (PARAM_FLASH_BASE + PARAM_FLASH_LEN) +# define KERNEL_FLASH_LEN (0x00010000 * 14) +# define RAMDISK_FLASH_BASE (KERNEL_FLASH_BASE + KERNEL_FLASH_LEN) +# define RAMDISK_FLASH_LEN (0x00010000 * (127 - 14)) + +#else + +# define BLOB_FLASH_BASE (0x00000000) +# define BLOB_FLASH_LEN (0x00002000 * 6) +# define PARAM_FLASH_BASE (BLOB_FLASH_BASE + BLOB_FLASH_LEN) +# define PARAM_FLASH_LEN (0x00002000 * 2) +# define RAMDISK_FLASH_BASE (PARAM_FLASH_BASE + PARAM_FLASH_LEN) +# define RAMDISK_FLASH_LEN (0x00010000 * 127) + +# define KERNEL_FLASH_LEN (2 * 1024 * 1024) /* limit for download */ + +#endif #define PARAM_START PARAM_FLASH_BASE #define PARAM_LEN PARAM_FLASH_LEN #define LOAD_RAMDISK 0 #define RAMDISK_SIZE (4 * 1024) -#define KERNEL_FLASH_LEN (2 * 1024 * 1024) /* limit for download */ /* the position of the kernel boot parameters */ @@ -115,9 +131,10 @@ /* Memory configuration */ #define BADGE4_MDCNFG \ - (MDCNFG_BANK0_ENABLE|MDCNFG_DTIM0_SDRAM|MDCNFG_DWID0_32B|MDCNFG_DRAC0(3)|MDCNFG_TRP0(4)|MDCNFG_TDL0(3)|MDCNFG_TWR0(3)) /* was 0x0000f435 */ + (MDCNFG_BANK0_ENABLE|MDCNFG_DTIM0_SDRAM|MDCNFG_DWID0_32B|\ + MDCNFG_DRAC0(3)|MDCNFG_TRP0(4)|MDCNFG_TDL0(3)|MDCNFG_TWR0(3)) -/* On CS0: Intel TE28F320C3BA100 Advanced+ Boot Block Flash (4MB) */ +/* On CS0: Intel TE28F320C3 or TE28F640C3 Flash */ #define BADGE4_CS0 \ (MSC_RT_ROMFLASH|MSC_RBW16|MSC_RDF(31)|MSC_RDN(31)|MSC_RRR(7)) @@ -139,10 +156,9 @@ #define BADGE4_CS5 \ (MSC_RT_SRAM_012|MSC_RBW32|MSC_RDF(31)|MSC_RDN(31)|MSC_RRR(7)) -#define BADGE4_MSC0 (BADGE4_CS0 | (BADGE4_CS1<<16)) /* was: 0xfff9fffc */ -#define BADGE4_MSC1 (BADGE4_CS2 | (BADGE4_CS3<<16)) /* was: 0x0000fff9 */ -#define BADGE4_MSC2 (BADGE4_CS4 | (BADGE4_CS5<<16)) /* was: 0xfff90000 */ - +#define BADGE4_MSC0 (BADGE4_CS0 | (BADGE4_CS1<<16)) +#define BADGE4_MSC1 (BADGE4_CS2 | (BADGE4_CS3<<16)) +#define BADGE4_MSC2 (BADGE4_CS4 | (BADGE4_CS5<<16)) #define MDCNFG_VALUE BADGE4_MDCNFG /* 0x0 MDCNFG */ #define MDCAS00_VALUE 0xAAAAAAA7 /* 0x04 MDCAS00 */ @@ -157,8 +173,5 @@ #define MDCAS22_VALUE 0xAAAAAAAA /* 0x28 MDCAS22 */ #define MSC2_VALUE BADGE4_MSC2 /* 0x2C MSC2 */ #define SMCNFG_VALUE 0x00000000 /* 0x30 SMCNFG */ - -//#define ARCH_SPECIFIC_MEMSETUP /* we do our own thing */ -//#define ARCH_SPECIFIC_MEMSETUP_STD /* we also use the standard thing */ #endif |
From: Christopher H. <ch...@us...> - 2003-01-27 20:49:09
|
Update of /cvsroot/blob/blob/src/blob In directory sc8-pr-cvs1:/tmp/cvs-serv13665/src/blob Modified Files: badge4.c Log Message: use new part offset and size support; allow for CONFIG_ZIMAGE_SUPPORT Index: badge4.c =================================================================== RCS file: /cvsroot/blob/blob/src/blob/badge4.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- badge4.c 24 Jan 2003 09:27:56 -0000 1.13 +++ badge4.c 27 Jan 2003 20:49:06 -0000 1.14 @@ -62,46 +62,53 @@ /* default partition table for BadgePAD 4 */ static blob_partition_t badge4_default_partition_table[] = { -#define PART_START 0 { /* start of table */ magic: BLOB_DEFAULT_PART_TABLE_MAGIC, next: sizeof(blob_partition_t), offset: 0x00000000, /* absolute base address */ - size: -1 /* filled in later */ + size: BLOB_PART_SIZ_FULL }, -#define PART_BLOB 1 { /* blob itself */ magic: BLOB_PART_VALID_MAGIC, next: sizeof(blob_partition_t), - offset: BLOB_FLASH_BASE, + offset: BLOB_PART_OFS_APPEND, size: BLOB_FLASH_LEN, name: "blob", mem_base: BLOB_RAM_BASE }, -#define PART_PARAM 2 { /* parameter block */ magic: BLOB_PART_VALID_MAGIC, next: sizeof(blob_partition_t), - offset: PARAM_FLASH_BASE, + offset: BLOB_PART_OFS_APPEND, size: PARAM_FLASH_LEN, name: "parameters", }, -#define PART_ROOT 3 +#ifdef CONFIG_ZIMAGE_SUPPORT + { + /* parameter block */ + magic: BLOB_PART_VALID_MAGIC, + next: sizeof(blob_partition_t), + offset: BLOB_PART_OFS_APPEND, + size: KERNEL_FLASH_LEN, + name: "kernel", + flags: BLOB_PART_FLAG_EXEC + }, +#endif { /* root */ magic: BLOB_PART_VALID_MAGIC, next: sizeof(blob_partition_t), - offset: RAMDISK_FLASH_BASE, - size: -1, /* filled in later */ + offset: BLOB_PART_OFS_APPEND, + size: BLOB_PART_SIZ_FULL, name: "root", flags: BLOB_PART_FLAG_JFFS2 }, -#define PART_LAST 4 { /* last entry */ +#define PART_LAST (PART_ROOT + 1) magic: BLOB_PART_LAST_MAGIC } }; @@ -110,16 +117,7 @@ static void badge4_set_partition_table(void) { /* set up the default partition table */ - u32 flash_size = flash_get_size(); - printf("FLASH: %d KiB\n", flash_size / 1024); - - badge4_default_partition_table[PART_START].size = flash_size; - badge4_default_partition_table[PART_ROOT].size = - flash_size - badge4_default_partition_table[PART_BLOB].size - - badge4_default_partition_table[PART_PARAM].size; - default_partition_table = badge4_default_partition_table; - /* we don't know where the flash partition table will live, so * point to the flash and let the partition table |
From: Christopher H. <ch...@us...> - 2003-01-27 20:46:31
|
Update of /cvsroot/blob/blob/src/blob In directory sc8-pr-cvs1:/tmp/cvs-serv11933 Modified Files: partition.c Log Message: Nuke BLOB_DEBUG define I accidentally left in. Index: partition.c =================================================================== RCS file: /cvsroot/blob/blob/src/blob/partition.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- partition.c 27 Jan 2003 20:43:35 -0000 1.6 +++ partition.c 27 Jan 2003 20:45:56 -0000 1.7 @@ -1,4 +1,3 @@ -#define BLOB_DEBUG /* * partition.c: flash partitioning * |