mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-15 09:27:35 +00:00
954bd1a923
Add a specific command stm32prog for STM32MP soc family witch allows to program the boot devices with the tool STM32CubeProgrammer (http://www.st.com/STM32CubeProg). This command uses the same UART STM32 protocol than MCU STM32 with or USB with DFU protocol v1.1 (ithe MCU ST extension are no supported). The executed actions are based on a tab separated value file with a stm32 header, the FlashLayout file (https://wiki.st.com/stm32mpu/wiki/STM32CubeProgrammer_flashlayout). This file is parsed by the U-Boot command to: - initialize the devices - create the partition table on each device - initialize the DFU backend to access to not volatile memory (NOR/NAND/SD/eMMC) or to virtual device (OTP/PMIC) Up to STM32PROG_MAX_DEV (5) devices can be updated with a FlashLayout. The communication between U-Boot and STM32CubeProgrammer is done with the specific alternate configuration (see "AN5275: USB DFU/USART protocols used in STM32MP1 Series bootloaders" for details). The command stm32prog is executed when a boot from USB is detected (selected with bootpins) and we can program the boot devices with a simple command (on Windows or Linux): PC $> STM32_Programmer_CLI -c port=usb1 -w flaslayout.tsv 1/ the ROM code loads TF-A in embedded RAM (DFU or uart) 2/ TF-A loads flashlayout file and U-Boot in DDR (DFU or uart) 3/ U-Boot executes the stm32prog command (DFU or uart) Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com> Reviewed-by: Patrice Chotard <patrice.chotard@st.com> Reviewed-by: Patrice Chotard <patrice.chotard@st.com>
166 lines
3.7 KiB
Text
166 lines
3.7 KiB
Text
if ARCH_STM32MP
|
|
|
|
config SPL
|
|
select SPL_BOARD_INIT
|
|
select SPL_CLK
|
|
select SPL_DM
|
|
select SPL_DM_SEQ_ALIAS
|
|
select SPL_DRIVERS_MISC_SUPPORT
|
|
select SPL_FRAMEWORK
|
|
select SPL_GPIO_SUPPORT
|
|
select SPL_LIBCOMMON_SUPPORT
|
|
select SPL_LIBGENERIC_SUPPORT
|
|
select SPL_OF_CONTROL
|
|
select SPL_OF_TRANSLATE
|
|
select SPL_PINCTRL
|
|
select SPL_REGMAP
|
|
select SPL_DM_RESET
|
|
select SPL_SERIAL_SUPPORT
|
|
select SPL_SPI_LOAD
|
|
select SPL_SYSCON
|
|
select SPL_WATCHDOG_SUPPORT if WATCHDOG
|
|
imply BOOTSTAGE_STASH if SPL_BOOTSTAGE
|
|
imply SPL_BOOTSTAGE if BOOTSTAGE
|
|
imply SPL_DISPLAY_PRINT
|
|
imply SPL_LIBDISK_SUPPORT
|
|
|
|
config SYS_SOC
|
|
default "stm32mp"
|
|
|
|
config SYS_MALLOC_LEN
|
|
default 0x2000000
|
|
|
|
config ENV_SIZE
|
|
default 0x2000
|
|
|
|
config STM32MP15x
|
|
bool "Support STMicroelectronics STM32MP15x Soc"
|
|
select ARCH_SUPPORT_PSCI if !TFABOOT
|
|
select ARM_SMCCC if TFABOOT
|
|
select CPU_V7A
|
|
select CPU_V7_HAS_NONSEC if !TFABOOT
|
|
select CPU_V7_HAS_VIRT
|
|
select OF_BOARD_SETUP
|
|
select PINCTRL_STM32
|
|
select STM32_RCC
|
|
select STM32_RESET
|
|
select STM32_SERIAL
|
|
select SYS_ARCH_TIMER
|
|
imply SYSRESET_PSCI if TFABOOT
|
|
imply SYSRESET_SYSCON if !TFABOOT
|
|
help
|
|
support of STMicroelectronics SOC STM32MP15x family
|
|
STM32MP157, STM32MP153 or STM32MP151
|
|
STMicroelectronics MPU with core ARMv7
|
|
dual core A7 for STM32MP157/3, monocore for STM32MP151
|
|
target all the STMicroelectronics board with SOC STM32MP1 family
|
|
|
|
choice
|
|
prompt "STM32MP15x board select"
|
|
optional
|
|
|
|
config TARGET_ST_STM32MP15x
|
|
bool "STMicroelectronics STM32MP15x boards"
|
|
select STM32MP15x
|
|
imply BOOTCOUNT_LIMIT
|
|
imply BOOTSTAGE
|
|
imply CMD_BOOTCOUNT
|
|
imply CMD_BOOTSTAGE
|
|
imply CMD_CLS if CMD_BMP
|
|
imply DISABLE_CONSOLE
|
|
imply PRE_CONSOLE_BUFFER
|
|
imply SILENT_CONSOLE
|
|
help
|
|
target the STMicroelectronics board with SOC STM32MP15x
|
|
managed by board/st/stm32mp1:
|
|
Evalulation board (EV1) or Discovery board (DK1 and DK2).
|
|
The difference between board are managed with devicetree
|
|
|
|
config TARGET_DH_STM32MP1_PDK2
|
|
bool "DH STM32MP1 PDK2"
|
|
select STM32MP15x
|
|
imply BOOTCOUNT_LIMIT
|
|
imply CMD_BOOTCOUNT
|
|
help
|
|
Target the DH PDK2 development kit with STM32MP15x SoM.
|
|
|
|
endchoice
|
|
|
|
config SYS_TEXT_BASE
|
|
default 0xC0100000
|
|
|
|
config NR_DRAM_BANKS
|
|
default 1
|
|
|
|
config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_MMC2
|
|
hex "Partition on MMC2 to use to load U-Boot from"
|
|
depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
|
|
default 1
|
|
help
|
|
Partition on the second MMC to load U-Boot from when the MMC is being
|
|
used in raw mode
|
|
|
|
config STM32_ETZPC
|
|
bool "STM32 Extended TrustZone Protection"
|
|
depends on STM32MP15x
|
|
default y
|
|
help
|
|
Say y to enable STM32 Extended TrustZone Protection
|
|
|
|
config CMD_STM32PROG
|
|
bool "command stm32prog for STM32CudeProgrammer"
|
|
select DFU
|
|
select DFU_RAM
|
|
select DFU_VIRT
|
|
help
|
|
activate a specific command stm32prog for STM32MP soc family
|
|
witch update the device with the tools STM32CubeProgrammer,
|
|
using UART with STM32 protocol or USB with DFU protocol
|
|
NB: access to not volatile memory (NOR/NAND/SD/eMMC) is based
|
|
on U-Boot DFU framework
|
|
|
|
config CMD_STM32KEY
|
|
bool "command stm32key to fuse public key hash"
|
|
default y
|
|
depends on CMD_FUSE
|
|
help
|
|
fuse public key hash in corresponding fuse used to authenticate
|
|
binary.
|
|
|
|
|
|
config PRE_CON_BUF_ADDR
|
|
default 0xC02FF000
|
|
|
|
config PRE_CON_BUF_SZ
|
|
default 4096
|
|
|
|
config BOOTSTAGE_STASH_ADDR
|
|
default 0xC3000000
|
|
|
|
if BOOTCOUNT_LIMIT
|
|
config SYS_BOOTCOUNT_SINGLEWORD
|
|
default y
|
|
|
|
# TAMP_BOOTCOUNT = TAMP_BACKUP_REGISTER(21)
|
|
config SYS_BOOTCOUNT_ADDR
|
|
default 0x5C00A154
|
|
endif
|
|
|
|
if DEBUG_UART
|
|
|
|
config DEBUG_UART_BOARD_INIT
|
|
default y
|
|
|
|
# debug on UART4 by default
|
|
config DEBUG_UART_BASE
|
|
default 0x40010000
|
|
|
|
# clock source is HSI on reset
|
|
config DEBUG_UART_CLOCK
|
|
default 64000000
|
|
endif
|
|
|
|
source "board/st/stm32mp1/Kconfig"
|
|
source "board/dhelectronics/dh_stm32mp1/Kconfig"
|
|
|
|
endif
|