* [PATCH 1/5] ARM: stm32mp: fix some misnomers/typos @ 2019-07-12 10:24 Ahmad Fatoum 2019-07-12 10:24 ` [PATCH 2/5] images: add support for generating STM32MP images Ahmad Fatoum ` (4 more replies) 0 siblings, 5 replies; 8+ messages in thread From: Ahmad Fatoum @ 2019-07-12 10:24 UTC (permalink / raw) To: barebox; +Cc: mfe The arch was renamed to stm32mp, so it doesn't look out of place when the stm32mp2 is released. Fix spotted comments/labels with the old name. While at it, fix a typo about the SoC name on the DK2 board. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> --- arch/arm/Kconfig | 2 +- arch/arm/mach-stm32mp/Kconfig | 4 ++-- images/Makefile.stm32mp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 1d4b6e09ce79..915a06cd7639 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -208,7 +208,7 @@ config ARCH_S3C64xx select GENERIC_GPIO config ARCH_STM32MP - bool "ST stm32mp1xx" + bool "STMicroelectronics STM32MP" select CPU_V7 select HAVE_PBL_MULTI_IMAGES select CLKDEV_LOOKUP diff --git a/arch/arm/mach-stm32mp/Kconfig b/arch/arm/mach-stm32mp/Kconfig index be16294f5ad7..af0bf6a74ba3 100644 --- a/arch/arm/mach-stm32mp/Kconfig +++ b/arch/arm/mach-stm32mp/Kconfig @@ -1,10 +1,10 @@ if ARCH_STM32MP -config ARCH_STM32MP1157 +config ARCH_STM32MP157 bool config MACH_STM32MP157C_DK2 - select ARCH_STM32MP1157 + select ARCH_STM32MP157 select ARM_USE_COMPRESSED_DTB bool "STM32MP157C-DK2 board" diff --git a/images/Makefile.stm32mp b/images/Makefile.stm32mp index c49b1d72b788..bc3e7394d729 100644 --- a/images/Makefile.stm32mp +++ b/images/Makefile.stm32mp @@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-2.0-or-later # -# barebox image generation Makefile for STMicroelectronics MP1 +# barebox image generation Makefile for STMicroelectronics MP # pblb-$(CONFIG_MACH_STM32MP157C_DK2) += start_stm32mp157c_dk2 -- 2.20.1 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 2/5] images: add support for generating STM32MP images 2019-07-12 10:24 [PATCH 1/5] ARM: stm32mp: fix some misnomers/typos Ahmad Fatoum @ 2019-07-12 10:24 ` Ahmad Fatoum 2019-07-12 10:24 ` [PATCH 3/5] filetype: add STM32 image type Ahmad Fatoum ` (3 subsequent siblings) 4 siblings, 0 replies; 8+ messages in thread From: Ahmad Fatoum @ 2019-07-12 10:24 UTC (permalink / raw) To: barebox; +Cc: Marco Felsch, mfe From: Marco Felsch <marco.felsch@gmail.com> Both STM32MP BootROM and TF-A first stage expect subsequent bootloader stages to feature a specific STM32 file header. Add a stm32image utility to address this. Signed-off-by: Marco Felsch <marco.felsch@gmail.com> Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> --- images/Makefile.stm32mp | 8 ++ scripts/Makefile | 1 + scripts/Makefile.lib | 3 + scripts/stm32image.c | 281 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 293 insertions(+) create mode 100644 scripts/stm32image.c diff --git a/images/Makefile.stm32mp b/images/Makefile.stm32mp index bc3e7394d729..a0baad30c3ad 100644 --- a/images/Makefile.stm32mp +++ b/images/Makefile.stm32mp @@ -3,6 +3,14 @@ # barebox image generation Makefile for STMicroelectronics MP # +# %.stm32 - convert into STM32MP image +# -------------------------------------- + +$(obj)/%.stm32: $(obj)/% FORCE + $(call if_changed,stm32_image) + +# -------------------------------------- + pblb-$(CONFIG_MACH_STM32MP157C_DK2) += start_stm32mp157c_dk2 FILE_barebox-stm32mp157c-dk2.img = start_stm32mp157c_dk2.pblb image-$(CONFIG_MACH_STM32MP157C_DK2) += barebox-stm32mp157c-dk2.img diff --git a/scripts/Makefile b/scripts/Makefile index 1af5f9fc985b..178313b1e244 100644 --- a/scripts/Makefile +++ b/scripts/Makefile @@ -22,6 +22,7 @@ hostprogs-$(CONFIG_ARCH_ZYNQ) += zynq_mkimage hostprogs-$(CONFIG_ARCH_SOCFPGA) += socfpga_mkimage hostprogs-$(CONFIG_MXS_HOSTTOOLS)+= mxsimage mxsboot hostprogs-$(CONFIG_ARCH_LAYERSCAPE) += pblimage +hostprogs-$(CONFIG_ARCH_STM32MP) += stm32image HOSTCFLAGS += -I$(srctree)/scripts/include/ HOSTLDLIBS_mxsimage = `pkg-config --libs openssl` HOSTCFLAGS_omap3-usb-loader.o = `pkg-config --cflags libusb-1.0` diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 87bff2d296e3..ae49ca31e8f5 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -509,6 +509,9 @@ quiet_cmd_cboot_bct = BCT $@ $(obj)/%.bct: $(obj)/%.bct.cfg $(call cmd,cboot_bct) +quiet_cmd_stm32_image = STM32-IMG $@ + cmd_stm32_image = $(objtree)/scripts/stm32image $(OPTS_$(@F)) -i $< -o $@ + quiet_cmd_b64dec = B64DEC $@ cmd_b64dec = base64 -d $< > $@ diff --git a/scripts/stm32image.c b/scripts/stm32image.c new file mode 100644 index 000000000000..c33bcca0d80a --- /dev/null +++ b/scripts/stm32image.c @@ -0,0 +1,281 @@ +// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause +/* + * Copyright (C) 2018, STMicroelectronics - All Rights Reserved + * Copyright (C) 2019, Pengutronix + */ + +#include <stdio.h> +#include <stdlib.h> +#include <errno.h> +#include <sys/stat.h> +#include <unistd.h> +#include <fcntl.h> +#include <string.h> +#include <stdint.h> +#include <getopt.h> +#include "compiler.h" + +#ifndef MAP_POPULATE +#define MAP_POPULATE 0 +#endif + +/* magic ='S' 'T' 'M' 0x32 */ +#define HEADER_MAGIC htobe32(0x53544D32) +#define VER_MAJOR_IDX 2 +#define VER_MINOR_IDX 1 +#define VER_VARIANT_IDX 0 +/* default option : bit0 => no signature */ +#define HEADER_DEFAULT_OPTION htole32(0x00000001) +/* default binary type for barebox */ +#define HEADER_TYPE_BAREBOX htole32(0x00000000) +#define HEADER_LENGTH 0x100 + +#define FSBL_LOADADDR 0x2ffc2400 +#define FSBL_ENTRYPOINT (FSBL_LOADADDR + HEADER_LENGTH) +#define MAX_FSBL_PAYLOAD_SIZE (247 * 1024) + +struct __attribute((packed)) stm32_header { + uint32_t magic_number; + uint32_t image_signature[64 / 4]; + uint32_t image_checksum; + uint8_t header_version[4]; + uint32_t image_length; + uint32_t image_entry_point; + uint32_t reserved1; + uint32_t load_address; + uint32_t reserved2; + uint32_t version_number; + uint32_t option_flags; + uint32_t ecdsa_algorithm; + uint32_t ecdsa_public_key[64 / 4]; + uint32_t padding[83 / 4]; + uint32_t binary_type; +}; + +static struct stm32_header stm32image_header; + +static const char *infile; +static const char *outfile; +static int in_fd; +static int out_fd; +static uint32_t loadaddr; +static uint32_t entrypoint; +static uint32_t pbl_size; +static uint32_t version = 0x01; + +static void stm32image_print_header(void) +{ + printf("Image Type : STMicroelectronics STM32 V%d.%d\n", + stm32image_header.header_version[VER_MAJOR_IDX], + stm32image_header.header_version[VER_MINOR_IDX]); + printf("Image Size : %u bytes\n", + le32toh(stm32image_header.image_length)); + printf("Image Load : 0x%08x\n", + le32toh(stm32image_header.load_address)); + printf("Entry Point : 0x%08x\n", + le32toh(stm32image_header.image_entry_point)); + printf("Checksum : 0x%08x\n", + le32toh(stm32image_header.image_checksum)); + printf("Option : 0x%08x\n", + le32toh(stm32image_header.option_flags)); + printf("BinaryType : 0x%08x\n", + le32toh(stm32image_header.binary_type)); +} + +static uint32_t stm32image_checksum(void) +{ + uint32_t csum = 0; + uint32_t len = pbl_size; + uint8_t *p; + + p = mmap(NULL, len, PROT_READ, MAP_PRIVATE | MAP_POPULATE, in_fd, 0); + if (p == MAP_FAILED) { + perror("mmap"); + exit(EXIT_FAILURE); + } + + for (; len > 0; len--) + csum += *p++; + + munmap(p, len); + + return csum; +} + +static void stm32image_set_header(void) +{ + + memset(&stm32image_header, 0, sizeof(struct stm32_header)); + + /* set default values */ + stm32image_header.magic_number = HEADER_MAGIC; + stm32image_header.header_version[VER_MAJOR_IDX] = version; + stm32image_header.option_flags = HEADER_DEFAULT_OPTION; + stm32image_header.ecdsa_algorithm = 1; + /* used to specify the 2nd-stage barebox address within dram */ + stm32image_header.load_address = loadaddr; + stm32image_header.binary_type = HEADER_TYPE_BAREBOX; + + stm32image_header.image_entry_point = htole32(entrypoint); + stm32image_header.image_length = htole32(pbl_size); + stm32image_header.image_checksum = stm32image_checksum(); +} + +static void stm32image_check_params(void) +{ + off_t ret; + + in_fd = open(infile, O_RDONLY); + if (in_fd < 0) { + fprintf(stderr, "Error: Cannot open %s for reading: %s\n", infile, + strerror(errno)); + exit(EXIT_FAILURE); + } + + if (!pbl_size) { + pbl_size = lseek(in_fd, 0, SEEK_END); + if (pbl_size == (uint32_t)-1) { + fprintf(stderr, "Cannot seek to end\n"); + exit(EXIT_FAILURE); + } + + ret = lseek(in_fd, 0, SEEK_SET); + if (ret == (off_t)-1) { + fprintf(stderr, "Cannot seek to start\n"); + exit(EXIT_FAILURE); + } + } + + out_fd = creat(outfile, 0644); + if (out_fd < 0) { + fprintf(stderr, "Cannot open %s for writing: %s\n", + outfile, strerror(errno)); + exit(EXIT_FAILURE); + } + + if (loadaddr < 0xc0000000) { + fprintf(stderr, "Error: loadaddr must be within the DDR memory space\n"); + exit(EXIT_FAILURE); + } +} + +static void copy_fd(int in, int out) +{ + int bs = 4096; + void *buf = malloc(bs); + + if (!buf) + exit(EXIT_FAILURE); + + while (1) { + int now, wr; + + now = read(in, buf, bs); + if (now < 0) { + fprintf(stderr, "read failed with %s\n", strerror(errno)); + exit(EXIT_FAILURE); + } + + if (!now) + break; + + wr = write(out, buf, now); + if (wr < 0) { + fprintf(stderr, "write failed with %s\n", strerror(errno)); + exit(EXIT_FAILURE); + } + + if (wr != now) { + fprintf(stderr, "short write\n"); + exit(EXIT_FAILURE); + } + } + + free(buf); +} + +int main(int argc, char *argv[]) +{ + const char *verbose; + int opt, ret; + off_t pos; + entrypoint = FSBL_ENTRYPOINT; + + while ((opt = getopt(argc, argv, "i:o:a:e:s:v:h")) != -1) { + switch (opt) { + case 'i': + infile = optarg; + break; + case 'o': + outfile = optarg; + break; + case 'a': + loadaddr = strtol(optarg, NULL, 16); + break; + case 'e': + entrypoint = strtol(optarg, NULL, 16); + break; + case 's': + pbl_size = strtol(optarg, NULL, 16); + break; + case 'v': + version = strtol(optarg, NULL, 16); + break; + case 'h': + printf("%s [-i inputfile] [-o outputfile] [-a loadaddr] [-s pblimage size in byte]\n", argv[0]); + exit(EXIT_SUCCESS); + default: + fprintf(stderr, "Unknown option: -%c\n", opt); + exit(EXIT_FAILURE); + } + } + + if (!infile) { + fprintf(stderr, "No infile given\n"); + exit(EXIT_FAILURE); + } + + if (!outfile) { + fprintf(stderr, "No outfile given\n"); + exit(EXIT_FAILURE); + } + + stm32image_check_params(); + stm32image_set_header(); + + ret = write(out_fd, (const void *)&stm32image_header, sizeof(struct stm32_header)); + if (ret != 0x100) { + fprintf(stderr, "Error: write on %s: %s\n", outfile, + strerror(errno)); + exit(EXIT_FAILURE); + } + + verbose = getenv("V"); + if (verbose && !strcmp(verbose, "1")) + stm32image_print_header(); + + ret = ftruncate(out_fd, HEADER_LENGTH); + if (ret) { + fprintf(stderr, "Cannot truncate\n"); + exit(EXIT_FAILURE); + } + + pos = lseek(out_fd, HEADER_LENGTH, SEEK_SET); + if (pos == (off_t)-1) { + fprintf(stderr, "Cannot lseek 1\n"); + exit(EXIT_FAILURE); + } + + pos = lseek(in_fd, 0, SEEK_SET); + if (pos == (off_t)-1) { + fprintf(stderr, "Cannot lseek 2\n"); + exit(EXIT_FAILURE); + } + + copy_fd(in_fd, out_fd); + + close(in_fd); + close(out_fd); + + exit(EXIT_SUCCESS); +} -- 2.20.1 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 3/5] filetype: add STM32 image type 2019-07-12 10:24 [PATCH 1/5] ARM: stm32mp: fix some misnomers/typos Ahmad Fatoum 2019-07-12 10:24 ` [PATCH 2/5] images: add support for generating STM32MP images Ahmad Fatoum @ 2019-07-12 10:24 ` Ahmad Fatoum 2019-07-12 10:24 ` [PATCH 4/5] ARM: stm32mp: generate STM32 images Ahmad Fatoum ` (2 subsequent siblings) 4 siblings, 0 replies; 8+ messages in thread From: Ahmad Fatoum @ 2019-07-12 10:24 UTC (permalink / raw) To: barebox; +Cc: mfe Both STM32MP BootROM and TF-A first stage expect subsequent bootloader stages to feature a specific 256-byte long STM32 file header. Add detection of the header to file_detect_type(). While there's only one version of the header so far, identify the new header as v1 anyway, so new versions can be unambiguously added. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> --- common/filetype.c | 9 +++++++++ include/filetype.h | 1 + 2 files changed, 10 insertions(+) diff --git a/common/filetype.c b/common/filetype.c index 329f5144bfed..825bf25ad107 100644 --- a/common/filetype.c +++ b/common/filetype.c @@ -79,6 +79,7 @@ static const struct filetype_str filetype_str[] = { [filetype_layerscape_qspi_image] = { "Layerscape QSPI image", "layerscape-qspi-PBL" }, [filetype_ubootvar] = { "U-Boot environmemnt variable data", "ubootvar" }, + [filetype_stm32_image_v1] = { "STM32 image (v1)", "stm32-image-v1" }, }; const char *file_type_to_string(enum filetype f) @@ -355,6 +356,14 @@ enum filetype file_detect_type(const void *_buf, size_t bufsize) if (buf8[0] == 'M' && buf8[1] == 'Z') return filetype_exe; + if (bufsize < 256) + return filetype_unknown; + + if (strncmp(buf8, "STM\x32", 4) == 0) { + if (buf8[74] == 0x01) + return filetype_stm32_image_v1; + } + if (bufsize < 512) return filetype_unknown; diff --git a/include/filetype.h b/include/filetype.h index f1be04e81632..90a03de58105 100644 --- a/include/filetype.h +++ b/include/filetype.h @@ -48,6 +48,7 @@ enum filetype { filetype_layerscape_image, filetype_layerscape_qspi_image, filetype_ubootvar, + filetype_stm32_image_v1, filetype_max, }; -- 2.20.1 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 4/5] ARM: stm32mp: generate STM32 images 2019-07-12 10:24 [PATCH 1/5] ARM: stm32mp: fix some misnomers/typos Ahmad Fatoum 2019-07-12 10:24 ` [PATCH 2/5] images: add support for generating STM32MP images Ahmad Fatoum 2019-07-12 10:24 ` [PATCH 3/5] filetype: add STM32 image type Ahmad Fatoum @ 2019-07-12 10:24 ` Ahmad Fatoum 2019-07-12 10:24 ` [PATCH 5/5] Documentation: boards: add initial STM32MP documentation Ahmad Fatoum 2019-07-15 6:46 ` [PATCH 1/5] ARM: stm32mp: fix some misnomers/typos Sascha Hauer 4 siblings, 0 replies; 8+ messages in thread From: Ahmad Fatoum @ 2019-07-12 10:24 UTC (permalink / raw) To: barebox; +Cc: mfe Both STM32MP BootROM and TF-A first stage expect subsequent bootloader stages to feature a specific STM32 file header. Generate this image type by default. If for some reason, the image without stm32 header is required, the start_stm32mp157c_dk2.pblb can be used. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> --- images/Makefile.stm32mp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/images/Makefile.stm32mp b/images/Makefile.stm32mp index a0baad30c3ad..910e029a5b66 100644 --- a/images/Makefile.stm32mp +++ b/images/Makefile.stm32mp @@ -9,8 +9,11 @@ $(obj)/%.stm32: $(obj)/% FORCE $(call if_changed,stm32_image) +STM32MP1_OPTS = -a 0xc0100000 -e 0xc0100000 -v1 + # -------------------------------------- pblb-$(CONFIG_MACH_STM32MP157C_DK2) += start_stm32mp157c_dk2 -FILE_barebox-stm32mp157c-dk2.img = start_stm32mp157c_dk2.pblb +FILE_barebox-stm32mp157c-dk2.img = start_stm32mp157c_dk2.pblb.stm32 +OPTS_start_stm32mp157c_dk2.pblb.stm32 = $(STM32MP1_OPTS) image-$(CONFIG_MACH_STM32MP157C_DK2) += barebox-stm32mp157c-dk2.img -- 2.20.1 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 5/5] Documentation: boards: add initial STM32MP documentation 2019-07-12 10:24 [PATCH 1/5] ARM: stm32mp: fix some misnomers/typos Ahmad Fatoum ` (2 preceding siblings ...) 2019-07-12 10:24 ` [PATCH 4/5] ARM: stm32mp: generate STM32 images Ahmad Fatoum @ 2019-07-12 10:24 ` Ahmad Fatoum 2019-07-12 11:49 ` [PATCH] fixup! " Ahmad Fatoum 2019-07-16 8:48 ` [PATCH 5/5] " Roland Hieber 2019-07-15 6:46 ` [PATCH 1/5] ARM: stm32mp: fix some misnomers/typos Sascha Hauer 4 siblings, 2 replies; 8+ messages in thread From: Ahmad Fatoum @ 2019-07-12 10:24 UTC (permalink / raw) To: barebox; +Cc: mfe Support for the SoC is still in progress, but lets document what we have now. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> --- Documentation/boards/stm32mp.rst | 73 ++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 Documentation/boards/stm32mp.rst diff --git a/Documentation/boards/stm32mp.rst b/Documentation/boards/stm32mp.rst new file mode 100644 index 000000000000..7f787bac203e --- /dev/null +++ b/Documentation/boards/stm32mp.rst @@ -0,0 +1,73 @@ +STMicroelectronics STM32MP +========================== + +.. note:: + + Support for the STM32MP architecure in barebox is still in progress. + Bootstrapping an OS from mainline barebox is not yet supported. + +The STM32MP is a line of 32-bit ARM SoCs. They reuse peripherals of the +STM32 line of microcontrollers and can have a STM32 MCU embedded as co-processor +as well. + +The boot process of the STM32MP SoC is a two step process. +The first stage boot loader (FSBL) is loaded by the ROM code into the built-in +SYSRAM and executed. The FSBL sets up the SDRAM, install a secure monitor and +then the second stage boot loader (SSBL) is loaded into DRAM. + +When building barebox, the resulting ``barebox-${board}.img`` file has the STM32 +header preprended, so it can be loaded directly as FSBL by the ARM TF-A +(https://github.com/ARM-software/arm-trusted-firmware). Each entry point has a +header-less image ending in ``*.pblb`` as well. + +Use of barebox as FSBL is not supported. + +Following boards are currently supported in barebox: + +Building barebox +---------------- + +With multi-image and device trees, it's expected to have ``stm32mp_defconfig`` +as sole defconfig for all STM32MP boards:: + + make ARCH=arm stm32mp_defconfig + +The resulting images will be placed under ``images/``: + +:: + + barebox-stm32mp157c-dk2.img + + +Flashing barebox +---------------- + +An appropriate image for the boot media can be generated with following +``genimage(1)`` config:: + + image @STM32MP_BOARD@.img { + hdimage { + align = 1M + gpt = "true" + } + partition fsbl1 { + image = "tf-a-@STM32MP_BOARD@.stm32" + size = 256K + } + partition fsbl2 { + image = "tf-a-@STM32MP_BOARD@.stm32" + size = 256K + } + partition ssbl { + image = "barebox-@STM32MP_BOARD@.img" + size = 1M + } + } + +Image can then be flashed on e.g. a SD-Card. + +TODO +---- + +* Extend barebox MMCI support to support the SDMMC2 +* Extend barebox DesignWare MAC support to support the stmmac -- 2.20.1 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] fixup! Documentation: boards: add initial STM32MP documentation 2019-07-12 10:24 ` [PATCH 5/5] Documentation: boards: add initial STM32MP documentation Ahmad Fatoum @ 2019-07-12 11:49 ` Ahmad Fatoum 2019-07-16 8:48 ` [PATCH 5/5] " Roland Hieber 1 sibling, 0 replies; 8+ messages in thread From: Ahmad Fatoum @ 2019-07-12 11:49 UTC (permalink / raw) To: barebox Fix typo: TF-A is FSBL, barebox is SSBL --- Documentation/boards/stm32mp.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/boards/stm32mp.rst b/Documentation/boards/stm32mp.rst index 7f787bac203e..8cbf36c3961e 100644 --- a/Documentation/boards/stm32mp.rst +++ b/Documentation/boards/stm32mp.rst @@ -16,7 +16,7 @@ SYSRAM and executed. The FSBL sets up the SDRAM, install a secure monitor and then the second stage boot loader (SSBL) is loaded into DRAM. When building barebox, the resulting ``barebox-${board}.img`` file has the STM32 -header preprended, so it can be loaded directly as FSBL by the ARM TF-A +header preprended, so it can be loaded directly as SSBL by the ARM TF-A (https://github.com/ARM-software/arm-trusted-firmware). Each entry point has a header-less image ending in ``*.pblb`` as well. -- 2.20.1 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 5/5] Documentation: boards: add initial STM32MP documentation 2019-07-12 10:24 ` [PATCH 5/5] Documentation: boards: add initial STM32MP documentation Ahmad Fatoum 2019-07-12 11:49 ` [PATCH] fixup! " Ahmad Fatoum @ 2019-07-16 8:48 ` Roland Hieber 1 sibling, 0 replies; 8+ messages in thread From: Roland Hieber @ 2019-07-16 8:48 UTC (permalink / raw) To: Ahmad Fatoum; +Cc: barebox, mfe On Fri, Jul 12, 2019 at 12:24:57PM +0200, Ahmad Fatoum wrote: > Support for the SoC is still in progress, but lets document > what we have now. > > Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> > --- > Documentation/boards/stm32mp.rst | 73 ++++++++++++++++++++++++++++++++ > 1 file changed, 73 insertions(+) > create mode 100644 Documentation/boards/stm32mp.rst > > diff --git a/Documentation/boards/stm32mp.rst b/Documentation/boards/stm32mp.rst > new file mode 100644 > index 000000000000..7f787bac203e > --- /dev/null > +++ b/Documentation/boards/stm32mp.rst > @@ -0,0 +1,73 @@ > +STMicroelectronics STM32MP > +========================== > + > +.. note:: > + > + Support for the STM32MP architecure in barebox is still in progress. > + Bootstrapping an OS from mainline barebox is not yet supported. > + > +The STM32MP is a line of 32-bit ARM SoCs. They reuse peripherals of the > +STM32 line of microcontrollers and can have a STM32 MCU embedded as co-processor > +as well. > + > +The boot process of the STM32MP SoC is a two step process. > +The first stage boot loader (FSBL) is loaded by the ROM code into the built-in > +SYSRAM and executed. The FSBL sets up the SDRAM, install a secure monitor and Small typo here, s/install/installs/. > +then the second stage boot loader (SSBL) is loaded into DRAM. > + > +When building barebox, the resulting ``barebox-${board}.img`` file has the STM32 > +header preprended, so it can be loaded directly as FSBL by the ARM TF-A > +(https://github.com/ARM-software/arm-trusted-firmware). Each entry point has a > +header-less image ending in ``*.pblb`` as well. > + > +Use of barebox as FSBL is not supported. > + > +Following boards are currently supported in barebox: > + None? :-) - Roland > +Building barebox > +---------------- > + > +With multi-image and device trees, it's expected to have ``stm32mp_defconfig`` > +as sole defconfig for all STM32MP boards:: > + > + make ARCH=arm stm32mp_defconfig > + > +The resulting images will be placed under ``images/``: > + > +:: > + > + barebox-stm32mp157c-dk2.img > + > + > +Flashing barebox > +---------------- > + > +An appropriate image for the boot media can be generated with following > +``genimage(1)`` config:: > + > + image @STM32MP_BOARD@.img { > + hdimage { > + align = 1M > + gpt = "true" > + } > + partition fsbl1 { > + image = "tf-a-@STM32MP_BOARD@.stm32" > + size = 256K > + } > + partition fsbl2 { > + image = "tf-a-@STM32MP_BOARD@.stm32" > + size = 256K > + } > + partition ssbl { > + image = "barebox-@STM32MP_BOARD@.img" > + size = 1M > + } > + } > + > +Image can then be flashed on e.g. a SD-Card. > + > +TODO > +---- > + > +* Extend barebox MMCI support to support the SDMMC2 > +* Extend barebox DesignWare MAC support to support the stmmac > -- > 2.20.1 > > > _______________________________________________ > barebox mailing list > barebox@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/barebox > -- Roland Hieber | r.hieber@pengutronix.de | Pengutronix e.K. | https://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim | Phone: +49-5121-206917-5086 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/5] ARM: stm32mp: fix some misnomers/typos 2019-07-12 10:24 [PATCH 1/5] ARM: stm32mp: fix some misnomers/typos Ahmad Fatoum ` (3 preceding siblings ...) 2019-07-12 10:24 ` [PATCH 5/5] Documentation: boards: add initial STM32MP documentation Ahmad Fatoum @ 2019-07-15 6:46 ` Sascha Hauer 4 siblings, 0 replies; 8+ messages in thread From: Sascha Hauer @ 2019-07-15 6:46 UTC (permalink / raw) To: Ahmad Fatoum; +Cc: barebox, mfe On Fri, Jul 12, 2019 at 12:24:53PM +0200, Ahmad Fatoum wrote: > The arch was renamed to stm32mp, so it doesn't look out of place when > the stm32mp2 is released. Fix spotted comments/labels with the old > name. While at it, fix a typo about the SoC name on the DK2 board. > > Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> > --- > arch/arm/Kconfig | 2 +- > arch/arm/mach-stm32mp/Kconfig | 4 ++-- > images/Makefile.stm32mp | 2 +- > 3 files changed, 4 insertions(+), 4 deletions(-) Applied, thanks Sascha -- 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 barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2019-07-16 8:48 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-07-12 10:24 [PATCH 1/5] ARM: stm32mp: fix some misnomers/typos Ahmad Fatoum 2019-07-12 10:24 ` [PATCH 2/5] images: add support for generating STM32MP images Ahmad Fatoum 2019-07-12 10:24 ` [PATCH 3/5] filetype: add STM32 image type Ahmad Fatoum 2019-07-12 10:24 ` [PATCH 4/5] ARM: stm32mp: generate STM32 images Ahmad Fatoum 2019-07-12 10:24 ` [PATCH 5/5] Documentation: boards: add initial STM32MP documentation Ahmad Fatoum 2019-07-12 11:49 ` [PATCH] fixup! " Ahmad Fatoum 2019-07-16 8:48 ` [PATCH 5/5] " Roland Hieber 2019-07-15 6:46 ` [PATCH 1/5] ARM: stm32mp: fix some misnomers/typos Sascha Hauer
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox