Add an SPL to boot the da850evm from SPI
Subsystems (4)
v4 cover Add an SPL to boot the da850evm from SPI
Hi,
this is v4 of the last part of my recent patchset
[PATCH v3 00/15] Add an SPL to boot the da850evm from SPI
http://lists.denx.de/pipermail/u-boot/2011-November/111182.html
Most of the other parts are already merged, together with this patchset they introduce an SPL for the da850evm to run u-boot directly without the need of a UBL (see doc/README.davinci).
The first patches fix dependencies and introduce a function to load the u-boot image from SPI flash. Patch #4 adds an SPL to the da850evm configuration. Finally, a simple
AIS (Application Image Script) is required to start the SPL. This AIS is generated by mkimage. Patch #5 fixes mkimage for building AIS. Finally the last patch introduces a u-boot.ais target in the Makefile.
This patchset applies on top of git://git.denx.de/u-boot-ti.git
Changes for v4:
- added documentation for the SPL to doc/README.davinci
- split patchset because it got too big
- use COBJS-$(CONFIG_SPL_SPI_LOAD) instead of ifdefs in drivers/mtd/spi/Makefile
- use __noreturn instead of __attribute__((noreturn))
- added Acked-by
Changes for v3:
- removed noise and hardcoded values from drivers/mtd/spi/spi_spl_load.c
- replaced $(PAD_TO) in Makefile by $(CONFIG_SPL_MAX_SIZE)
Major changes for v2:
- Added code that actually loads u-boot from SPI flash and starts it.
To build run
make da850evm_config
make u-boot.ais
Then program u-boot.ais to the SPI flash on the da850evm.
Best regards,
Christian
Christian Riesch (6):
spl: display_options.o is required for SPI flash support in SPL
sf: Add spi_boot() to allow booting from SPI flash in an SPL arm, davinci: Add SPL support for DA850 SoCs
arm, da850evm: Add an SPL for SPI boot
mkimage: Fix variable length header support
arm, davinci: Add support for generating AIS images to the Makefile
.gitignore | 1 + Makefile | 13 ++++ arch/arm/cpu/arm926ejs/davinci/Makefile | 3 +- arch/arm/cpu/arm926ejs/davinci/spl.c | 34 +++++++++++- board/davinci/da8xxevm/da850evm.c | 4 +- board/davinci/da8xxevm/u-boot-spl.lds | 73 +++++++++++++++++++++++ doc/README.SPL | 1 + doc/README.davinci | 9 +++ drivers/mtd/spi/Makefile | 4 + drivers/mtd/spi/spi_spl_load.c | 58 ++++++++++++++++++ include/configs/da850evm.h | 87 +++++++++++++++++++++++++++ include/spi_flash.h | 3 + lib/Makefile | 2 + tools/mkimage.c | 97 ++++++++++++++++--------------- 14 files changed, 338 insertions(+), 51 deletions(-) create mode 100644 board/davinci/da8xxevm/u-boot-spl.lds create mode 100644 drivers/mtd/spi/spi_spl_load.c
PATCH v4 1/6 spl: display_options.o is required for SPI flash support in SPL
--- lib/Makefile | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)
lib/Makefile +2 -0
@@ -50,6 +50,8 @@ COBJS-$(CONFIG_SHA1) += sha1.o COBJS-$(CONFIG_SHA256) += sha256.o COBJS-y += strmhz.o COBJS-$(CONFIG_RBTREE) += rbtree.o +else +COBJS-$(CONFIG_SPL_SPI_FLASH_SUPPORT) += display_options.o endif COBJS-y += ctype.o
Signature · 1 line
1.7.0.4
PATCH v4 2/6 sf: Add spi_boot() to allow booting from SPI flash in an SPL
In reply to Christian Riesch--- doc/README.SPL | 1 + drivers/mtd/spi/Makefile | 4 +++ drivers/mtd/spi/spi_spl_load.c | 58 ++++++++++++++++++++++++++++++++++++++++ include/spi_flash.h | 3 ++ 4 files changed, 66 insertions(+), 0 deletions(-) create mode 100644 drivers/mtd/spi/spi_spl_load.c
doc/README.SPL +1 -0
@@ -65,3 +65,4 @@ CONFIG_SPL_NAND_SUPPORT (drivers/mtd/nand/libnand.o) CONFIG_SPL_DMA_SUPPORT (drivers/dma/libdma.o) CONFIG_SPL_POST_MEM_SUPPORT (post/drivers/memory.o) CONFIG_SPL_NAND_LOAD (drivers/mtd/nand/nand_spl_load.o) +CONFIG_SPL_SPI_LOAD (drivers/mtd/spi/spi_spl_load.o)
drivers/mtd/spi/Makefile +4 -0
@@ -25,6 +25,10 @@ include $(TOPDIR)/config.mk LIB := $(obj)libspi_flash.o +ifdef CONFIG_SPL_BUILD +COBJS-$(CONFIG_SPL_SPI_LOAD) += spi_spl_load.o +endif + COBJS-$(CONFIG_SPI_FLASH) += spi_flash.o COBJS-$(CONFIG_SPI_FLASH_ATMEL) += atmel.o COBJS-$(CONFIG_SPI_FLASH_EON) += eon.o
drivers/mtd/spi/spi_spl_load.c new file +58 -0
58 lines not on this page · raw message
include/spi_flash.h +3 -0
@@ -25,6 +25,7 @@#include <spi.h> #include <linux/types.h> +#include <linux/compiler.h> struct spi_flash {struct spi_slave *spi;
@@ -68,4 +69,6 @@ static inline int spi_flash_erase(struct spi_flash *flash, u32 offset, return flash->erase(flash, offset, len); } +void spi_boot (void )__noreturn ; +#endif /* _SPI_FLASH_H_ */
Signature · 1 line
1.7.0.4
PATCH v4 2/6 sf: Add spi_boot() to allow booting from SPI flash in an SPL
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20111202/bb5e9e6c/attachment.pgp>
PATCH v4 3/6 arm, davinci: Add SPL support for DA850 SoCs
In reply to Christian RieschThis code adds an SPL for booting from SPI flash on DA850 SoCs.
--- arch/arm/cpu/arm926ejs/davinci/Makefile | 3 +- arch/arm/cpu/arm926ejs/davinci/spl.c | 34 ++++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 2 deletions(-)
arch/arm/cpu/arm926ejs/davinci/Makefile +2 -1
@@ -38,7 +38,8 @@ COBJS-$(CONFIG_DRIVER_TI_EMAC) += lxt972.o dp83848.o et1011c.o ksz8873.o ifdef CONFIG_SPL_BUILD COBJS-y += spl.o -COBJS-y += dm365_lowlevel.o +COBJS-$(CONFIG_SOC_DM365) += dm365_lowlevel.o +COBJS-$(CONFIG_SOC_DA8XX) += da850_lowlevel.o endif SOBJS = reset.o
arch/arm/cpu/arm926ejs/davinci/spl.c +33 -1
@@ -26,6 +26,16 @@#include <nand.h> #include <asm/arch/dm365_lowlevel.h> #include <ns16550.h> +#include <malloc.h> +#include <spi_flash.h> + +DECLARE_GLOBAL_DATA_PTR ; + +/* Define global data structure pointer to it*/ +static gd_t gdata __attribute__ ((section(".data"))); +static bd_t bdata __attribute__ ((section(".data"))); + +#ifndef CONFIG_SPL_LIBCOMMON_SUPPORT void puts (const char *str) {
@@ -41,6 +51,8 @@ void putc(char c) NS16550_putc((NS16550_t)(CONFIG_SYS_NS16550_COM1), c); } +#endif /* CONFIG_SPL_LIBCOMMON_SUPPORT */ +inline void hang (void ) {puts ("### ERROR ### Please RESET the board ###\n" );
@@ -50,14 +62,34 @@ inline void hang(void)void board_init_f (ulong dummy) { +#ifdef CONFIG_SOC_DM365 dm36x_lowlevel_init (0 ); +#endif +#ifdef CONFIG_SOC_DA8XX +arch_cpu_init (); +#endif relocate_code (CONFIG_SPL_STACK ,NULL ,CONFIG_SPL_TEXT_BASE ); }void board_init_r (gd_t *id,ulong dummy) { - +#ifdef CONFIG_SOC_DM365 nand_init ();puts ("Nand boot...\n" );nand_boot (); +#endif +#ifdef CONFIG_SOC_DA8XX +mem_malloc_init (CONFIG_SYS_TEXT_BASE -CONFIG_SYS_MALLOC_LEN , +CONFIG_SYS_MALLOC_LEN ); + + gd = &gdata; + gd->bd = &bdata; + gd->flags |=GD_FLG_RELOC ; + gd->baudrate =CONFIG_BAUDRATE ; +serial_init ();/* serial communications setup */ + gd->have_console =1 ; + +puts ("SPI boot...\n" ); +spi_boot (); +#endif }
Signature · 1 line
1.7.0.4
PATCH v4 3/6 arm, davinci: Add SPL support for DA850 SoCs
Quoted 1 line · Christian Riesch
This code adds an SPL for booting from SPI flash on DA850 SoCs.
And, part of my TODO SPL merge for DaVinci/OMAP(ish) is to put the more raw puts/putc into another file I guess for !LIBCOMMON
Signature · 1 line
Tom
PATCH v4 4/6 arm, da850evm: Add an SPL for SPI boot
In reply to Christian Riesch--- board/davinci/da8xxevm/da850evm.c | 4 +- board/davinci/da8xxevm/u-boot-spl.lds | 73 +++++++++++++++++++++++++++ doc/README.davinci | 9 +++ include/configs/da850evm.h | 87 +++++++++++++++++++++++++++++++++ 4 files changed, 172 insertions(+), 1 deletions(-) create mode 100644 board/davinci/da8xxevm/u-boot-spl.lds
board/davinci/da8xxevm/da850evm.c +3 -1
@@ -108,7 +108,7 @@ static const struct pinmux_config gpio_pins[] = {#endif }; -static const struct pinmux_resource pinmuxes[] = { +const struct pinmux_resource pinmuxes[] = {#ifdef CONFIG_DRIVER_TI_EMAC PINMUX_ITEM (emac_pins_mdio), #ifdef CONFIG_DRIVER_TI_EMAC_USE_RMII
@@ -135,6 +135,8 @@ static const struct pinmux_resource pinmuxes[] = { PINMUX_ITEM(gpio_pins), }; +const int pinmuxes_size =ARRAY_SIZE (pinmuxes); +static const struct lpsc_resource lpsc[] = { {DAVINCI_LPSC_AEMIF },/* NAND, NOR */ {DAVINCI_LPSC_SPI1 },/* Serial Flash */
board/davinci/da8xxevm/u-boot-spl.lds new file +73 -0
73 lines not on this page · raw message
doc/README.davinci +9 -0
@@ -95,6 +95,15 @@ into the RAM. The programmers and UBL are always released as part of any standard TI software release associated with an SOC. +Alternative boot method (DA850 EVM only): +For the DA850 EVM an SPL (secondary program loader, see doc/README.SPL) +is provided to load U-Boot directly from SPI flash. In this case, the +SPL does the low level initialization that is otherwise done by the SPL. +To build U-Boot with this SPL, do +make da850evm_config +make u-boot.ais +and program the resulting u-boot.ais file to the SPI flash of the DA850 EVM. + Environment Variables =====================
include/configs/da850evm.h +87 -0
105 lines not on this page · raw message
Signature · 1 line
1.7.0.4
PATCH v4 4/6 arm, da850evm: Add an SPL for SPI boot
On 12/02/2011 09:12 AM, Christian Riesch wrote:
[snip]
Quoted 1 line
include/configs/da850evm.h | 87 +++++++++++++++++++++++++++++++++
[snip]
include/configs/da850evm.h line 123
Quoted 9 lines
include/configs/da850evm.h +9
-0+#define CONFIG_SYS_DA850_DDR2_SDTIMR (0 | \ + (14 << DV_DDR_SDTMR1_RFC_SHIFT) | \ + (2 << DV_DDR_SDTMR1_RP_SHIFT) | \ + (2 << DV_DDR_SDTMR1_RCD_SHIFT) | \ + (1 << DV_DDR_SDTMR1_WR_SHIFT) | \ + (5 << DV_DDR_SDTMR1_RAS_SHIFT) | \ + (8 << DV_DDR_SDTMR1_RC_SHIFT) | \ + (1 << DV_DDR_SDTMR1_RRD_SHIFT) | \ + (0 << DV_DDR_SDTMR1_WTR_SHIFT))
'0 | ..' and '0 << ...' don't help readability over just value saying it (same with shifting 0). Also, unless the manual these come from uses decimal here, hex is preferred. Thanks!
Signature · 1 line
Tom
PATCH v3 13/15 arm, da850evm: Add an SPL for SPI boot
Hi Tom,
Thanks for your comments.
Quoted 4 lines · Tom Rini
On 12/02/2011 09:12 AM, Christian Riesch wrote:
[snip]
Quoted 1 line
include/configs/da850evm.h | 87
+++++++++++++++++++++++++++++++++
Quoted 11 lines
[snip]
include/configs/da850evm.h line 123
Quoted 9 lines
include/configs/da850evm.h +9
-0+#define CONFIG_SYS_DA850_DDR2_SDTIMR (0 | \ + (14 << DV_DDR_SDTMR1_RFC_SHIFT) | \ + (2 << DV_DDR_SDTMR1_RP_SHIFT) | \ + (2 << DV_DDR_SDTMR1_RCD_SHIFT) | \ + (1 << DV_DDR_SDTMR1_WR_SHIFT) | \ + (5 << DV_DDR_SDTMR1_RAS_SHIFT) | \ + (8 << DV_DDR_SDTMR1_RC_SHIFT) | \ + (1 << DV_DDR_SDTMR1_RRD_SHIFT) | \ + (0 << DV_DDR_SDTMR1_WTR_SHIFT))
Quoted 4 lines
'0 | ..' and '0 << ...' don't help readability over just value saying it (same with shifting 0). Also, unless the manual these come from uses decimal here, hex is preferred. Thanks!
'0 | ...'. I agree, I'll remove this.
'0 << ...'
Aaaahhh... Yes, that's pretty useless here, the WTR bits are reserved bits :-/
Decimal values: I'd like to keep them. This is DDR timing, the numbers mean number of clock cycles minus one. So actually (1 << DV_DDR_SDTMR1_RRD_SHIFT) means that trrd=13.3333... ns (two clock cycles) at 150 MHz. So I must calculate with these numbers and this is why I prefer decimal over hex. I am lazy ;-)
Christian
Quoted 7 lines
--
Tom
_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot
PATCH v3 13/15 arm, da850evm: Add an SPL for SPI boot
Quoted 31 lines · Christian Riesch
Hi Tom,
Thanks for your comments.Quoted 4 lines · Tom Rini
On 12/02/2011 09:12 AM, Christian Riesch wrote:
[snip]
Quoted 1 line
?include/configs/da850evm.h ? ? ? ? ? ?| ? 87
+++++++++++++++++++++++++++++++++
Quoted 11 lines
[snip]
Quoted 9 lines
+#define
CONFIG_SYS_DA850_DDR2_SDTIMR(0 | ? ?\
+ ? ? (14 <<DV_DDR_SDTMR1_RFC_SHIFT) | ? ? ? \
+ ? ? (2 <<DV_DDR_SDTMR1_RP_SHIFT) | ? ? ? ? \
+ ? ? (2 <<DV_DDR_SDTMR1_RCD_SHIFT) | ? ? ? ?\
+ ? ? (1 <<DV_DDR_SDTMR1_WR_SHIFT) | ? ? ? ? \
+ ? ? (5 <<DV_DDR_SDTMR1_RAS_SHIFT) | ? ? ? ?\
+ ? ? (8 <<DV_DDR_SDTMR1_RC_SHIFT) | ? ? ? ? \
+ ? ? (1 <<DV_DDR_SDTMR1_RRD_SHIFT) | ? ? ? ?\
+ ? ? (0 <<DV_DDR_SDTMR1_WTR_SHIFT))Quoted 4 lines
'0 | ..' and '0 << ...' don't help readability over just value saying it (same with shifting 0). ?Also, unless the manual these come from uses decimal here, hex is preferred. ?Thanks!
'0 | ...'. ? I agree, I'll remove this.
'0 << ...'
Aaaahhh... Yes, that's pretty useless here, the WTR bits are reserved bits :-/
Quoted 5 lines
Decimal values: I'd like to keep them. This is DDR timing, the numbers mean number of clock cycles minus one. So actually (1 <<
DV_DDR_SDTMR1_RRD_SHIFT) means that trrd=13.3333... ns (two clock cycles) at 150 MHz. So I must calculate with these numbers and this is why I prefer decimal over hex. I am lazy ;-)
OK, that's fine too, thanks.
Signature · 1 line
Tom
PATCH v3 13/15 arm, da850evm: Add an SPL for SPI boot
In reply to Christian RieschHi Tom,
Quoted 26 lines · Christian Riesch
Hi Tom,
Thanks for your comments.Quoted 16 lines · Tom Rini
On 12/02/2011 09:12 AM, Christian Riesch wrote:
[snip]
Quoted 2 lines
?include/configs/da850evm.h ? ? ? ? ? ?| ? 87
+++++++++++++++++++++++++++++++++[snip]
Quoted 9 lines
+#define
CONFIG_SYS_DA850_DDR2_SDTIMR(0 | ? ?\
+ ? ? (14 <<DV_DDR_SDTMR1_RFC_SHIFT) | ? ? ? \
+ ? ? (2 <<DV_DDR_SDTMR1_RP_SHIFT) | ? ? ? ? \
+ ? ? (2 <<DV_DDR_SDTMR1_RCD_SHIFT) | ? ? ? ?\
+ ? ? (1 <<DV_DDR_SDTMR1_WR_SHIFT) | ? ? ? ? \
+ ? ? (5 <<DV_DDR_SDTMR1_RAS_SHIFT) | ? ? ? ?\
+ ? ? (8 <<DV_DDR_SDTMR1_RC_SHIFT) | ? ? ? ? \
+ ? ? (1 <<DV_DDR_SDTMR1_RRD_SHIFT) | ? ? ? ?\
+ ? ? (0 <<DV_DDR_SDTMR1_WTR_SHIFT))Quoted 4 lines
'0 | ..' and '0 << ...' don't help readability over just value saying it (same with shifting 0). ?Also, unless the manual these come from uses decimal here, hex is preferred. ?Thanks!
Quoted 6 lines
'0 | ...'. ? I agree, I'll remove this.
'0 << ...'
Aaaahhh... Yes, that's pretty useless here, the WTR bits are reserved bits :-/
Uh, sorry, they are not reserved. But a zero value here means that we have one clock cycle (because it's number of clock cycles minus one). So I'd like to keep the line because it will help others to see that WTR is set to one clock cycle.
Christian
Quoted 17 lines
Decimal values: I'd like to keep them. This is DDR timing, the numbers mean number of clock cycles minus one. So actually (1 <<
DV_DDR_SDTMR1_RRD_SHIFT) means that trrd=13.3333... ns (two clock cycles) at 150 MHz. So I must calculate with these numbers and this is why I prefer decimal over hex. I am lazy ;-)Christian
Quoted 7 lines
--
Tom
_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot
PATCH v3 13/15 arm, da850evm: Add an SPL for SPI boot
Quoted 37 lines · Christian Riesch
Hi Tom,
Quoted 26 lines · Christian Riesch
Hi Tom,
Thanks for your comments.Quoted 16 lines · Tom Rini
On 12/02/2011 09:12 AM, Christian Riesch wrote:
[snip]
Quoted 2 lines
include/configs/da850evm.h | 87+++++++++++++++++++++++++++++++++
[snip]
include/configs/da850evm.h line 123
Quoted 9 lines
include/configs/da850evm.h +9
-0+#define CONFIG_SYS_DA850_DDR2_SDTIMR (0 | \ + (14 << DV_DDR_SDTMR1_RFC_SHIFT) | \ + (2 << DV_DDR_SDTMR1_RP_SHIFT) | \ + (2 << DV_DDR_SDTMR1_RCD_SHIFT) | \ + (1 << DV_DDR_SDTMR1_WR_SHIFT) | \ + (5 << DV_DDR_SDTMR1_RAS_SHIFT) | \ + (8 << DV_DDR_SDTMR1_RC_SHIFT) | \ + (1 << DV_DDR_SDTMR1_RRD_SHIFT) | \ + (0 << DV_DDR_SDTMR1_WTR_SHIFT))Quoted 4 lines
'0 | ..' and '0 << ...' don't help readability over just value saying it (same with shifting 0). Also, unless the manual these come from uses decimal here, hex is preferred. Thanks!
Quoted 6 lines
'0 | ...'. I agree, I'll remove this.
'0 << ...'
Aaaahhh... Yes, that's pretty useless here, the WTR bits are reserved bits :-/
Quoted 4 lines
Uh, sorry, they are not reserved. But a zero value here means that we have one clock cycle (because it's number of clock cycles minus one). So I'd like to keep the line because it will help others to see that WTR is set to one clock cycle.
I'd say it's not obvious that a value of zero means one clock cycle, so drop the define and just comment what the full value contains.
Signature · 1 line
Tom
PATCH v4 5/6 mkimage: Fix variable length header support
In reply to Christian RieschSupport for variable length images like AIS image was introduced in commit f0662105b674a3874227316abf8536bebc9b5995. A parameter "-s" was also introduced to prohibit copying of the image file automatically in the main program. However, this parameter was implemented incorrectly and the image file was copied nevertheless.
--- tools/mkimage.c | 97 ++++++++++++++++++++++++++++--------------------------- 1 files changed, 49 insertions(+), 48 deletions(-)
tools/mkimage.c +49 -48
@@ -383,65 +383,66 @@ NXTARG: ;exit (EXIT_FAILURE ); } -if (!params.skipcpy && - (params.type ==IH_TYPE_MULTI || - params.type ==IH_TYPE_SCRIPT )) { -char *file = params.datafile; -uint32_t size; - -for (;;) { -char *sep =NULL ; - -if (file) { -if ((sep =strchr (file,':' )) !=NULL ) { - *sep ='\0' ; +if (!params.skipcpy) { +if (params.type ==IH_TYPE_MULTI || + params.type ==IH_TYPE_SCRIPT ) { +char *file = params.datafile; +uint32_t size; + +for (;;) { +char *sep =NULL ; + +if (file) { +if ((sep =strchr (file,':' )) !=NULL ) { + *sep ='\0' ; + } + +if (stat (file, &sbuf) <0 ) { +fprintf (stderr,"%s: Can't stat %s: %s\n" , + params.cmdname, file,strerror (errno)); +exit (EXIT_FAILURE ); + } + size =cpu_to_uimage (sbuf.st_size); + }else { + size =0 ; } -if (stat (file, &sbuf) <0 ) { -fprintf (stderr,"%s: Can't stat %s: %s\n" , - params.cmdname, file,strerror (errno)); +if (write (ifd, (char *)&size,sizeof (size)) !=sizeof (size)) { +fprintf (stderr,"%s: Write error on %s: %s\n" , + params.cmdname, params.imagefile, +strerror (errno));exit (EXIT_FAILURE ); } - size =cpu_to_uimage (sbuf.st_size); - }else { - size =0 ; - } -if (write (ifd, (char *)&size,sizeof (size)) !=sizeof (size)) { -fprintf (stderr,"%s: Write error on %s: %s\n" , - params.cmdname, params.imagefile, -strerror (errno)); -exit (EXIT_FAILURE ); - } +if (!file) { +break ; + } -if (!file) { -break ; +if (sep) { + *sep =':' ; + file = sep +1 ; + }else { + file =NULL ; + } } -if (sep) { - *sep =':' ; - file = sep +1 ; - }else { - file =NULL ; - } - } + file = params.datafile; - file = params.datafile; - -for (;;) { -char *sep =strchr (file,':' ); -if (sep) { - *sep ='\0' ; -copy_file (ifd, file,1 ); - *sep++ =':' ; - file = sep; - }else { -copy_file (ifd, file,0 ); -break ; +for (;;) { +char *sep =strchr (file,':' ); +if (sep) { + *sep ='\0' ; +copy_file (ifd, file,1 ); + *sep++ =':' ; + file = sep; + }else { +copy_file (ifd, file,0 ); +break ; + } } + }else { +copy_file (ifd, params.datafile,0 ); } - }else { -copy_file (ifd, params.datafile,0 ); }/* We're a bit of paranoid */
Signature · 1 line
1.7.0.4
PATCH v4 6/6 arm, davinci: Add support for generating AIS images to the Makefile
In reply to Christian Riesch--- .gitignore | 1 + Makefile | 13 +++++++++++++ 2 files changed, 14 insertions(+), 0 deletions(-)
.gitignore +1 -0
@@ -35,6 +35,7 @@ /u-boot.dis /u-boot.lds /u-boot.ubl +/u-boot.ais /u-boot.dtb /u-boot.sb
Makefile +13 -0
@@ -417,6 +417,18 @@ $(obj)u-boot.ubl: $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin rm $(obj)u-boot-ubl.bin rm $(obj)spl/u-boot-spl-pad.bin +$(obj)u-boot.ais: $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin + $(obj)tools/mkimage -s -n /dev/null -T aisimage \ + -e $(CONFIG_SPL_TEXT_BASE) -d $(obj)spl/u-boot-spl.bin \ + $(obj)spl/u-boot-spl.ais + $(OBJCOPY) ${OBJCFLAGS} -I binary \ + --pad-to=$(CONFIG_SPL_MAX_SIZE) -O binary \ + $(obj)spl/u-boot-spl.ais $(obj)spl/u-boot-spl-pad.ais + cat $(obj)spl/u-boot-spl-pad.ais $(obj)u-boot.bin > \ + $(obj)u-boot.ais + rm $(obj)spl/u-boot-spl.ais + rm $(obj)spl/u-boot-spl-pad.ais + $(obj)u-boot.sb: $(obj)u-boot.bin $(obj)spl/u-boot-spl.bin elftosb -zdf imx28 -c $(TOPDIR)/board/$(BOARDDIR)/u-boot.bd \ -o $(obj)u-boot.sb
@@ -788,6 +800,7 @@ clobber: clean @rm -f $(obj)u-boot.kwb @rm -f $(obj)u-boot.imx @rm -f $(obj)u-boot.ubl + @rm -f $(obj)u-boot.ais @rm -f $(obj)u-boot.dtb @rm -f $(obj)u-boot.sb @rm -f $(obj)tools/{env/crc32.c,inca-swap-bytes}
Signature · 1 line
1.7.0.4
PATCH v4 6/6 arm, davinci: Add support for generating AIS images to the Makefile
Makefile $(obj)u-boot.ubl: $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin · line 428
Quoted 9 lines · On Friday 02 December 2011 11:12:10 Christian Riesch wrote:
+$(obj)u-boot.ais: $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin
Makefile +8
-0+ $(obj)tools/mkimage -s -n /dev/null -T aisimage \ + -e $(CONFIG_SPL_TEXT_BASE) -d $(obj)spl/u-boot-spl.bin \ + $(obj)spl/u-boot-spl.ais + $(OBJCOPY) ${OBJCFLAGS} -I binary \ + --pad-to=$(CONFIG_SPL_MAX_SIZE) -O binary \ + $(obj)spl/u-boot-spl.ais $(obj)spl/u-boot-spl-pad.ais + cat $(obj)spl/u-boot-spl-pad.ais $(obj)u-boot.bin > \ + $(obj)u-boot.ais
lack of indentation on wrapped lines makes it hard to see what's going on
Makefile $(obj)u-boot.ubl: $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin · line 430
Quoted 2 lines
Makefile +2
-0+ rm $(obj)spl/u-boot-spl.ais + rm $(obj)spl/u-boot-spl-pad.ais
rm $(obj)spl/u-boot-spl{,-pad}.ais-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20111202/8861870e/attachment.pgp>
PATCH v4 6/6 arm, davinci: Add support for generating AIS images to the Makefile
Hi Mike,
Thanks for your comments.
Quoted 11 lines · Mike Frysinger
Makefile $(obj)u-boot.ubl: $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin · line 428
Quoted 9 lines · On Friday 02 December 2011 11:12:10 Christian Riesch wrote:
+$(obj)u-boot.ais: $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin
Makefile +8
-0+ $(obj)tools/mkimage -s -n /dev/null -T aisimage \ + -e $(CONFIG_SPL_TEXT_BASE) -d $(obj)spl/u-boot-spl.bin \ + $(obj)spl/u-boot-spl.ais + $(OBJCOPY) ${OBJCFLAGS} -I binary \ + --pad-to=$(CONFIG_SPL_MAX_SIZE) -O binary \ + $(obj)spl/u-boot-spl.ais $(obj)spl/u-boot-spl-pad.ais + cat $(obj)spl/u-boot-spl-pad.ais $(obj)u-boot.bin > \ + $(obj)u-boot.ais
Quoted 1 line
lack of indentation on wrapped lines makes it hard to see what's going on
I'll change that.
The chaos above contains three commands:
1) I run the SPL through mkimage to add an AIS header for booting from SPI. Since an empty config file (-n) is sufficient here I use /dev/null here.
2) I pad the result $(obj)spl/u-boot-spl.ais to $CONFIG_SPL_MAX_SIZE with $(OBJCOPY): The result is $(obj)spl/u-boot-spl-pad.ais
3) Then I add $(obj)u-boot.bin with cat, the result is $(obj)u-boot.ais
Quoted 5 lines
Makefile $(obj)u-boot.ubl: $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin · line 430
Quoted 3 lines
Makefile +2
-0+ rm $(obj)spl/u-boot-spl.ais + rm $(obj)spl/u-boot-spl-pad.aisrm $(obj)spl/u-boot-spl{,-pad}.ais
Ok.
Regards, Christian
Quoted 2 lines
-mike
PATCH v4 6/6 arm, davinci: Add support for generating AIS images to the Makefile
Quoted 6 lines · On Saturday 03 December 2011 00:20:19 Christian Riesch wrote:
The chaos above contains three commands:
1) I run the SPL through mkimage to add an AIS header for booting from SPI. Since an empty config file (-n) is sufficient here I use/dev/nullhere.
2) I pad the result $(obj)spl/u-boot-spl.ais to $CONFIG_SPL_MAX_SIZE with $(OBJCOPY): The result is $(obj)spl/u-boot-spl-pad.ais
3) Then I add $(obj)u-boot.bin with cat, the result is $(obj)u-boot.ais
right; i was wondering if we could chain these somehow. but i guess going through intermediate files allows for catching errors that would get missed in a pipeline.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20111203/222f25c5/attachment.pgp>