mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-25 06:46:00 +00:00
boards: siemens: iot2050: Unify PG1 and PG2/M.2 configurations again
This avoids having to maintain to defconfigs that are 99% equivalent. The approach is to use binman to generate two flash images, flash-pg1.bin and flash-pg2.bin. With the help of a template dtsi, we can avoid duplicating the common binman image definitions. Suggested-by: Andrew Davis <afd@ti.com> Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
This commit is contained in:
parent
35ae06fb86
commit
badaa1f6a7
8 changed files with 157 additions and 281 deletions
|
@ -1,6 +1,6 @@
|
||||||
// SPDX-License-Identifier: GPL-2.0
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Siemens AG, 2020-2022
|
* Copyright (c) Siemens AG, 2020-2023
|
||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
* Jan Kiszka <jan.kiszka@siemens.com>
|
* Jan Kiszka <jan.kiszka@siemens.com>
|
||||||
|
@ -10,23 +10,23 @@
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
binman {
|
binman: binman {
|
||||||
filename = "flash.bin";
|
multiple-images;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&binman {
|
||||||
|
common_part: template {
|
||||||
pad-byte = <0xff>;
|
pad-byte = <0xff>;
|
||||||
size = <0x8c0000>;
|
size = <0x8c0000>;
|
||||||
allow-repack;
|
allow-repack;
|
||||||
|
|
||||||
blob-ext@0x000000 {
|
blob-ext@0 {
|
||||||
offset = <0x000000>;
|
offset = <0x000000>;
|
||||||
#ifdef CONFIG_TARGET_IOT2050_A53_PG1
|
|
||||||
filename = "seboot_pg1.bin";
|
|
||||||
#else
|
|
||||||
filename = "seboot_pg2.bin";
|
|
||||||
#endif
|
|
||||||
missing-msg = "iot2050-seboot";
|
missing-msg = "iot2050-seboot";
|
||||||
};
|
};
|
||||||
|
|
||||||
fit@0x180000 {
|
fit@180000 {
|
||||||
offset = <0x180000>;
|
offset = <0x180000>;
|
||||||
filename = "tispl.bin";
|
filename = "tispl.bin";
|
||||||
pad-byte = <0xff>;
|
pad-byte = <0xff>;
|
||||||
|
@ -104,9 +104,8 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fit@0x380000 {
|
fit@380000 {
|
||||||
description = "U-Boot for IOT2050";
|
description = "U-Boot for IOT2050";
|
||||||
fit,fdt-list = "of-list";
|
|
||||||
offset = <0x380000>;
|
offset = <0x380000>;
|
||||||
images {
|
images {
|
||||||
u-boot {
|
u-boot {
|
||||||
|
@ -134,7 +133,105 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_TARGET_IOT2050_A53_PG2
|
#ifdef CONFIG_WDT_K3_RTI_FW_FILE
|
||||||
|
k3-rti-wdt-firmware {
|
||||||
|
type = "firmware";
|
||||||
|
load = <0x82000000>;
|
||||||
|
arch = "arm";
|
||||||
|
compression = "none";
|
||||||
|
blob-ext {
|
||||||
|
filename = CONFIG_WDT_K3_RTI_FW_FILE;
|
||||||
|
missing-msg = "k3-rti-wdt-firmware";
|
||||||
|
};
|
||||||
|
hash {
|
||||||
|
algo = "sha256";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
configurations {
|
||||||
|
@config-SEQ {
|
||||||
|
description = "NAME";
|
||||||
|
firmware = "u-boot";
|
||||||
|
fdt = "fdt-SEQ";
|
||||||
|
signature {
|
||||||
|
sign-images = "firmware", "fdt", "loadables";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fdtmap {
|
||||||
|
};
|
||||||
|
|
||||||
|
/* primary env */
|
||||||
|
fill@680000 {
|
||||||
|
offset = <0x680000>;
|
||||||
|
size = <0x020000>;
|
||||||
|
fill-byte = [00];
|
||||||
|
};
|
||||||
|
/* secondary env */
|
||||||
|
fill@6a0000 {
|
||||||
|
offset = <0x6a0000>;
|
||||||
|
size = <0x020000>;
|
||||||
|
fill-byte = [00];
|
||||||
|
};
|
||||||
|
|
||||||
|
/* OTP update command block */
|
||||||
|
#ifdef CONFIG_IOT2050_EMBED_OTPCMD
|
||||||
|
blob-ext@6c0000 {
|
||||||
|
offset = <0x6c0000>;
|
||||||
|
|
||||||
|
size = <0x010000>;
|
||||||
|
filename = "otpcmd.bin";
|
||||||
|
missing-msg = "iot2050-otpcmd";
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
fill@6c0000 {
|
||||||
|
offset = <0x6c0000>;
|
||||||
|
size = <0x010000>;
|
||||||
|
fill-byte = [ff];
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
flash-pg1 {
|
||||||
|
filename = "flash-pg1.bin";
|
||||||
|
insert-template = <&common_part>;
|
||||||
|
|
||||||
|
blob-ext@0 {
|
||||||
|
filename = "seboot_pg1.bin";
|
||||||
|
};
|
||||||
|
|
||||||
|
fit@380000 {
|
||||||
|
fit,fdt-list-val = "k3-am6528-iot2050-basic", "k3-am6548-iot2050-advanced";
|
||||||
|
|
||||||
|
configurations {
|
||||||
|
default = "k3-am6528-iot2050-basic";
|
||||||
|
@config-SEQ {
|
||||||
|
loadables =
|
||||||
|
#ifdef CONFIG_WDT_K3_RTI_FW_FILE
|
||||||
|
"k3-rti-wdt-firmware",
|
||||||
|
#endif
|
||||||
|
<>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
flash-pg2 {
|
||||||
|
filename = "flash-pg2.bin";
|
||||||
|
insert-template = <&common_part>;
|
||||||
|
|
||||||
|
blob-ext@0 {
|
||||||
|
filename = "seboot_pg2.bin";
|
||||||
|
};
|
||||||
|
|
||||||
|
fit@380000 {
|
||||||
|
fit,fdt-list-val = "k3-am6528-iot2050-basic-pg2", "k3-am6548-iot2050-advanced-pg2", "k3-am6548-iot2050-advanced-m2";
|
||||||
|
|
||||||
|
images {
|
||||||
bkey-usb3-overlay {
|
bkey-usb3-overlay {
|
||||||
description = "M.2-bkey-usb3-overlay";
|
description = "M.2-bkey-usb3-overlay";
|
||||||
type = "blob";
|
type = "blob";
|
||||||
|
@ -162,77 +259,19 @@
|
||||||
algo = "sha256";
|
algo = "sha256";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_WDT_K3_RTI_FW_FILE
|
|
||||||
k3-rti-wdt-firmware {
|
|
||||||
type = "firmware";
|
|
||||||
load = <0x82000000>;
|
|
||||||
arch = "arm";
|
|
||||||
compression = "none";
|
|
||||||
blob-ext {
|
|
||||||
filename = CONFIG_WDT_K3_RTI_FW_FILE;
|
|
||||||
missing-msg = "k3-rti-wdt-firmware";
|
|
||||||
};
|
|
||||||
hash {
|
|
||||||
algo = "sha256";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
default = "@config-DEFAULT-SEQ";
|
default = "k3-am6528-iot2050-basic-pg2";
|
||||||
@config-SEQ {
|
@config-SEQ {
|
||||||
description = "NAME";
|
|
||||||
firmware = "u-boot";
|
|
||||||
fdt = "fdt-SEQ";
|
|
||||||
loadables =
|
loadables =
|
||||||
#ifdef CONFIG_TARGET_IOT2050_A53_PG2
|
|
||||||
"bkey-usb3-overlay",
|
|
||||||
"bkey-ekey-pcie-overlay",
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_WDT_K3_RTI_FW_FILE
|
#ifdef CONFIG_WDT_K3_RTI_FW_FILE
|
||||||
"k3-rti-wdt-firmware",
|
"k3-rti-wdt-firmware",
|
||||||
#endif
|
#endif
|
||||||
<>;
|
"bkey-usb3-overlay",
|
||||||
signature {
|
"bkey-ekey-pcie-overlay";
|
||||||
sign-images = "firmware", "fdt", "loadables";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
fdtmap {
|
|
||||||
};
|
|
||||||
|
|
||||||
/* primary env */
|
|
||||||
fill@0x680000 {
|
|
||||||
offset = <0x680000>;
|
|
||||||
size = <0x020000>;
|
|
||||||
fill-byte = [00];
|
|
||||||
};
|
|
||||||
/* secondary env */
|
|
||||||
fill@0x6a0000 {
|
|
||||||
offset = <0x6a0000>;
|
|
||||||
size = <0x020000>;
|
|
||||||
fill-byte = [00];
|
|
||||||
};
|
|
||||||
|
|
||||||
/* OTP update command block */
|
|
||||||
#if CONFIG_IOT2050_EMBED_OTPCMD
|
|
||||||
blob-ext@0x6c0000 {
|
|
||||||
offset = <0x6c0000>;
|
|
||||||
size = <0x010000>;
|
|
||||||
filename = "otpcmd.bin";
|
|
||||||
missing-msg = "iot2050-otpcmd";
|
|
||||||
};
|
|
||||||
#else
|
|
||||||
fill@0x6c0000 {
|
|
||||||
offset = <0x6c0000>;
|
|
||||||
size = <0x010000>;
|
|
||||||
fill-byte = [ff];
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,40 +1,22 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0+
|
# SPDX-License-Identifier: GPL-2.0+
|
||||||
#
|
#
|
||||||
# Copyright (c) Siemens AG, 2018-2022
|
# Copyright (c) Siemens AG, 2018-2023
|
||||||
#
|
#
|
||||||
# Authors:
|
# Authors:
|
||||||
# Le Jin <le.jin@siemens.com>
|
# Le Jin <le.jin@siemens.com>
|
||||||
# Jan Kiszka <jan.kiszka@siemens.com>
|
# Jan Kiszka <jan.kiszka@siemens.com>
|
||||||
|
|
||||||
choice
|
config TARGET_IOT2050_A53
|
||||||
prompt "Siemens SIMATIC IOT2050 boards"
|
bool "IOT2050 running on A53"
|
||||||
optional
|
|
||||||
|
|
||||||
config TARGET_IOT2050_A53_PG1
|
|
||||||
bool "IOT2050 PG1 running on A53"
|
|
||||||
select IOT2050_A53_COMMON
|
|
||||||
help
|
|
||||||
This builds U-Boot for the Product Generation 1 (PG1) of the IOT2050
|
|
||||||
devices.
|
|
||||||
|
|
||||||
config TARGET_IOT2050_A53_PG2
|
|
||||||
bool "IOT2050 PG2 running on A53"
|
|
||||||
select IOT2050_A53_COMMON
|
|
||||||
help
|
|
||||||
This builds U-Boot for the Product Generation 2 (PG2) of the IOT2050
|
|
||||||
devices.
|
|
||||||
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
config IOT2050_A53_COMMON
|
|
||||||
bool
|
|
||||||
select ARM64
|
select ARM64
|
||||||
select SOC_K3_AM654
|
select SOC_K3_AM654
|
||||||
select BOARD_LATE_INIT
|
select BOARD_LATE_INIT
|
||||||
select SYS_DISABLE_DCACHE_OPS
|
select SYS_DISABLE_DCACHE_OPS
|
||||||
select BINMAN
|
select BINMAN
|
||||||
|
help
|
||||||
|
This builds U-Boot for the IOT2050 devices.
|
||||||
|
|
||||||
if IOT2050_A53_COMMON
|
if TARGET_IOT2050_A53
|
||||||
|
|
||||||
config SYS_BOARD
|
config SYS_BOARD
|
||||||
default "iot2050"
|
default "iot2050"
|
||||||
|
|
|
@ -4,7 +4,6 @@ M: Jan Kiszka <jan.kiszka@siemens.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: board/siemens/iot2050/
|
F: board/siemens/iot2050/
|
||||||
F: include/configs/iot2050.h
|
F: include/configs/iot2050.h
|
||||||
F: configs/iot2050_pg1_defconfig
|
F: configs/iot2050_defconfig
|
||||||
F: configs/iot2050_pg2_defconfig
|
|
||||||
F: arch/arm/dts/iot2050-*
|
F: arch/arm/dts/iot2050-*
|
||||||
F: doc/board/siemens/iot2050.rst
|
F: doc/board/siemens/iot2050.rst
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// SPDX-License-Identifier: GPL-2.0+
|
// SPDX-License-Identifier: GPL-2.0+
|
||||||
/*
|
/*
|
||||||
* Board specific initialization for IOT2050
|
* Board specific initialization for IOT2050
|
||||||
* Copyright (c) Siemens AG, 2018-2022
|
* Copyright (c) Siemens AG, 2018-2023
|
||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
* Le Jin <le.jin@siemens.com>
|
* Le Jin <le.jin@siemens.com>
|
||||||
|
@ -147,15 +147,6 @@ static void set_pinvalue(const char *gpio_name, const char *label, int value)
|
||||||
dm_gpio_set_value(&gpio, value);
|
dm_gpio_set_value(&gpio, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool board_is_m2(void)
|
|
||||||
{
|
|
||||||
struct iot2050_info *info = IOT2050_INFO_DATA;
|
|
||||||
|
|
||||||
return IS_ENABLED(CONFIG_TARGET_IOT2050_A53_PG2) &&
|
|
||||||
info->magic == IOT2050_INFO_MAGIC &&
|
|
||||||
strcmp((char *)info->name, "IOT2050-ADVANCED-M2") == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool board_is_advanced(void)
|
static bool board_is_advanced(void)
|
||||||
{
|
{
|
||||||
struct iot2050_info *info = IOT2050_INFO_DATA;
|
struct iot2050_info *info = IOT2050_INFO_DATA;
|
||||||
|
@ -164,6 +155,22 @@ static bool board_is_advanced(void)
|
||||||
strstr((char *)info->name, "IOT2050-ADVANCED") != NULL;
|
strstr((char *)info->name, "IOT2050-ADVANCED") != NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool board_is_sr1(void)
|
||||||
|
{
|
||||||
|
struct iot2050_info *info = IOT2050_INFO_DATA;
|
||||||
|
|
||||||
|
return info->magic == IOT2050_INFO_MAGIC &&
|
||||||
|
strstr((char *)info->name, "-PG2") != NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool board_is_m2(void)
|
||||||
|
{
|
||||||
|
struct iot2050_info *info = IOT2050_INFO_DATA;
|
||||||
|
|
||||||
|
return !board_is_sr1() && info->magic == IOT2050_INFO_MAGIC &&
|
||||||
|
strcmp((char *)info->name, "IOT2050-ADVANCED-M2") == 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void remove_mmc1_target(void)
|
static void remove_mmc1_target(void)
|
||||||
{
|
{
|
||||||
char *boot_targets = strdup(env_get("boot_targets"));
|
char *boot_targets = strdup(env_get("boot_targets"));
|
||||||
|
@ -210,14 +217,14 @@ void set_board_info_env(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (board_is_advanced()) {
|
if (board_is_advanced()) {
|
||||||
if (IS_ENABLED(CONFIG_TARGET_IOT2050_A53_PG1))
|
if (board_is_sr1())
|
||||||
fdtfile = "ti/k3-am6548-iot2050-advanced.dtb";
|
fdtfile = "ti/k3-am6548-iot2050-advanced.dtb";
|
||||||
else if(board_is_m2())
|
else if(board_is_m2())
|
||||||
fdtfile = "ti/k3-am6548-iot2050-advanced-m2.dtb";
|
fdtfile = "ti/k3-am6548-iot2050-advanced-m2.dtb";
|
||||||
else
|
else
|
||||||
fdtfile = "ti/k3-am6548-iot2050-advanced-pg2.dtb";
|
fdtfile = "ti/k3-am6548-iot2050-advanced-pg2.dtb";
|
||||||
} else {
|
} else {
|
||||||
if (IS_ENABLED(CONFIG_TARGET_IOT2050_A53_PG1))
|
if (board_is_sr1())
|
||||||
fdtfile = "ti/k3-am6528-iot2050-basic.dtb";
|
fdtfile = "ti/k3-am6528-iot2050-basic.dtb";
|
||||||
else
|
else
|
||||||
fdtfile = "ti/k3-am6528-iot2050-basic-pg2.dtb";
|
fdtfile = "ti/k3-am6528-iot2050-basic-pg2.dtb";
|
||||||
|
|
|
@ -8,7 +8,7 @@ CONFIG_SPL_LIBCOMMON_SUPPORT=y
|
||||||
CONFIG_SPL_LIBGENERIC_SUPPORT=y
|
CONFIG_SPL_LIBGENERIC_SUPPORT=y
|
||||||
CONFIG_NR_DRAM_BANKS=2
|
CONFIG_NR_DRAM_BANKS=2
|
||||||
CONFIG_SOC_K3_AM654=y
|
CONFIG_SOC_K3_AM654=y
|
||||||
CONFIG_TARGET_IOT2050_A53_PG1=y
|
CONFIG_TARGET_IOT2050_A53=y
|
||||||
CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
|
CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
|
||||||
CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x80100000
|
CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x80100000
|
||||||
CONFIG_ENV_SIZE=0x20000
|
CONFIG_ENV_SIZE=0x20000
|
||||||
|
@ -74,7 +74,6 @@ CONFIG_CMD_TIME=y
|
||||||
# CONFIG_ISO_PARTITION is not set
|
# CONFIG_ISO_PARTITION is not set
|
||||||
CONFIG_OF_CONTROL=y
|
CONFIG_OF_CONTROL=y
|
||||||
CONFIG_SPL_OF_CONTROL=y
|
CONFIG_SPL_OF_CONTROL=y
|
||||||
CONFIG_OF_LIST="k3-am6528-iot2050-basic k3-am6548-iot2050-advanced"
|
|
||||||
CONFIG_SPL_MULTI_DTB_FIT=y
|
CONFIG_SPL_MULTI_DTB_FIT=y
|
||||||
CONFIG_SPL_OF_LIST="k3-am65-iot2050-spl"
|
CONFIG_SPL_OF_LIST="k3-am65-iot2050-spl"
|
||||||
CONFIG_SPL_MULTI_DTB_FIT_NO_COMPRESSION=y
|
CONFIG_SPL_MULTI_DTB_FIT_NO_COMPRESSION=y
|
|
@ -1,151 +0,0 @@
|
||||||
CONFIG_ARM=y
|
|
||||||
CONFIG_SKIP_LOWLEVEL_INIT=y
|
|
||||||
CONFIG_ARCH_K3=y
|
|
||||||
CONFIG_SYS_MALLOC_LEN=0x2000000
|
|
||||||
CONFIG_SYS_MALLOC_F_LEN=0x8000
|
|
||||||
CONFIG_SPL_GPIO=y
|
|
||||||
CONFIG_SPL_LIBCOMMON_SUPPORT=y
|
|
||||||
CONFIG_SPL_LIBGENERIC_SUPPORT=y
|
|
||||||
CONFIG_NR_DRAM_BANKS=2
|
|
||||||
CONFIG_SOC_K3_AM654=y
|
|
||||||
CONFIG_TARGET_IOT2050_A53_PG2=y
|
|
||||||
CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
|
|
||||||
CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x80100000
|
|
||||||
CONFIG_ENV_SIZE=0x20000
|
|
||||||
CONFIG_ENV_OFFSET=0x680000
|
|
||||||
CONFIG_ENV_SECT_SIZE=0x20000
|
|
||||||
CONFIG_DM_GPIO=y
|
|
||||||
CONFIG_SPL_DM_SPI=y
|
|
||||||
CONFIG_DEFAULT_DEVICE_TREE="k3-am6528-iot2050-basic-pg2"
|
|
||||||
CONFIG_SPL_TEXT_BASE=0x80080000
|
|
||||||
CONFIG_SYS_PROMPT="IOT2050> "
|
|
||||||
CONFIG_OF_LIBFDT_OVERLAY=y
|
|
||||||
CONFIG_DM_RESET=y
|
|
||||||
CONFIG_SPL_SERIAL=y
|
|
||||||
CONFIG_SPL_STACK_R_ADDR=0x82000000
|
|
||||||
CONFIG_ENV_OFFSET_REDUND=0x6a0000
|
|
||||||
CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
|
||||||
CONFIG_SPL_SPI=y
|
|
||||||
CONFIG_PCI=y
|
|
||||||
# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
|
|
||||||
CONFIG_SPL_LOAD_FIT=y
|
|
||||||
CONFIG_LEGACY_IMAGE_FORMAT=y
|
|
||||||
CONFIG_OF_BOARD_SETUP=y
|
|
||||||
CONFIG_OF_SYSTEM_SETUP=y
|
|
||||||
CONFIG_DISTRO_DEFAULTS=y
|
|
||||||
CONFIG_BOOTSTAGE=y
|
|
||||||
CONFIG_SHOW_BOOT_PROGRESS=y
|
|
||||||
CONFIG_SPL_SHOW_BOOT_PROGRESS=y
|
|
||||||
CONFIG_BOOTCOMMAND="run start_watchdog; run distro_bootcmd"
|
|
||||||
CONFIG_CONSOLE_MUX=y
|
|
||||||
# CONFIG_DISPLAY_CPUINFO is not set
|
|
||||||
CONFIG_SPL_MAX_SIZE=0x58000
|
|
||||||
CONFIG_SPL_HAS_BSS_LINKER_SECTION=y
|
|
||||||
CONFIG_SPL_BSS_START_ADDR=0x80a00000
|
|
||||||
CONFIG_SPL_BSS_MAX_SIZE=0x80000
|
|
||||||
CONFIG_SPL_BOARD_INIT=y
|
|
||||||
CONFIG_SPL_SYS_MALLOC_SIMPLE=y
|
|
||||||
CONFIG_SPL_STACK_R=y
|
|
||||||
CONFIG_SYS_SPL_MALLOC=y
|
|
||||||
CONFIG_SYS_SPL_MALLOC_SIZE=0x800000
|
|
||||||
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y
|
|
||||||
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x1400
|
|
||||||
CONFIG_SPL_DM_MAILBOX=y
|
|
||||||
CONFIG_SPL_DM_SPI_FLASH=y
|
|
||||||
CONFIG_SPL_DM_RESET=y
|
|
||||||
CONFIG_SPL_POWER_DOMAIN=y
|
|
||||||
# CONFIG_SPL_SPI_FLASH_TINY is not set
|
|
||||||
CONFIG_SPL_SPI_FLASH_SFDP_SUPPORT=y
|
|
||||||
CONFIG_SPL_SPI_LOAD=y
|
|
||||||
CONFIG_SYS_SPI_U_BOOT_OFFS=0x380000
|
|
||||||
CONFIG_SYS_MAXARGS=64
|
|
||||||
CONFIG_SYS_PBSIZE=1050
|
|
||||||
CONFIG_CMD_ASKENV=y
|
|
||||||
CONFIG_CMD_DFU=y
|
|
||||||
CONFIG_CMD_GPT=y
|
|
||||||
CONFIG_CMD_I2C=y
|
|
||||||
CONFIG_CMD_MMC=y
|
|
||||||
CONFIG_CMD_PCI=y
|
|
||||||
CONFIG_CMD_REMOTEPROC=y
|
|
||||||
CONFIG_CMD_USB=y
|
|
||||||
CONFIG_CMD_WDT=y
|
|
||||||
# CONFIG_CMD_SETEXPR is not set
|
|
||||||
CONFIG_CMD_TIME=y
|
|
||||||
# CONFIG_ISO_PARTITION is not set
|
|
||||||
CONFIG_OF_CONTROL=y
|
|
||||||
CONFIG_SPL_OF_CONTROL=y
|
|
||||||
CONFIG_OF_LIST="k3-am6528-iot2050-basic-pg2 k3-am6548-iot2050-advanced-pg2 k3-am6548-iot2050-advanced-m2"
|
|
||||||
CONFIG_SPL_MULTI_DTB_FIT=y
|
|
||||||
CONFIG_SPL_OF_LIST="k3-am65-iot2050-spl"
|
|
||||||
CONFIG_SPL_MULTI_DTB_FIT_NO_COMPRESSION=y
|
|
||||||
CONFIG_ENV_IS_IN_SPI_FLASH=y
|
|
||||||
CONFIG_SYS_REDUNDAND_ENVIRONMENT=y
|
|
||||||
CONFIG_SPL_DM=y
|
|
||||||
CONFIG_SPL_DM_SEQ_ALIAS=y
|
|
||||||
CONFIG_SPL_REGMAP=y
|
|
||||||
CONFIG_SPL_OF_TRANSLATE=y
|
|
||||||
CONFIG_CLK=y
|
|
||||||
CONFIG_SPL_CLK=y
|
|
||||||
CONFIG_CLK_TI_SCI=y
|
|
||||||
CONFIG_DFU_MMC=y
|
|
||||||
CONFIG_DFU_RAM=y
|
|
||||||
CONFIG_DFU_SF=y
|
|
||||||
CONFIG_DMA_CHANNELS=y
|
|
||||||
CONFIG_TI_K3_NAVSS_UDMA=y
|
|
||||||
CONFIG_TI_SCI_PROTOCOL=y
|
|
||||||
CONFIG_DA8XX_GPIO=y
|
|
||||||
CONFIG_DM_PCA953X=y
|
|
||||||
CONFIG_DM_I2C=y
|
|
||||||
CONFIG_I2C_SET_DEFAULT_BUS_NUM=y
|
|
||||||
CONFIG_SYS_I2C_OMAP24XX=y
|
|
||||||
CONFIG_LED=y
|
|
||||||
CONFIG_SPL_LED=y
|
|
||||||
CONFIG_LED_GPIO=y
|
|
||||||
CONFIG_SPL_LED_GPIO=y
|
|
||||||
CONFIG_DM_MAILBOX=y
|
|
||||||
CONFIG_K3_SEC_PROXY=y
|
|
||||||
CONFIG_MMC_HS200_SUPPORT=y
|
|
||||||
CONFIG_MMC_SDHCI=y
|
|
||||||
CONFIG_MMC_SDHCI_ADMA=y
|
|
||||||
CONFIG_MMC_SDHCI_AM654=y
|
|
||||||
CONFIG_DM_SPI_FLASH=y
|
|
||||||
CONFIG_SPI_FLASH_SFDP_SUPPORT=y
|
|
||||||
CONFIG_SPI_FLASH_STMICRO=y
|
|
||||||
CONFIG_SPI_FLASH_WINBOND=y
|
|
||||||
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
|
|
||||||
CONFIG_PCI_KEYSTONE=y
|
|
||||||
CONFIG_PHY=y
|
|
||||||
CONFIG_AM654_PHY=y
|
|
||||||
CONFIG_OMAP_USB2_PHY=y
|
|
||||||
CONFIG_PINCTRL=y
|
|
||||||
# CONFIG_PINCTRL_GENERIC is not set
|
|
||||||
CONFIG_SPL_PINCTRL=y
|
|
||||||
# CONFIG_SPL_PINCTRL_GENERIC is not set
|
|
||||||
CONFIG_PINCTRL_SINGLE=y
|
|
||||||
CONFIG_POWER_DOMAIN=y
|
|
||||||
CONFIG_TI_SCI_POWER_DOMAIN=y
|
|
||||||
CONFIG_REMOTEPROC_TI_K3_R5F=y
|
|
||||||
CONFIG_RESET_TI_SCI=y
|
|
||||||
CONFIG_DM_SERIAL=y
|
|
||||||
CONFIG_SOC_DEVICE=y
|
|
||||||
CONFIG_SOC_DEVICE_TI_K3=y
|
|
||||||
CONFIG_SOC_TI=y
|
|
||||||
CONFIG_SPI=y
|
|
||||||
CONFIG_DM_SPI=y
|
|
||||||
CONFIG_CADENCE_QSPI=y
|
|
||||||
CONFIG_SYSRESET=y
|
|
||||||
CONFIG_SPL_SYSRESET=y
|
|
||||||
CONFIG_SYSRESET_TI_SCI=y
|
|
||||||
CONFIG_USB=y
|
|
||||||
CONFIG_USB_XHCI_HCD=y
|
|
||||||
CONFIG_USB_XHCI_DWC3=y
|
|
||||||
CONFIG_USB_DWC3=y
|
|
||||||
CONFIG_USB_DWC3_GENERIC=y
|
|
||||||
CONFIG_USB_KEYBOARD=y
|
|
||||||
# CONFIG_WATCHDOG is not set
|
|
||||||
# CONFIG_WATCHDOG_AUTOSTART is not set
|
|
||||||
CONFIG_WATCHDOG_TIMEOUT_MSECS=0
|
|
||||||
CONFIG_WDT=y
|
|
||||||
CONFIG_WDT_K3_RTI=y
|
|
||||||
CONFIG_WDT_K3_RTI_LOAD_FW=y
|
|
||||||
CONFIG_EFI_SCROLL_ON_CLEAR_SCREEN=y
|
|
|
@ -68,15 +68,14 @@ U-Boot:
|
||||||
|
|
||||||
$ export ATF=/path/to/bl31.bin
|
$ export ATF=/path/to/bl31.bin
|
||||||
$ export TEE=/path/to/tee-pager_v2.bin
|
$ export TEE=/path/to/tee-pager_v2.bin
|
||||||
|
$ make iot2050_defconfig
|
||||||
# configure for PG1
|
|
||||||
$ make iot2050_pg1_defconfig
|
|
||||||
|
|
||||||
# or configure for PG2 or the M.2 variant
|
|
||||||
$ make iot2050_pg2_defconfig
|
|
||||||
|
|
||||||
$ make
|
$ make
|
||||||
|
|
||||||
|
This will generate two different flash images: flash-p1.bin that targets the
|
||||||
|
first generation of IOT2050 devices and flash-pg2.bin that runs on PG2
|
||||||
|
including M.2 devices.
|
||||||
|
|
||||||
Flashing
|
Flashing
|
||||||
--------
|
--------
|
||||||
|
|
||||||
|
@ -85,20 +84,20 @@ Via U-Boot:
|
||||||
.. code-block:: text
|
.. code-block:: text
|
||||||
|
|
||||||
IOT2050> sf probe
|
IOT2050> sf probe
|
||||||
IOT2050> load mmc 0:1 $loadaddr /path/to/flash.bin
|
IOT2050> load mmc 0:1 $loadaddr /path/to/flash-pgX.bin
|
||||||
IOT2050> sf update $loadaddr 0x0 $filesize
|
IOT2050> sf update $loadaddr 0x0 $filesize
|
||||||
|
|
||||||
Via external programmer Dediprog SF100 or SF600:
|
Via external programmer Dediprog SF100 or SF600:
|
||||||
|
|
||||||
.. code-block:: text
|
.. code-block:: text
|
||||||
|
|
||||||
$ dpcmd --vcc 2 -v -u flash.bin
|
$ dpcmd --vcc 2 -v -u flash-pgX.bin
|
||||||
|
|
||||||
Signing (optional)
|
Signing (optional)
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
To enable verified boot for the firmware artifacts after the Siemens-managed
|
To enable verified boot for the firmware artifacts after the Siemens-managed
|
||||||
first-stage loader (seboot_pg*.bin), the following steps need to be taken
|
first-stage loader (seboot_pgX.bin), the following steps need to be taken
|
||||||
before and after the build:
|
before and after the build:
|
||||||
|
|
||||||
Generate dtsi holding the public key
|
Generate dtsi holding the public key
|
||||||
|
@ -131,8 +130,8 @@ Build U-Boot
|
||||||
|
|
||||||
See related section above.
|
See related section above.
|
||||||
|
|
||||||
Sign flash.bin
|
Sign flash-pgX.bin
|
||||||
^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
In the build folder still containing artifacts from step 3, invoke:
|
In the build folder still containing artifacts from step 3, invoke:
|
||||||
|
|
||||||
|
@ -140,10 +139,10 @@ In the build folder still containing artifacts from step 3, invoke:
|
||||||
|
|
||||||
tools/iot2050-sign-fw.sh /path/to/key.pem
|
tools/iot2050-sign-fw.sh /path/to/key.pem
|
||||||
|
|
||||||
Flash signed flash.bin
|
Flash signed flash-pgX.bin
|
||||||
^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
The signing has happen in-place in flash.bin, thus the flashing procedure
|
The signing has happen in-place in flash-pgX.bin, thus the flashing procedure
|
||||||
described above.
|
described above.
|
||||||
|
|
||||||
M.2 slot configuration
|
M.2 slot configuration
|
||||||
|
|
|
@ -39,8 +39,10 @@ CERT_X509=$(mktemp XXXXXXXX.crt)
|
||||||
|
|
||||||
openssl req -new -x509 -key $1 -nodes -outform DER -out $CERT_X509 -config $TEMP_X509 -sha512
|
openssl req -new -x509 -key $1 -nodes -outform DER -out $CERT_X509 -config $TEMP_X509 -sha512
|
||||||
cat $CERT_X509 tispl.bin > tispl.bin_signed
|
cat $CERT_X509 tispl.bin > tispl.bin_signed
|
||||||
source/tools/binman/binman replace -i flash.bin -f tispl.bin_signed fit@0x180000
|
source/tools/binman/binman replace -i flash-pg1.bin -f tispl.bin_signed fit@180000
|
||||||
|
source/tools/binman/binman replace -i flash-pg2.bin -f tispl.bin_signed fit@180000
|
||||||
|
|
||||||
rm $TEMP_X509 $CERT_X509
|
rm $TEMP_X509 $CERT_X509
|
||||||
|
|
||||||
source/tools/binman/binman sign -i flash.bin -k $1 -a sha256,rsa4096 fit@0x380000
|
source/tools/binman/binman sign -i flash-pg1.bin -k $1 -a sha256,rsa4096 fit@380000
|
||||||
|
source/tools/binman/binman sign -i flash-pg2.bin -k $1 -a sha256,rsa4096 fit@380000
|
||||||
|
|
Loading…
Add table
Reference in a new issue