at91: add bootstrap support
Subsystems (5)
v3 cover at91: add bootstrap support
Hi,
v3:
send correct patch series and pull
can we have it on master the v2 does not cange much since v1
v2:
fix whitesapce
fix comment
fix command default
This patch serie introduce a common bootstrap code aka xloder for TI and at91bootstrap for Atmel to barebox
As I do not have with me right now a TI platform I did not switch it to the new generic bootstrap code.
On at91 add it on the calao usb-a9263 test on nand and spi This patch serie depends on the previous at91 patch series
The following changes since commit cef34886b745cf3f6dff55bf326e29a5857b2206:
graphic_utils/fb_open: fix fbsize (2013-01-16 21:33:14 +0100)
are available in the git repository at:
git://git.jcrosoft.org/barebox.git delivery/at91_bootstrap
for you to fetch changes up to 986a028500f8b80764d089543a824414f021653c:
at91: usb_a9263: add bootstrap version (2013-01-16 21:21:25 +0800)
----------------------------------------------------------------
Jean-Christophe PLAGNIOL-VILLARD (7):
at91: add test commamd to emulate bootrom boot
at91sam926x: lowlevel add external boot support
at91: sam926x: switch lowlevel param to c code
at91: usb-a9263 add lowlevel init introduce common bootstrap code
at91: add bootstrap version
at91: usb_a9263: add bootstrap version
arch/arm/boards/at91sam9263ek/Makefile | 5 ++++ arch/arm/boards/at91sam9263ek/config.h | 87 --------------------------------------------------------------------- arch/arm/boards/at91sam9263ek/lowlevel_init.c | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ arch/arm/boards/mmccpu/Makefile | 5 ++++ arch/arm/boards/mmccpu/config.h | 118 ---------------------------------------------------------------------------------------------- arch/arm/boards/mmccpu/lowlevel_init.c | 135 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ arch/arm/boards/pm9261/Makefile | 5 ++++ arch/arm/boards/pm9261/config.h | 87 --------------------------------------------------------------------- arch/arm/boards/pm9261/lowlevel_init.c | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ arch/arm/boards/pm9263/Makefile | 5 ++++ arch/arm/boards/pm9263/config.h | 103 ---------------------------------------------------------------------------------- arch/arm/boards/pm9263/lowlevel_init.c | 121 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ arch/arm/boards/usb-a926x/Makefile | 9 ++++++++ arch/arm/boards/usb-a926x/usb_a9263_bootstrap.c | 16 +++++++++++++ arch/arm/boards/usb-a926x/usb_a9263_lowlevel_init.c | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ arch/arm/configs/usb_a9263_128mib_bootstrap_defconfig | 24 ++++++++++++++++++++ arch/arm/configs/usb_a9263_bootstrap_defconfig | 23 +++++++++++++++++++ arch/arm/mach-at91/Kconfig | 8 +++++++ arch/arm/mach-at91/Makefile | 2 ++ arch/arm/mach-at91/at91sam926x_lowlevel_init.c | 84 +++++++++++++++++++++++++++++++++++++++++++++++-------------------- arch/arm/mach-at91/boot_test_cmd.c | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ arch/arm/mach-at91/bootstrap.c | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ arch/arm/mach-at91/include/mach/at91_lowlevel_init.h | 33 +++++++++++++++++++++++++++ arch/arm/mach-at91/include/mach/bootstrap.h | 28 +++++++++++++++++++++++ include/bootstrap.h | 34 +++++++++++++++++++++++++++ lib/Kconfig | 2 ++ lib/Makefile | 1 + lib/bootstrap/Kconfig | 13 +++++++++++ lib/bootstrap/Makefile | 3 +++ lib/bootstrap/common.c | 21 +++++++++++++++++ lib/bootstrap/devfs.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ lib/bootstrap/disk.c | 37 ++++++++++++++++++++++++++++++ 32 files changed, 1189 insertions(+), 420 deletions(-) create mode 100644 arch/arm/boards/at91sam9263ek/lowlevel_init.c create mode 100644 arch/arm/boards/mmccpu/lowlevel_init.c create mode 100644 arch/arm/boards/pm9261/lowlevel_init.c create mode 100644 arch/arm/boards/pm9263/lowlevel_init.c create mode 100644 arch/arm/boards/usb-a926x/usb_a9263_bootstrap.c create mode 100644 arch/arm/boards/usb-a926x/usb_a9263_lowlevel_init.c create mode 100644 arch/arm/configs/usb_a9263_128mib_bootstrap_defconfig create mode 100644 arch/arm/configs/usb_a9263_bootstrap_defconfig create mode 100644 arch/arm/mach-at91/boot_test_cmd.c create mode 100644 arch/arm/mach-at91/bootstrap.c create mode 100644 arch/arm/mach-at91/include/mach/at91_lowlevel_init.h create mode 100644 arch/arm/mach-at91/include/mach/bootstrap.h create mode 100644 include/bootstrap.h create mode 100644 lib/bootstrap/Kconfig create mode 100644 lib/bootstrap/Makefile create mode 100644 lib/bootstrap/common.c create mode 100644 lib/bootstrap/devfs.c create mode 100644 lib/bootstrap/disk.c
Best Regards,
J.
_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox
PATCH v3 1/7 at91: add test commamd to emulate bootrom boot
--- arch/arm/mach-at91/Kconfig | 6 +++ arch/arm/mach-at91/Makefile | 1 + arch/arm/mach-at91/boot_test_cmd.c | 99 ++++++++++++++++++++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 arch/arm/mach-at91/boot_test_cmd.c
arch/arm/mach-at91/Kconfig +6 -0
@@ -483,4 +483,10 @@ config CMD_AT91MUX bool "at91mux dump command" default y +config CONFIG_CMD_AT91_BOOT_TEST + bool "at91_boot_test" + help + allow to upload a boot binary to sram and execute it + usefull to test bootstrap or barebox lowlevel init + endif
arch/arm/mach-at91/Makefile +1 -0
@@ -1,4 +1,5 @@ obj-y += setup.o clock.o gpio.o +obj-$(CONFIG_CMD_AT91_BOOT_TEST) += boot_test_cmd.o lowlevel_init-y = at91sam926x_lowlevel_init.o lowlevel_init-$(CONFIG_ARCH_AT91RM9200) = at91rm9200_lowlevel_init.o
arch/arm/mach-at91/boot_test_cmd.c new file +99 -0
99 lines not on this page · raw message
Signature · 7 lines
1.7.10.4 _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
PATCH v3 2/7 at91sam926x: lowlevel add external boot support
--- arch/arm/mach-at91/at91sam926x_lowlevel_init.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-)
arch/arm/mach-at91/at91sam926x_lowlevel_init.c +18 -2
@@ -36,10 +36,19 @@ static void inline pmc_check_mckrdy(void) }while (!(r &AT91_PMC_MCKRDY )); } +static int inline running_in_sram (void ) +{ +u32 addr =get_pc (); + + addr >>=28 ; +return addr ==0 ; +} + void __naked __bare_init reset(void) {u32 r;int i; +int in_sram =running_in_sram ();common_reset ();
@@ -74,7 +83,7 @@ void __naked __bare_init reset(void)* PMC Check if the PLL is already initialized */ r =at91_pmc_read (AT91_PMC_MCKR ); -if (r &AT91_PMC_CSS ) +if (r &AT91_PMC_CSS && !in_sram) goto end;/*
@@ -117,7 +126,7 @@ void __naked __bare_init reset(void)* SDRAMC Check if Refresh Timer Counter is already initialized */ r =at91_sys_read (AT91_SDRAMC_TR ); -if (r) +if (r && !in_sram) goto end;/* SDRAMC_MR : Normal Mode */
@@ -170,6 +179,13 @@ void __naked __bare_init reset(void)/* MATRIX_MCFG - REMAP all masters */ at91_sys_write (AT91_MATRIX_MCFG0 ,0x1FF );#endif +/* +* When boot from external boot +* we need to enable mck and ohter clock +* so enable all of them +* We will shutdown what we don't need later +*/ +at91_pmc_write (AT91_PMC_PCER ,0xffffffff ); end:board_init_lowlevel_return ();
Signature · 7 lines
1.7.10.4 _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
PATCH v3 3/7 at91: sam926x: switch lowlevel param to c code
In reply to Jean-Christophe PLAGNIOL-VILLARDInstead of hardcode define use a struct that the board fill
--- arch/arm/boards/at91sam9263ek/Makefile | 5 + arch/arm/boards/at91sam9263ek/config.h | 99 +------------- arch/arm/boards/at91sam9263ek/lowlevel_init.c | 104 +++++++++++++++ arch/arm/boards/mmccpu/Makefile | 5 + arch/arm/boards/mmccpu/config.h | 130 +------------------ arch/arm/boards/mmccpu/lowlevel_init.c | 135 ++++++++++++++++++++ arch/arm/boards/pm9261/Makefile | 5 + arch/arm/boards/pm9261/config.h | 99 +------------- arch/arm/boards/pm9261/lowlevel_init.c | 102 +++++++++++++++ arch/arm/boards/pm9263/Makefile | 5 + arch/arm/boards/pm9263/config.h | 115 +---------------- arch/arm/boards/pm9263/lowlevel_init.c | 121 ++++++++++++++++++ arch/arm/mach-at91/at91sam926x_lowlevel_init.c | 64 ++++++---- .../mach-at91/include/mach/at91_lowlevel_init.h | 33 +++++ 14 files changed, 580 insertions(+), 442 deletions(-) rewrite arch/arm/boards/at91sam9263ek/config.h (95%) create mode 100644 arch/arm/boards/at91sam9263ek/lowlevel_init.c rewrite arch/arm/boards/mmccpu/config.h (97%) create mode 100644 arch/arm/boards/mmccpu/lowlevel_init.c rewrite arch/arm/boards/pm9261/config.h (95%) create mode 100644 arch/arm/boards/pm9261/lowlevel_init.c rewrite arch/arm/boards/pm9263/config.h (97%) create mode 100644 arch/arm/boards/pm9263/lowlevel_init.c create mode 100644 arch/arm/mach-at91/include/mach/at91_lowlevel_init.h
arch/arm/boards/at91sam9263ek/Makefile +5 -0
@@ -1 +1,6 @@ obj-y += init.o + +lowlevel_init-y = lowlevel_init.o +obj-$(CONFIG_MACH_DO_LOWLEVEL_INIT) += $(lowlevel_init-y) + +pbl-$(CONFIG_MACH_DO_LOWLEVEL_INIT) += $(lowlevel_init-y)
arch/arm/boards/at91sam9263ek/config.h +6 -93
99 lines not on this page · raw message
arch/arm/boards/at91sam9263ek/lowlevel_init.c new file +104 -0
104 lines not on this page · raw message
arch/arm/boards/mmccpu/Makefile +5 -0
@@ -1 +1,6 @@ obj-y += init.o + +lowlevel_init-y = lowlevel_init.o +obj-$(CONFIG_MACH_DO_LOWLEVEL_INIT) += $(lowlevel_init-y) + +pbl-$(CONFIG_MACH_DO_LOWLEVEL_INIT) += $(lowlevel_init-y)
arch/arm/boards/mmccpu/config.h +6 -124
130 lines not on this page · raw message
arch/arm/boards/mmccpu/lowlevel_init.c new file +135 -0
135 lines not on this page · raw message
arch/arm/boards/pm9261/Makefile +5 -0
@@ -1 +1,6 @@ obj-y += init.o + +lowlevel_init-y = lowlevel_init.o +obj-$(CONFIG_MACH_DO_LOWLEVEL_INIT) += $(lowlevel_init-y) + +pbl-$(CONFIG_MACH_DO_LOWLEVEL_INIT) += $(lowlevel_init-y)
arch/arm/boards/pm9261/config.h +6 -93
99 lines not on this page · raw message
arch/arm/boards/pm9261/lowlevel_init.c new file +102 -0
102 lines not on this page · raw message
arch/arm/boards/pm9263/Makefile +5 -0
@@ -1 +1,6 @@ obj-y += init.o + +lowlevel_init-y = lowlevel_init.o +obj-$(CONFIG_MACH_DO_LOWLEVEL_INIT) += $(lowlevel_init-y) + +pbl-$(CONFIG_MACH_DO_LOWLEVEL_INIT) += $(lowlevel_init-y)
arch/arm/boards/pm9263/config.h +6 -109
115 lines not on this page · raw message
arch/arm/boards/pm9263/lowlevel_init.c new file +121 -0
121 lines not on this page · raw message
arch/arm/mach-at91/at91sam926x_lowlevel_init.c +41 -23
146 lines not on this page · raw message
arch/arm/mach-at91/include/mach/at91_lowlevel_init.h new file +33 -0
@@ -0,0 +1,33 @@ +/* +* Copyright (C) 2009-2011 Jean-Christophe PLAGNIOL-VILLARD <[email protected]> +* +* Under GPLv2 +*/ + +#ifndef __AT91_LOWLEVEL_INIT_H__ +#define __AT91_LOWLEVEL_INIT_H__ + +struct at91sam926x_lowlevel_cfg { +u32 wdt_mr; +u32 ebi_pio_pdr; +u32 ebi_pio_ppudr; +u32 ebi_csa; +u32 smc_cs; +u32 smc_mode; +u32 smc_cycle; +u32 smc_pulse; +u32 smc_setup; +u32 pmc_mor; +u32 pmc_pllar; +u32 pmc_mckr1; +u32 pmc_mckr2; +u32 sdrc_cr; +u32 sdrc_tr1; +u32 sdrc_mdr; +u32 sdrc_tr2; +u32 rstc_rmr; +}; + +void at91sam926x_lowlevel_board_config (struct at91sam926x_lowlevel_cfg *cfg); + +#endif /* __AT91_LOWLEVEL_INIT_H__ */
Signature · 7 lines
1.7.10.4 _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
PATCH v3 4/7 at91: usb-a9263 add lowlevel init
In reply to Jean-Christophe PLAGNIOL-VILLARD--- arch/arm/boards/usb-a926x/Makefile | 6 ++ .../arm/boards/usb-a926x/usb_a9263_lowlevel_init.c | 111 ++++++++++++++++++++ arch/arm/mach-at91/Kconfig | 1 + 3 files changed, 118 insertions(+) create mode 100644 arch/arm/boards/usb-a926x/usb_a9263_lowlevel_init.c
arch/arm/boards/usb-a926x/Makefile +6 -0
@@ -1 +1,7 @@ obj-y += init.o + +lowlevel_init-$(CONFIG_MACH_USB_A9263) = usb_a9263_lowlevel_init.o + +obj-$(CONFIG_MACH_DO_LOWLEVEL_INIT) += $(lowlevel_init-y) + +pbl-$(CONFIG_MACH_DO_LOWLEVEL_INIT) += $(lowlevel_init-y)
arch/arm/boards/usb-a926x/usb_a9263_lowlevel_init.c new file +111 -0
111 lines not on this page · raw message
arch/arm/mach-at91/Kconfig +1 -0
@@ -357,6 +357,7 @@ config MACH_TNY_A9263 config MACH_USB_A9263 bool "CALAO USB-A9263" + select MACH_HAS_LOWLEVEL_INIT help Select this if you are using a Calao Systems USB-A9263. <http://www.calao-systems.com>
Signature · 7 lines
1.7.10.4 _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
PATCH v3 5/7 introduce common bootstrap code
In reply to Jean-Christophe PLAGNIOL-VILLARDThis will allow to have a generic code to create different bootstrap
As example
Barebox as TI Xloader
Barebox as AT91 Bootstrap
--- include/bootstrap.h | 34 +++++++++++++++++ lib/Kconfig | 2 + lib/Makefile | 1 + lib/bootstrap/Kconfig | 13 +++++++ lib/bootstrap/Makefile | 3 ++ lib/bootstrap/common.c | 21 +++++++++++ lib/bootstrap/devfs.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++++ lib/bootstrap/disk.c | 37 ++++++++++++++++++ 8 files changed, 209 insertions(+) create mode 100644 include/bootstrap.h create mode 100644 lib/bootstrap/Kconfig create mode 100644 lib/bootstrap/Makefile create mode 100644 lib/bootstrap/common.c create mode 100644 lib/bootstrap/devfs.c create mode 100644 lib/bootstrap/disk.c
include/bootstrap.h new file +34 -0
@@ -0,0 +1,34 @@ +/* +* Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <[email protected]> +* +* Under GPLv2 +*/ + +#ifndef __BOOSTRAP_H__ +#define __BOOSTRAP_H__ + +#define bootstrap_err(fmt, arg...) printf(fmt, ##arg) + +void bootstrap_boot (int (*func)(void ),bool barebox); + +#ifdef CONFIG_BOOTSTRAP_DEVFS +void *bootstrap_read_devfs (char *devname,bool use_bb,int offset, +int default_size,int max_size); +#else +static inline void *bootstrap_read_devfs (char *devname,bool use_bb,int offset, +int default_size,int max_size) +{ +return NULL ; +} +#endif + +#ifdef CONFIG_BOOTSTRAP_DISK +void *bootstrap_read_disk (char *devname); +#else +static inline void *bootstrap_read_disk (char *devname) +{ +return NULL ; +} +#endif + +#endif /* __BOOSTRAP_H__ */
lib/Kconfig +2 -0
@@ -52,4 +52,6 @@ config LIBMTD source lib/gui/Kconfig +source lib/bootstrap/Kconfig + endmenu
lib/Makefile +1 -0
@@ -1,3 +1,4 @@ +obj-$(CONFIG_BOOTSTRAP) += bootstrap/ obj-y += ctype.o obj-y += rbtree.o obj-y += display_options.o
lib/bootstrap/Kconfig new file +13 -0
@@ -0,0 +1,13 @@ +menuconfig BOOTSTRAP + bool "Library bootstrap routines " + depends on SHELL_NONE + +if BOOTSTRAP + +config BOOTSTRAP_DEVFS + bool "devfs support" + +config BOOTSTRAP_DISK + bool "disk support" + +endif
lib/bootstrap/Makefile new file +3 -0
@@ -0,0 +1,3 @@ +obj-y += common.o +obj-$(CONFIG_BOOTSTRAP_DEVFS) += devfs.o +obj-$(CONFIG_BOOTSTRAP_DISK) += disk.o
lib/bootstrap/common.c new file +21 -0
@@ -0,0 +1,21 @@ +/* +* Copyright (C) 2011 Sascha Hauer, Pengutronix +* Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <[email protected]> +* +* Under GPLv2 +*/ + +#include <common.h> +#include <bootstrap.h> +#include <filetype.h> + +void bootstrap_boot (int (*func)(void ),bool barebox) +{ +if (barebox && !is_barebox_arm_head ((void *)func)) +return ; + +shutdown_barebox (); +func (); + +while (1 ); +}
lib/bootstrap/devfs.c new file +98 -0
98 lines not on this page · raw message
lib/bootstrap/disk.c new file +37 -0
@@ -0,0 +1,37 @@ +/* +* Copyright (C) 2011 Sascha Hauer, Pengutronix +* Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <[email protected]> +* +* Under GPLv2 +*/ + +#include <common.h> +#include <fs.h> +#include <fcntl.h> +#include <sizes.h> +#include <errno.h> +#include <malloc.h> +#include <bootstrap.h> + +void *bootstrap_read_disk (char *dev) +{ +int ret; +void *buf; +int len; +char *path ="/" ; + + ret =mount (dev,"fat" , path); +if (ret) { +bootstrap_err ("mounting %s failed with %d\n" , dev, ret); +return NULL ; + } + + buf =read_file ("/barebox.bin" , &len); +if (!buf) { +bootstrap_err ("could not read barebox.bin from %s\n" , dev); +umount (path); +return NULL ; + } + +return buf; +}
Signature · 7 lines
1.7.10.4 _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
PATCH v3 6/7 at91: add bootstrap version
In reply to Jean-Christophe PLAGNIOL-VILLARDThis will allow to boot from NAND/MMC and others.
This version of bootstrap is a non shell version of barebox compressed by the pbl.
--- arch/arm/mach-at91/Kconfig | 1 + arch/arm/mach-at91/Makefile | 1 + arch/arm/mach-at91/bootstrap.c | 86 +++++++++++++++++++++++++++ arch/arm/mach-at91/include/mach/bootstrap.h | 28 +++++++++ 4 files changed, 116 insertions(+) create mode 100644 arch/arm/mach-at91/bootstrap.c create mode 100644 arch/arm/mach-at91/include/mach/bootstrap.h
arch/arm/mach-at91/Kconfig +1 -0
@@ -92,6 +92,7 @@ config SOC_AT91SAM9263 select HAVE_AT91_DBGU1 select HAS_MACB select AT91SAM9_RESET + select HAVE_NOSHELL config SOC_AT91SAM9G45 bool
arch/arm/mach-at91/Makefile +1 -0
@@ -1,6 +1,7 @@ obj-y += setup.o clock.o gpio.o obj-$(CONFIG_CMD_AT91_BOOT_TEST) += boot_test_cmd.o +obj-$(CONFIG_SHELL_NONE) += bootstrap.o lowlevel_init-y = at91sam926x_lowlevel_init.o lowlevel_init-$(CONFIG_ARCH_AT91RM9200) = at91rm9200_lowlevel_init.o obj-$(CONFIG_MACH_DO_LOWLEVEL_INIT) += $(lowlevel_init-y)
arch/arm/mach-at91/bootstrap.c new file +86 -0
86 lines not on this page · raw message
arch/arm/mach-at91/include/mach/bootstrap.h new file +28 -0
@@ -0,0 +1,28 @@ +/* +* Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <[email protected]> +* +* Under GPLv2 +*/ + +#ifndef __MACH_BOOTSTRAP_H__ +#define __MACH_BOOTSTRAP_H__ + +#ifdef CONFIG_MTD_M25P80 +void *bootstrap_board_read_m25p80 (void ); +#else +static inline void *bootstrap_board_read_m25p80 (void ) +{ +return NULL ; +} +#endif + +#ifdef CONFIG_MTD_DATAFLASH +void *bootstrap_board_read_dataflash (void ); +#else +static inline void *bootstrap_board_read_dataflash (void ) +{ +return NULL ; +} +#endif + +#endif /* __MACH_BOOTSTRAP_H__ */
Signature · 7 lines
1.7.10.4 _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
Re: [PATCH 6/7] at91: add bootstrap version
Quoted 80 lines · Jean-Christophe PLAGNIOL-VILLARD
This will allow to boot from NAND/MMC and others.
This version of bootstrap is a non shell version of barebox compressed by the pbl.Signed-off-by Jean-Christophe PLAGNIOL-VILLARD <[email protected]>--- arch/arm/mach-at91/Kconfig | 1 + arch/arm/mach-at91/Makefile | 1 + arch/arm/mach-at91/bootstrap.c | 86 +++++++++++++++++++++++++++ arch/arm/mach-at91/include/mach/bootstrap.h | 28 +++++++++ 4 files changed, 116 insertions(+) create mode 100644 arch/arm/mach-at91/bootstrap.c create mode 100644 arch/arm/mach-at91/include/mach/bootstrap.harch/arm/mach-at91/Kconfig +1
-0@@ -92,6 +92,7 @@ config SOC_AT91SAM9263 select HAVE_AT91_DBGU1 select HAS_MACB select AT91SAM9_RESET + select HAVE_NOSHELL config SOC_AT91SAM9G45 boolarch/arm/mach-at91/Makefile +1
-0@@ -1,6 +1,7 @@ obj-y += setup.o clock.o gpio.o obj-$(CONFIG_CMD_AT91_BOOT_TEST) += boot_test_cmd.o +obj-$(CONFIG_SHELL_NONE) += bootstrap.o lowlevel_init-y = at91sam926x_lowlevel_init.o lowlevel_init-$(CONFIG_ARCH_AT91RM9200) = at91rm9200_lowlevel_init.o obj-$(CONFIG_MACH_DO_LOWLEVEL_INIT) += $(lowlevel_init-y)arch/arm/mach-at91/bootstrap.c new file +36
-0@@ -0,0 +1,86 @@ +/* +* Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <[email protected]> +* +* Under GPLv2 +*/ + +#include <common.h> +#include <bootstrap.h> +#include <mach/bootstrap.h> +#include <sizes.h> +#include <malloc.h> + +#if defined(CONFIG_MCI_ATMEL ) +#define is_mmc () 1 +#else +#define is_mmc () 0 +#endif + +#ifdef CONFIG_NAND_ATMEL +#define is_nand () 1 +#else +#define is_nand () 0 +#endif + +#ifdef CONFIG_MTD_M25P80 +#define is_m25p80 () 1 +#else +#define is_m25p80 () 0 +#endif + +#ifdef CONFIG_MTD_DATAFLASH +#define is_dataflash () 1 +#else +#define is_dataflash () 0 +#endif +
arch/arm/mach-at91/bootstrap.c line 46
Quoted 10 lines
arch/arm/mach-at91/bootstrap.c new file +10
-0+static void boot_seq (bool is_barebox) +{ +char *name = is_barebox ?"barebox" :"unknown" ; +int (*func)(void ) =NULL ; + +if (is_m25p80 ()) { + func =bootstrap_board_read_m25p80 (); +printf ("Boot %s from m25p80\n" , name); +bootstrap_boot (func, is_barebox); +bootstrap_err ("... failled\n" );
s/failled/failed/
arch/arm/mach-at91/bootstrap.c line 53
Quoted 7 lines
arch/arm/mach-at91/bootstrap.c new file +7
-0+free (func); + } +if (is_dataflash ()) { +printf ("Boot %s from dataflash\n" , name); + func =bootstrap_board_read_dataflash (); +bootstrap_boot (func, is_barebox); +bootstrap_err ("... failled\n" );
ditto
arch/arm/mach-at91/bootstrap.c line 60
Quoted 7 lines
arch/arm/mach-at91/bootstrap.c new file +7
-0+free (func); + } +if (is_nand ()) { +printf ("Boot %s from nand\n" , name); + func =bootstrap_read_devfs ("nand0" , true,SZ_128K ,SZ_256K ,SZ_1M ); +bootstrap_boot (func, is_barebox); +bootstrap_err ("... failled\n" );
ditto
arch/arm/mach-at91/bootstrap.c line 73
Quoted 13 lines
arch/arm/mach-at91/bootstrap.c new file +13
-0+free (func); + } +} + +int run_shell (void ) +{ +int (*func)(void ) =NULL ; + +if (is_mmc ()) { +printf ("Boot from mmc\n" ); + func =bootstrap_read_disk ("disk0.0" ); +bootstrap_boot (func, false); +bootstrap_err ("... failled\n" );
ditto
Sascha
Signature · 9 lines
Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
PATCH v3 7/7 at91: usb_a9263: add bootstrap version
In reply to Jean-Christophe PLAGNIOL-VILLARD--- arch/arm/boards/usb-a926x/Makefile | 3 +++ arch/arm/boards/usb-a926x/usb_a9263_bootstrap.c | 16 ++++++++++++ .../configs/usb_a9263_128mib_bootstrap_defconfig | 26 ++++++++++++++++++++ arch/arm/configs/usb_a9263_bootstrap_defconfig | 25 +++++++++++++++++++ 4 files changed, 70 insertions(+) create mode 100644 arch/arm/boards/usb-a926x/usb_a9263_bootstrap.c create mode 100644 arch/arm/configs/usb_a9263_128mib_bootstrap_defconfig create mode 100644 arch/arm/configs/usb_a9263_bootstrap_defconfig
arch/arm/boards/usb-a926x/Makefile +3 -0
@@ -1,5 +1,8 @@ obj-y += init.o +bootstrap-$(CONFIG_MACH_USB_A9263) = usb_a9263_bootstrap.o +obj-$(CONFIG_BOOTSTRAP) += $(bootstrap-y) + lowlevel_init-$(CONFIG_MACH_USB_A9263) = usb_a9263_lowlevel_init.o obj-$(CONFIG_MACH_DO_LOWLEVEL_INIT) += $(lowlevel_init-y)
arch/arm/boards/usb-a926x/usb_a9263_bootstrap.c new file +16 -0
@@ -0,0 +1,16 @@ +/* +* Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <[email protected]> +* +* Under GPLv2 +*/ + +#include <common.h> +#include <bootstrap.h> +#include <mach/bootstrap.h> + +#ifdef CONFIG_MTD_DATAFLASH +void *bootstrap_board_read_dataflash (void ) +{ +return bootstrap_read_devfs ("dataflash0" , false,0xffc0 ,204864 ,204864 ); +} +#endif
arch/arm/configs/usb_a9263_128mib_bootstrap_defconfig new file +26 -0
@@ -0,0 +1,26 @@ +CONFIG_ARCH_AT91SAM9263=y +CONFIG_MACH_USB_A9263=y +CONFIG_AT91_HAVE_SRAM_128M=y +CONFIG_BAREBOX_MAX_IMAGE_SIZE=0x12000 +CONFIG_AEABI=y +# CONFIG_CMD_ARM_CPUINFO is not set +CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y +CONFIG_ENVIRONMENT_VARIABLES=y +CONFIG_PBL_IMAGE=y +CONFIG_MMU=y +CONFIG_MALLOC_DUMMY=y +CONFIG_PROMPT="USB-9263:" +CONFIG_SHELL_NONE=y +# CONFIG_DEFAULT_ENVIRONMENT is not set +# CONFIG_SPI is not set +CONFIG_MTD=y +# CONFIG_MTD_WRITE is not set +# CONFIG_MTD_OOB_DEVICE is not set +CONFIG_NAND=y +# CONFIG_NAND_ECC_HW is not set +# CONFIG_NAND_ECC_HW_SYNDROME is not set +# CONFIG_NAND_ECC_HW_NONE is not set +CONFIG_NAND_ATMEL=y +# CONFIG_FS_RAMFS is not set +CONFIG_BOOTSTRAP=y +CONFIG_BOOTSTRAP_DEVFS=y
arch/arm/configs/usb_a9263_bootstrap_defconfig new file +25 -0
@@ -0,0 +1,25 @@ +CONFIG_ARCH_AT91SAM9263=y +CONFIG_MACH_USB_A9263=y +CONFIG_BAREBOX_MAX_IMAGE_SIZE=0x12000 +CONFIG_AEABI=y +# CONFIG_CMD_ARM_CPUINFO is not set +CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y +CONFIG_ENVIRONMENT_VARIABLES=y +CONFIG_PBL_IMAGE=y +CONFIG_MMU=y +CONFIG_MALLOC_DUMMY=y +CONFIG_PROMPT="USB-9263:" +CONFIG_SHELL_NONE=y +# CONFIG_DEFAULT_ENVIRONMENT is not set +# CONFIG_SPI is not set +CONFIG_MTD=y +# CONFIG_MTD_WRITE is not set +# CONFIG_MTD_OOB_DEVICE is not set +CONFIG_NAND=y +# CONFIG_NAND_ECC_HW is not set +# CONFIG_NAND_ECC_HW_SYNDROME is not set +# CONFIG_NAND_ECC_HW_NONE is not set +CONFIG_NAND_ATMEL=y +# CONFIG_FS_RAMFS is not set +CONFIG_BOOTSTRAP=y +CONFIG_BOOTSTRAP_DEVFS=y
Signature · 7 lines
1.7.10.4 _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
Re: [PATCH 7/7] at91: usb_a9263: add bootstrap version
Quoted 99 lines · Jean-Christophe PLAGNIOL-VILLARD
Signed-off-by Jean-Christophe PLAGNIOL-VILLARD <[email protected]>--- arch/arm/boards/usb-a926x/Makefile | 3 +++ arch/arm/boards/usb-a926x/usb_a9263_bootstrap.c | 16 ++++++++++++ .../configs/usb_a9263_128mib_bootstrap_defconfig | 26 ++++++++++++++++++++ arch/arm/configs/usb_a9263_bootstrap_defconfig | 25 +++++++++++++++++++ 4 files changed, 70 insertions(+) create mode 100644 arch/arm/boards/usb-a926x/usb_a9263_bootstrap.c create mode 100644 arch/arm/configs/usb_a9263_128mib_bootstrap_defconfig create mode 100644 arch/arm/configs/usb_a9263_bootstrap_defconfigarch/arm/boards/usb-a926x/Makefile +3
-0@@ -1,5 +1,8 @@ obj-y += init.o +bootstrap-$(CONFIG_MACH_USB_A9263) = usb_a9263_bootstrap.o +obj-$(CONFIG_BOOTSTRAP) += $(bootstrap-y) + lowlevel_init-$(CONFIG_MACH_USB_A9263) = usb_a9263_lowlevel_init.o obj-$(CONFIG_MACH_DO_LOWLEVEL_INIT) += $(lowlevel_init-y)arch/arm/boards/usb-a926x/usb_a9263_bootstrap.c new file +16
-0@@ -0,0 +1,16 @@ +/* +* Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <[email protected]> +* +* Under GPLv2 +*/ + +#include <common.h> +#include <bootstrap.h> +#include <mach/bootstrap.h> + +#ifdef CONFIG_MTD_DATAFLASH +void *bootstrap_board_read_dataflash (void ) +{ +return bootstrap_read_devfs ("dataflash0" , false,0xffc0 ,204864 ,204864 ); +} +#endif arch/arm/configs/usb_a9263_128mib_bootstrap_defconfig new file +26
-0@@ -0,0 +1,26 @@ +CONFIG_ARCH_AT91SAM9263=y +CONFIG_MACH_USB_A9263=y +CONFIG_AT91_HAVE_SRAM_128M=y +CONFIG_BAREBOX_MAX_IMAGE_SIZE=0x12000 +CONFIG_AEABI=y +# CONFIG_CMD_ARM_CPUINFO is not set +CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y +CONFIG_ENVIRONMENT_VARIABLES=y +CONFIG_PBL_IMAGE=y +CONFIG_MMU=y +CONFIG_MALLOC_DUMMY=y +CONFIG_PROMPT="USB-9263:" +CONFIG_SHELL_NONE=y +# CONFIG_DEFAULT_ENVIRONMENT is not set +# CONFIG_SPI is not set +CONFIG_MTD=y +# CONFIG_MTD_WRITE is not set +# CONFIG_MTD_OOB_DEVICE is not set +CONFIG_NAND=y +# CONFIG_NAND_ECC_HW is not set +# CONFIG_NAND_ECC_HW_SYNDROME is not set +# CONFIG_NAND_ECC_HW_NONE is not set +CONFIG_NAND_ATMEL=y +# CONFIG_FS_RAMFS is not set +CONFIG_BOOTSTRAP=y +CONFIG_BOOTSTRAP_DEVFS=yarch/arm/configs/usb_a9263_bootstrap_defconfig new file +15
-0@@ -0,0 +1,25 @@ +CONFIG_ARCH_AT91SAM9263=y +CONFIG_MACH_USB_A9263=y +CONFIG_BAREBOX_MAX_IMAGE_SIZE=0x12000 +CONFIG_AEABI=y +# CONFIG_CMD_ARM_CPUINFO is not set +CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y +CONFIG_ENVIRONMENT_VARIABLES=y +CONFIG_PBL_IMAGE=y +CONFIG_MMU=y +CONFIG_MALLOC_DUMMY=y +CONFIG_PROMPT="USB-9263:" +CONFIG_SHELL_NONE=y +# CONFIG_DEFAULT_ENVIRONMENT is not set +# CONFIG_SPI is not set +CONFIG_MTD=y
arch/arm/configs/usb_a9263_bootstrap_defconfig line 25
Quoted 10 lines
arch/arm/configs/usb_a9263_bootstrap_defconfig new file +10
-0+# CONFIG_MTD_WRITE is not set +# CONFIG_MTD_OOB_DEVICE is not set +CONFIG_NAND=y +# CONFIG_NAND_ECC_HW is not set +# CONFIG_NAND_ECC_HW_SYNDROME is not set +# CONFIG_NAND_ECC_HW_NONE is not set +CONFIG_NAND_ATMEL=y +# CONFIG_FS_RAMFS is not set +CONFIG_BOOTSTRAP=y +CONFIG_BOOTSTRAP_DEVFS=y
These configs still fail with
arch/arm/mach-at91/built-in.o: In function `boot_seq':
at91sam9263_devices.c:(.text.boot_seq+0x28): undefined reference to `bootstrap_boot'
When CONFIG_BOOTSTRAP is disabled in make menuconfig. Should it be selected?
Sascha
Signature · 9 lines
Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
Re: [PATCH 7/7] at91: usb_a9263: add bootstrap version
Quoted 113 lines · Sascha Hauer
Quoted 99 lines · Jean-Christophe PLAGNIOL-VILLARD
Signed-off-by Jean-Christophe PLAGNIOL-VILLARD <[email protected]>--- arch/arm/boards/usb-a926x/Makefile | 3 +++ arch/arm/boards/usb-a926x/usb_a9263_bootstrap.c | 16 ++++++++++++ .../configs/usb_a9263_128mib_bootstrap_defconfig | 26 ++++++++++++++++++++ arch/arm/configs/usb_a9263_bootstrap_defconfig | 25 +++++++++++++++++++ 4 files changed, 70 insertions(+) create mode 100644 arch/arm/boards/usb-a926x/usb_a9263_bootstrap.c create mode 100644 arch/arm/configs/usb_a9263_128mib_bootstrap_defconfig create mode 100644 arch/arm/configs/usb_a9263_bootstrap_defconfigarch/arm/boards/usb-a926x/Makefile +3
-0@@ -1,5 +1,8 @@ obj-y += init.o +bootstrap-$(CONFIG_MACH_USB_A9263) = usb_a9263_bootstrap.o +obj-$(CONFIG_BOOTSTRAP) += $(bootstrap-y) + lowlevel_init-$(CONFIG_MACH_USB_A9263) = usb_a9263_lowlevel_init.o obj-$(CONFIG_MACH_DO_LOWLEVEL_INIT) += $(lowlevel_init-y)arch/arm/boards/usb-a926x/usb_a9263_bootstrap.c new file +16
-0@@ -0,0 +1,16 @@ +/* +* Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <[email protected]> +* +* Under GPLv2 +*/ + +#include <common.h> +#include <bootstrap.h> +#include <mach/bootstrap.h> + +#ifdef CONFIG_MTD_DATAFLASH +void *bootstrap_board_read_dataflash (void ) +{ +return bootstrap_read_devfs ("dataflash0" , false,0xffc0 ,204864 ,204864 ); +} +#endif arch/arm/configs/usb_a9263_128mib_bootstrap_defconfig new file +26
-0@@ -0,0 +1,26 @@ +CONFIG_ARCH_AT91SAM9263=y +CONFIG_MACH_USB_A9263=y +CONFIG_AT91_HAVE_SRAM_128M=y +CONFIG_BAREBOX_MAX_IMAGE_SIZE=0x12000 +CONFIG_AEABI=y +# CONFIG_CMD_ARM_CPUINFO is not set +CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y +CONFIG_ENVIRONMENT_VARIABLES=y +CONFIG_PBL_IMAGE=y +CONFIG_MMU=y +CONFIG_MALLOC_DUMMY=y +CONFIG_PROMPT="USB-9263:" +CONFIG_SHELL_NONE=y +# CONFIG_DEFAULT_ENVIRONMENT is not set +# CONFIG_SPI is not set +CONFIG_MTD=y +# CONFIG_MTD_WRITE is not set +# CONFIG_MTD_OOB_DEVICE is not set +CONFIG_NAND=y +# CONFIG_NAND_ECC_HW is not set +# CONFIG_NAND_ECC_HW_SYNDROME is not set +# CONFIG_NAND_ECC_HW_NONE is not set +CONFIG_NAND_ATMEL=y +# CONFIG_FS_RAMFS is not set +CONFIG_BOOTSTRAP=y +CONFIG_BOOTSTRAP_DEVFS=yarch/arm/configs/usb_a9263_bootstrap_defconfig new file +15
-0@@ -0,0 +1,25 @@ +CONFIG_ARCH_AT91SAM9263=y +CONFIG_MACH_USB_A9263=y +CONFIG_BAREBOX_MAX_IMAGE_SIZE=0x12000 +CONFIG_AEABI=y +# CONFIG_CMD_ARM_CPUINFO is not set +CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y +CONFIG_ENVIRONMENT_VARIABLES=y +CONFIG_PBL_IMAGE=y +CONFIG_MMU=y +CONFIG_MALLOC_DUMMY=y +CONFIG_PROMPT="USB-9263:" +CONFIG_SHELL_NONE=y +# CONFIG_DEFAULT_ENVIRONMENT is not set +# CONFIG_SPI is not set +CONFIG_MTD=yarch/arm/configs/usb_a9263_bootstrap_defconfig line 25
Quoted 10 lines
arch/arm/configs/usb_a9263_bootstrap_defconfig new file +10
-0+# CONFIG_MTD_WRITE is not set +# CONFIG_MTD_OOB_DEVICE is not set +CONFIG_NAND=y +# CONFIG_NAND_ECC_HW is not set +# CONFIG_NAND_ECC_HW_SYNDROME is not set +# CONFIG_NAND_ECC_HW_NONE is not set +CONFIG_NAND_ATMEL=y +# CONFIG_FS_RAMFS is not set +CONFIG_BOOTSTRAP=y +CONFIG_BOOTSTRAP_DEVFS=yThese configs still fail with
Quoted 5 lines
arch/arm/mach-at91/built-in.o: In function `boot_seq':
at91sam9263_devices.c:(.text.boot_seq+0x28): undefined reference to `bootstrap_boot'When
CONFIG_BOOTSTRAPis disabled in make menuconfig. Should it be selected?
yes BOOTSTRAP is mandatory
for this config
Best Regards,
J.
_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox
Re: [PATCH 7/7] at91: usb_a9263: add bootstrap version
Quoted 114 lines · Jean-Christophe PLAGNIOL-VILLARD
Quoted 113 lines · Sascha Hauer
Quoted 99 lines · Jean-Christophe PLAGNIOL-VILLARD
Signed-off-by Jean-Christophe PLAGNIOL-VILLARD <[email protected]>--- arch/arm/boards/usb-a926x/Makefile | 3 +++ arch/arm/boards/usb-a926x/usb_a9263_bootstrap.c | 16 ++++++++++++ .../configs/usb_a9263_128mib_bootstrap_defconfig | 26 ++++++++++++++++++++ arch/arm/configs/usb_a9263_bootstrap_defconfig | 25 +++++++++++++++++++ 4 files changed, 70 insertions(+) create mode 100644 arch/arm/boards/usb-a926x/usb_a9263_bootstrap.c create mode 100644 arch/arm/configs/usb_a9263_128mib_bootstrap_defconfig create mode 100644 arch/arm/configs/usb_a9263_bootstrap_defconfigarch/arm/boards/usb-a926x/Makefile +3
-0@@ -1,5 +1,8 @@ obj-y += init.o +bootstrap-$(CONFIG_MACH_USB_A9263) = usb_a9263_bootstrap.o +obj-$(CONFIG_BOOTSTRAP) += $(bootstrap-y) + lowlevel_init-$(CONFIG_MACH_USB_A9263) = usb_a9263_lowlevel_init.o obj-$(CONFIG_MACH_DO_LOWLEVEL_INIT) += $(lowlevel_init-y)arch/arm/boards/usb-a926x/usb_a9263_bootstrap.c new file +16
-0@@ -0,0 +1,16 @@ +/* +* Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <[email protected]> +* +* Under GPLv2 +*/ + +#include <common.h> +#include <bootstrap.h> +#include <mach/bootstrap.h> + +#ifdef CONFIG_MTD_DATAFLASH +void *bootstrap_board_read_dataflash (void ) +{ +return bootstrap_read_devfs ("dataflash0" , false,0xffc0 ,204864 ,204864 ); +} +#endif arch/arm/configs/usb_a9263_128mib_bootstrap_defconfig new file +26
-0@@ -0,0 +1,26 @@ +CONFIG_ARCH_AT91SAM9263=y +CONFIG_MACH_USB_A9263=y +CONFIG_AT91_HAVE_SRAM_128M=y +CONFIG_BAREBOX_MAX_IMAGE_SIZE=0x12000 +CONFIG_AEABI=y +# CONFIG_CMD_ARM_CPUINFO is not set +CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y +CONFIG_ENVIRONMENT_VARIABLES=y +CONFIG_PBL_IMAGE=y +CONFIG_MMU=y +CONFIG_MALLOC_DUMMY=y +CONFIG_PROMPT="USB-9263:" +CONFIG_SHELL_NONE=y +# CONFIG_DEFAULT_ENVIRONMENT is not set +# CONFIG_SPI is not set +CONFIG_MTD=y +# CONFIG_MTD_WRITE is not set +# CONFIG_MTD_OOB_DEVICE is not set +CONFIG_NAND=y +# CONFIG_NAND_ECC_HW is not set +# CONFIG_NAND_ECC_HW_SYNDROME is not set +# CONFIG_NAND_ECC_HW_NONE is not set +CONFIG_NAND_ATMEL=y +# CONFIG_FS_RAMFS is not set +CONFIG_BOOTSTRAP=y +CONFIG_BOOTSTRAP_DEVFS=yarch/arm/configs/usb_a9263_bootstrap_defconfig new file +15
-0@@ -0,0 +1,25 @@ +CONFIG_ARCH_AT91SAM9263=y +CONFIG_MACH_USB_A9263=y +CONFIG_BAREBOX_MAX_IMAGE_SIZE=0x12000 +CONFIG_AEABI=y +# CONFIG_CMD_ARM_CPUINFO is not set +CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y +CONFIG_ENVIRONMENT_VARIABLES=y +CONFIG_PBL_IMAGE=y +CONFIG_MMU=y +CONFIG_MALLOC_DUMMY=y +CONFIG_PROMPT="USB-9263:" +CONFIG_SHELL_NONE=y +# CONFIG_DEFAULT_ENVIRONMENT is not set +# CONFIG_SPI is not set +CONFIG_MTD=yarch/arm/configs/usb_a9263_bootstrap_defconfig line 25
Quoted 10 lines
arch/arm/configs/usb_a9263_bootstrap_defconfig new file +10
-0+# CONFIG_MTD_WRITE is not set +# CONFIG_MTD_OOB_DEVICE is not set +CONFIG_NAND=y +# CONFIG_NAND_ECC_HW is not set +# CONFIG_NAND_ECC_HW_SYNDROME is not set +# CONFIG_NAND_ECC_HW_NONE is not set +CONFIG_NAND_ATMEL=y +# CONFIG_FS_RAMFS is not set +CONFIG_BOOTSTRAP=y +CONFIG_BOOTSTRAP_DEVFS=yThese configs still fail with
Quoted 6 lines
Quoted 5 lines
arch/arm/mach-at91/built-in.o: In function `boot_seq':
at91sam9263_devices.c:(.text.boot_seq+0x28): undefined reference to `bootstrap_boot'When
CONFIG_BOOTSTRAPis disabled in make menuconfig. Should it be selected?yes BOOTSTRAP is mandatory
By selected I meant something like:
config AT91_BOOTSTRAP
bool "Build bootstrap barebox" depends on SOC_AT91SAM9263 select HAVE_NOSHELL select BOOTSTRAP select SHELL_NONE
(I haven't tested this)
It should be possible to disable BOOTSTRAP when it's actually required to successfully build the binary.
Sascha
Signature · 9 lines
Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
Re: [PATCH 7/7] at91: usb_a9263: add bootstrap version
Quoted 131 lines · Sascha Hauer
Quoted 114 lines · Jean-Christophe PLAGNIOL-VILLARD
Quoted 113 lines · Sascha Hauer
Quoted 99 lines · Jean-Christophe PLAGNIOL-VILLARD
Signed-off-by Jean-Christophe PLAGNIOL-VILLARD <[email protected]>--- arch/arm/boards/usb-a926x/Makefile | 3 +++ arch/arm/boards/usb-a926x/usb_a9263_bootstrap.c | 16 ++++++++++++ .../configs/usb_a9263_128mib_bootstrap_defconfig | 26 ++++++++++++++++++++ arch/arm/configs/usb_a9263_bootstrap_defconfig | 25 +++++++++++++++++++ 4 files changed, 70 insertions(+) create mode 100644 arch/arm/boards/usb-a926x/usb_a9263_bootstrap.c create mode 100644 arch/arm/configs/usb_a9263_128mib_bootstrap_defconfig create mode 100644 arch/arm/configs/usb_a9263_bootstrap_defconfigarch/arm/boards/usb-a926x/Makefile +3
-0@@ -1,5 +1,8 @@ obj-y += init.o +bootstrap-$(CONFIG_MACH_USB_A9263) = usb_a9263_bootstrap.o +obj-$(CONFIG_BOOTSTRAP) += $(bootstrap-y) + lowlevel_init-$(CONFIG_MACH_USB_A9263) = usb_a9263_lowlevel_init.o obj-$(CONFIG_MACH_DO_LOWLEVEL_INIT) += $(lowlevel_init-y)arch/arm/boards/usb-a926x/usb_a9263_bootstrap.c new file +16
-0@@ -0,0 +1,16 @@ +/* +* Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <[email protected]> +* +* Under GPLv2 +*/ + +#include <common.h> +#include <bootstrap.h> +#include <mach/bootstrap.h> + +#ifdef CONFIG_MTD_DATAFLASH +void *bootstrap_board_read_dataflash (void ) +{ +return bootstrap_read_devfs ("dataflash0" , false,0xffc0 ,204864 ,204864 ); +} +#endif arch/arm/configs/usb_a9263_128mib_bootstrap_defconfig new file +26
-0@@ -0,0 +1,26 @@ +CONFIG_ARCH_AT91SAM9263=y +CONFIG_MACH_USB_A9263=y +CONFIG_AT91_HAVE_SRAM_128M=y +CONFIG_BAREBOX_MAX_IMAGE_SIZE=0x12000 +CONFIG_AEABI=y +# CONFIG_CMD_ARM_CPUINFO is not set +CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y +CONFIG_ENVIRONMENT_VARIABLES=y +CONFIG_PBL_IMAGE=y +CONFIG_MMU=y +CONFIG_MALLOC_DUMMY=y +CONFIG_PROMPT="USB-9263:" +CONFIG_SHELL_NONE=y +# CONFIG_DEFAULT_ENVIRONMENT is not set +# CONFIG_SPI is not set +CONFIG_MTD=y +# CONFIG_MTD_WRITE is not set +# CONFIG_MTD_OOB_DEVICE is not set +CONFIG_NAND=y +# CONFIG_NAND_ECC_HW is not set +# CONFIG_NAND_ECC_HW_SYNDROME is not set +# CONFIG_NAND_ECC_HW_NONE is not set +CONFIG_NAND_ATMEL=y +# CONFIG_FS_RAMFS is not set +CONFIG_BOOTSTRAP=y +CONFIG_BOOTSTRAP_DEVFS=yarch/arm/configs/usb_a9263_bootstrap_defconfig new file +15
-0@@ -0,0 +1,25 @@ +CONFIG_ARCH_AT91SAM9263=y +CONFIG_MACH_USB_A9263=y +CONFIG_BAREBOX_MAX_IMAGE_SIZE=0x12000 +CONFIG_AEABI=y +# CONFIG_CMD_ARM_CPUINFO is not set +CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y +CONFIG_ENVIRONMENT_VARIABLES=y +CONFIG_PBL_IMAGE=y +CONFIG_MMU=y +CONFIG_MALLOC_DUMMY=y +CONFIG_PROMPT="USB-9263:" +CONFIG_SHELL_NONE=y +# CONFIG_DEFAULT_ENVIRONMENT is not set +# CONFIG_SPI is not set +CONFIG_MTD=yarch/arm/configs/usb_a9263_bootstrap_defconfig line 25
Quoted 10 lines
arch/arm/configs/usb_a9263_bootstrap_defconfig new file +10
-0+# CONFIG_MTD_WRITE is not set +# CONFIG_MTD_OOB_DEVICE is not set +CONFIG_NAND=y +# CONFIG_NAND_ECC_HW is not set +# CONFIG_NAND_ECC_HW_SYNDROME is not set +# CONFIG_NAND_ECC_HW_NONE is not set +CONFIG_NAND_ATMEL=y +# CONFIG_FS_RAMFS is not set +CONFIG_BOOTSTRAP=y +CONFIG_BOOTSTRAP_DEVFS=yThese configs still fail with
Quoted 6 lines
Quoted 5 lines
arch/arm/mach-at91/built-in.o: In function `boot_seq':
at91sam9263_devices.c:(.text.boot_seq+0x28): undefined reference to `bootstrap_boot'When
CONFIG_BOOTSTRAPis disabled in make menuconfig. Should it be selected?yes BOOTSTRAP is mandatory
By selected I meant something like:
config
AT91_BOOTSTRAPbool "Build bootstrap barebox" depends on SOC_AT91SAM9263 select HAVE_NOSHELL select BOOTSTRAP select SHELL_NONE
Quoted 4 lines
(I haven't tested this)
It should be possible to disable BOOTSTRAP when it's actually required to successfully build the binary.
yeah
but we can build a non-shell binary without it too
Best Regards,
J.
Quoted 10 lines
Sascha
Signature · 4 lines
Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox
Re: [PATCH 1/7] at91: add test commamd to emulate bootrom boot
In reply to Jean-Christophe PLAGNIOL-VILLARDQuoted 13 lines · Jean-Christophe PLAGNIOL-VILLARD
Signed-off-by Jean-Christophe PLAGNIOL-VILLARD <[email protected]>--- arch/arm/mach-at91/Kconfig | 6 +++ arch/arm/mach-at91/Makefile | 1 + arch/arm/mach-at91/boot_test_cmd.c | 99 ++++++++++++++++++++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 arch/arm/mach-at91/boot_test_cmd.carch/arm/mach-at91/Kconfig +0
-0
arch/arm/mach-at91/Kconfig config CMD_AT91MUX · line 490
Quoted 8 lines
arch/arm/mach-at91/Kconfig +5
-0@@ -483,4 +483,10 @@ config CMD_AT91MUX bool "at91mux dump command" default y +config CONFIG_CMD_AT91_BOOT_TEST + bool "at91_boot_test" + help + allow to upload a boot binary to sram and execute it + usefull to test bootstrap or barebox lowlevel init
s/usefull/useful/
Quoted 40 lines
arch/arm/mach-at91/Kconfig +1
-0+ endifarch/arm/mach-at91/Makefile +1
-0@@ -1,4 +1,5 @@ obj-y += setup.o clock.o gpio.o +obj-$(CONFIG_CMD_AT91_BOOT_TEST) += boot_test_cmd.o lowlevel_init-y = at91sam926x_lowlevel_init.o lowlevel_init-$(CONFIG_ARCH_AT91RM9200) = at91rm9200_lowlevel_init.oarch/arm/mach-at91/boot_test_cmd.c new file +22
-0@@ -0,0 +1,99 @@ +/* +* Copyright (c) 2012 Jean-Christophe PLAGNIOL-VILLARD <[email protected]> +* +* Under GPLv2 only +*/ + +#include <common.h> +#include <command.h> +#include <libbb.h> +#include <getopt.h> +#include <fs.h> +#include <fcntl.h> +#include <malloc.h> +#include <errno.h> + +static int do_at91_boot_test (int argc,char *argv[]) +{ +int opt; +u32 *buf32; +void *buf; +u32 jump =0 ; +int fd;
arch/arm/mach-at91/boot_test_cmd.c line 32
Quoted 10 lines
arch/arm/mach-at91/boot_test_cmd.c new file +10
-0+int ret =1 ; +char *sram ="/dev/sram0" ; +u32 read_size, write_size; +u32 tmp =0 ; + +while ((opt =getopt (argc, argv,"j:s:" )) >0 ) { +switch (opt) { +case 'j' : + jump =simple_strtoul (optarg,NULL ,0 ); +break ;
Without the 'j' option given the code will jump to 0x0. Is this intended?
Quoted 39 lines
arch/arm/mach-at91/boot_test_cmd.c new file +39
-0+case 's' : + sram = optarg; +break ; +default : +return COMMAND_ERROR_USAGE ; + } + } + +if (argc < optind +1 ) +return COMMAND_ERROR_USAGE ; + + buf32 = buf =read_file (argv[optind], &read_size); +if (!buf) +return -EINVAL ; + + write_size = buf32[5 ]; + +printf ("size of the size %d\n" , read_size); +printf ("size to load in sram %d\n" , write_size); + +if (write_size > read_size) { +printf ("file smaller than requested sram loading size (%d < %d)\n" , write_size, read_size); + goto err; + } + + fd =open (sram,O_WRONLY ); +if (fd <0 ) { +printf ("could not open %s: %s\n" , sram,errno_str ()); + ret = fd; + goto err; + } + +while (write_size) { + tmp =write (fd, buf, write_size); +if (tmp <0 ) { +perror ("write" ); + goto err_open; + } + buf += tmp;
arch/arm/mach-at91/boot_test_cmd.c line 81
Quoted 10 lines
arch/arm/mach-at91/boot_test_cmd.c new file +10
-0+ write_size -= tmp; + } + +shutdown_barebox (); + + __asm__ __volatile__( +"mov pc, %0\n" + : + :"r" (jump) + :);
Is this inline assemble needed? Why not
void (*jump)(void); jump();
Quoted 27 lines
arch/arm/mach-at91/boot_test_cmd.c new file +18
-0+ +err_open: +close (fd); +err: +free (buf); +return ret; +} + +BAREBOX_CMD_HELP_START(at91_boot_test) +BAREBOX_CMD_HELP_USAGE("at91_boot_test [-j <jump addr>] [-s <sram>] file\n") +BAREBOX_CMD_HELP_SHORT("upload the binary to sram and jump as will do the romcode\n") +BAREBOX_CMD_HELP_END + +BAREBOX_CMD_START (at91_boot_test) + .cmd = do_at91_boot_test, + .usage = "upload the binary to sram and jump as will do the romcode", + BAREBOX_CMD_HELP(cmd_at91_boot_test_help) +BAREBOX_CMD_END Signature · 7 lines
1.7.10.4 _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
Signature · 9 lines
Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
Re: [PATCH 1/7] at91: add test commamd to emulate bootrom boot
Quoted 70 lines · Sascha Hauer
Quoted 13 lines · Jean-Christophe PLAGNIOL-VILLARD
Signed-off-by Jean-Christophe PLAGNIOL-VILLARD <[email protected]>--- arch/arm/mach-at91/Kconfig | 6 +++ arch/arm/mach-at91/Makefile | 1 + arch/arm/mach-at91/boot_test_cmd.c | 99 ++++++++++++++++++++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 arch/arm/mach-at91/boot_test_cmd.carch/arm/mach-at91/Kconfig +0
-0arch/arm/mach-at91/Kconfig config CMD_AT91MUX · line 490
Quoted 8 lines
arch/arm/mach-at91/Kconfig +5
-0@@ -483,4 +483,10 @@ config CMD_AT91MUX bool "at91mux dump command" default y +config CONFIG_CMD_AT91_BOOT_TEST + bool "at91_boot_test" + help + allow to upload a boot binary to sram and execute it + usefull to test bootstrap or barebox lowlevel inits/usefull/useful/
Quoted 45 lines
arch/arm/mach-at91/Kconfig +1
-0+ endifarch/arm/mach-at91/Makefile +1
-0@@ -1,4 +1,5 @@ obj-y += setup.o clock.o gpio.o +obj-$(CONFIG_CMD_AT91_BOOT_TEST) += boot_test_cmd.o lowlevel_init-y = at91sam926x_lowlevel_init.o lowlevel_init-$(CONFIG_ARCH_AT91RM9200) = at91rm9200_lowlevel_init.oarch/arm/mach-at91/boot_test_cmd.c new file +27
-0@@ -0,0 +1,99 @@ +/* +* Copyright (c) 2012 Jean-Christophe PLAGNIOL-VILLARD <[email protected]> +* +* Under GPLv2 only +*/ + +#include <common.h> +#include <command.h> +#include <libbb.h> +#include <getopt.h> +#include <fs.h> +#include <fcntl.h> +#include <malloc.h> +#include <errno.h> + +static int do_at91_boot_test (int argc,char *argv[]) +{ +int opt; +u32 *buf32; +void *buf; +u32 jump =0 ; +int fd; +int ret =1 ; +char *sram ="/dev/sram0" ; +u32 read_size, write_size; +u32 tmp =0 ; +
Quoted 8 lines
arch/arm/mach-at91/boot_test_cmd.c line 32
Quoted 5 lines
arch/arm/mach-at91/boot_test_cmd.c new file +5
-0+while ((opt =getopt (argc, argv,"j:s:" )) >0 ) { +switch (opt) { +case 'j' : + jump =simple_strtoul (optarg,NULL ,0 ); +break ;Without the 'j' option given the code will jump to
0x0. Is this intended?
yes at91 we start at 0x0 for the code that run in sram
Quoted 53 lines
Quoted 40 lines
arch/arm/mach-at91/boot_test_cmd.c new file +39
-0+case 's' : + sram = optarg; +break ; +default : +return COMMAND_ERROR_USAGE ; + } + } + +if (argc < optind +1 ) +return COMMAND_ERROR_USAGE ; + + buf32 = buf =read_file (argv[optind], &read_size); +if (!buf) +return -EINVAL ; + + write_size = buf32[5 ]; + +printf ("size of the size %d\n" , read_size); +printf ("size to load in sram %d\n" , write_size); + +if (write_size > read_size) { +printf ("file smaller than requested sram loading size (%d < %d)\n" , write_size, read_size); + goto err; + } + + fd =open (sram,O_WRONLY ); +if (fd <0 ) { +printf ("could not open %s: %s\n" , sram,errno_str ()); + ret = fd; + goto err; + } + +while (write_size) { + tmp =write (fd, buf, write_size); +if (tmp <0 ) { +perror ("write" ); + goto err_open; + } + buf += tmp;arch/arm/mach-at91/boot_test_cmd.c line 81
Quoted 10 lines
arch/arm/mach-at91/boot_test_cmd.c new file +10
-0+ write_size -= tmp; + } + +shutdown_barebox (); + + __asm__ __volatile__( +"mov pc, %0\n" + : + :"r" (jump) + :);Is this inline assemble needed? Why not
Quoted 3 lines
void (*jump)(void); jump();
jump can be NULL
Best Regards,
J.
_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox
Re: [PATCH 1/7] at91: add test commamd to emulate bootrom boot
Quoted 133 lines · Jean-Christophe PLAGNIOL-VILLARD
Quoted 70 lines · Sascha Hauer
Quoted 13 lines · Jean-Christophe PLAGNIOL-VILLARD
Signed-off-by Jean-Christophe PLAGNIOL-VILLARD <[email protected]>--- arch/arm/mach-at91/Kconfig | 6 +++ arch/arm/mach-at91/Makefile | 1 + arch/arm/mach-at91/boot_test_cmd.c | 99 ++++++++++++++++++++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 arch/arm/mach-at91/boot_test_cmd.carch/arm/mach-at91/Kconfig +0
-0arch/arm/mach-at91/Kconfig config CMD_AT91MUX · line 490
Quoted 8 lines
arch/arm/mach-at91/Kconfig +5
-0@@ -483,4 +483,10 @@ config CMD_AT91MUX bool "at91mux dump command" default y +config CONFIG_CMD_AT91_BOOT_TEST + bool "at91_boot_test" + help + allow to upload a boot binary to sram and execute it + usefull to test bootstrap or barebox lowlevel inits/usefull/useful/
Quoted 45 lines
arch/arm/mach-at91/Kconfig +1
-0+ endifarch/arm/mach-at91/Makefile +1
-0@@ -1,4 +1,5 @@ obj-y += setup.o clock.o gpio.o +obj-$(CONFIG_CMD_AT91_BOOT_TEST) += boot_test_cmd.o lowlevel_init-y = at91sam926x_lowlevel_init.o lowlevel_init-$(CONFIG_ARCH_AT91RM9200) = at91rm9200_lowlevel_init.oarch/arm/mach-at91/boot_test_cmd.c new file +27
-0@@ -0,0 +1,99 @@ +/* +* Copyright (c) 2012 Jean-Christophe PLAGNIOL-VILLARD <[email protected]> +* +* Under GPLv2 only +*/ + +#include <common.h> +#include <command.h> +#include <libbb.h> +#include <getopt.h> +#include <fs.h> +#include <fcntl.h> +#include <malloc.h> +#include <errno.h> + +static int do_at91_boot_test (int argc,char *argv[]) +{ +int opt; +u32 *buf32; +void *buf; +u32 jump =0 ; +int fd; +int ret =1 ; +char *sram ="/dev/sram0" ; +u32 read_size, write_size; +u32 tmp =0 ; +Quoted 8 lines
arch/arm/mach-at91/boot_test_cmd.c line 32
Quoted 5 lines
arch/arm/mach-at91/boot_test_cmd.c new file +5
-0+while ((opt =getopt (argc, argv,"j:s:" )) >0 ) { +switch (opt) { +case 'j' : + jump =simple_strtoul (optarg,NULL ,0 ); +break ;Without the 'j' option given the code will jump to
0x0. Is this intended?yes at91 we start at
0x0for the code that run in sramQuoted 53 lines
Quoted 40 lines
arch/arm/mach-at91/boot_test_cmd.c new file +39
-0+case 's' : + sram = optarg; +break ; +default : +return COMMAND_ERROR_USAGE ; + } + } + +if (argc < optind +1 ) +return COMMAND_ERROR_USAGE ; + + buf32 = buf =read_file (argv[optind], &read_size); +if (!buf) +return -EINVAL ; + + write_size = buf32[5 ]; + +printf ("size of the size %d\n" , read_size); +printf ("size to load in sram %d\n" , write_size); + +if (write_size > read_size) { +printf ("file smaller than requested sram loading size (%d < %d)\n" , write_size, read_size); + goto err; + } + + fd =open (sram,O_WRONLY ); +if (fd <0 ) { +printf ("could not open %s: %s\n" , sram,errno_str ()); + ret = fd; + goto err; + } + +while (write_size) { + tmp =write (fd, buf, write_size); +if (tmp <0 ) { +perror ("write" ); + goto err_open; + } + buf += tmp;arch/arm/mach-at91/boot_test_cmd.c line 81
Quoted 10 lines
arch/arm/mach-at91/boot_test_cmd.c new file +10
-0+ write_size -= tmp; + } + +shutdown_barebox (); + + __asm__ __volatile__( +"mov pc, %0\n" + : + :"r" (jump) + :);Is this inline assemble needed? Why not
Quoted 4 lines
Quoted 3 lines
void (*jump)(void); jump();jump can be NULL
But that's not a reason for inline assembly.
Sascha
Signature · 9 lines
Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
Re: [PATCH 1/7] at91: add test commamd to emulate bootrom boot
Quoted 134 lines · Sascha Hauer
Quoted 133 lines · Jean-Christophe PLAGNIOL-VILLARD
Quoted 70 lines · Sascha Hauer
Quoted 13 lines · Jean-Christophe PLAGNIOL-VILLARD
Signed-off-by Jean-Christophe PLAGNIOL-VILLARD <[email protected]>--- arch/arm/mach-at91/Kconfig | 6 +++ arch/arm/mach-at91/Makefile | 1 + arch/arm/mach-at91/boot_test_cmd.c | 99 ++++++++++++++++++++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 arch/arm/mach-at91/boot_test_cmd.carch/arm/mach-at91/Kconfig +0
-0arch/arm/mach-at91/Kconfig config CMD_AT91MUX · line 490
Quoted 8 lines
arch/arm/mach-at91/Kconfig +5
-0@@ -483,4 +483,10 @@ config CMD_AT91MUX bool "at91mux dump command" default y +config CONFIG_CMD_AT91_BOOT_TEST + bool "at91_boot_test" + help + allow to upload a boot binary to sram and execute it + usefull to test bootstrap or barebox lowlevel inits/usefull/useful/
Quoted 45 lines
arch/arm/mach-at91/Kconfig +1
-0+ endifarch/arm/mach-at91/Makefile +1
-0@@ -1,4 +1,5 @@ obj-y += setup.o clock.o gpio.o +obj-$(CONFIG_CMD_AT91_BOOT_TEST) += boot_test_cmd.o lowlevel_init-y = at91sam926x_lowlevel_init.o lowlevel_init-$(CONFIG_ARCH_AT91RM9200) = at91rm9200_lowlevel_init.oarch/arm/mach-at91/boot_test_cmd.c new file +27
-0@@ -0,0 +1,99 @@ +/* +* Copyright (c) 2012 Jean-Christophe PLAGNIOL-VILLARD <[email protected]> +* +* Under GPLv2 only +*/ + +#include <common.h> +#include <command.h> +#include <libbb.h> +#include <getopt.h> +#include <fs.h> +#include <fcntl.h> +#include <malloc.h> +#include <errno.h> + +static int do_at91_boot_test (int argc,char *argv[]) +{ +int opt; +u32 *buf32; +void *buf; +u32 jump =0 ; +int fd; +int ret =1 ; +char *sram ="/dev/sram0" ; +u32 read_size, write_size; +u32 tmp =0 ; +Quoted 8 lines
arch/arm/mach-at91/boot_test_cmd.c line 32
Quoted 5 lines
arch/arm/mach-at91/boot_test_cmd.c new file +5
-0+while ((opt =getopt (argc, argv,"j:s:" )) >0 ) { +switch (opt) { +case 'j' : + jump =simple_strtoul (optarg,NULL ,0 ); +break ;Without the 'j' option given the code will jump to
0x0. Is this intended?yes at91 we start at
0x0for the code that run in sramQuoted 53 lines
Quoted 40 lines
arch/arm/mach-at91/boot_test_cmd.c new file +39
-0+case 's' : + sram = optarg; +break ; +default : +return COMMAND_ERROR_USAGE ; + } + } + +if (argc < optind +1 ) +return COMMAND_ERROR_USAGE ; + + buf32 = buf =read_file (argv[optind], &read_size); +if (!buf) +return -EINVAL ; + + write_size = buf32[5 ]; + +printf ("size of the size %d\n" , read_size); +printf ("size to load in sram %d\n" , write_size); + +if (write_size > read_size) { +printf ("file smaller than requested sram loading size (%d < %d)\n" , write_size, read_size); + goto err; + } + + fd =open (sram,O_WRONLY ); +if (fd <0 ) { +printf ("could not open %s: %s\n" , sram,errno_str ()); + ret = fd; + goto err; + } + +while (write_size) { + tmp =write (fd, buf, write_size); +if (tmp <0 ) { +perror ("write" ); + goto err_open; + } + buf += tmp;arch/arm/mach-at91/boot_test_cmd.c line 81
Quoted 10 lines
arch/arm/mach-at91/boot_test_cmd.c new file +10
-0+ write_size -= tmp; + } + +shutdown_barebox (); + + __asm__ __volatile__( +"mov pc, %0\n" + : + :"r" (jump) + :);Is this inline assemble needed? Why not
Quoted 6 lines
Quoted 4 lines
Quoted 3 lines
void (*jump)(void); jump();jump can be NULL
But that's not a reason for inline assembly.
except if use call we get a NULL exception
Best Regards,
J.
Quoted 8 lines
Sascha
Signature · 4 lines
Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox
Re: [PATCH 1/7] at91: add test commamd to emulate bootrom boot
Quoted 10 lines · Jean-Christophe PLAGNIOL-VILLARD
Quoted 10 lines
Quoted 10 lines
Quoted 10 lines
arch/arm/mach-at91/boot_test_cmd.c line 81
Quoted 7 lines
arch/arm/mach-at91/boot_test_cmd.c new file +7
-0+shutdown_barebox (); + + __asm__ __volatile__( +"mov pc, %0\n" + : + :"r" (jump) + :);Is this inline assemble needed? Why not
Quoted 7 lines
Quoted 6 lines
Quoted 4 lines
Quoted 3 lines
void (*jump)(void); jump();jump can be NULL
But that's not a reason for inline assembly.
except if use call we get a NULL exception
You won't get a NULL pointer exception when the MMU is disabled (which is the case after shutdown_basebox()), no matter which method you choose to jump to 0x0.
Sascha
Signature · 9 lines
Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox