e74978cc03
Added mchp mec zephyr image generator python script. It takes zephyr.bin as input and produces zephyr.mchp.bin. The default behavior is to not pad to SPI flash size. (Enable through CONFIG_MCHP_MEC_UNSIGNED_HEADER=y and CONFIG_MCHP_MEC_HEADER_FLASH_SIZE_256K=y) zephyr.mchp.bin is composed of: 1. First 4KB contains TAG at offset 0 and header at offset 0x100 2. Offset 0x1000 is the start of zephyr.bin which has been padded to a multiple of 128 bytes. 3. Boot-ROM EC Info Block (128 bytes) 4. Boot-ROM Co-Signature Block (96 bytes) 5. Boot-ROM trailer (160 bytes) contains the SHA-384 digest of 2-4. Signed-off-by: Jay Vasanth <jay.vasanth@microchip.com>
223 lines
6.3 KiB
Plaintext
223 lines
6.3 KiB
Plaintext
# Microchip MEC MCU line
|
|
|
|
# Copyright (c) 2018, Intel Corporation
|
|
# Copyright (c) 2022, Microchip Technology Inc.
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
config SOC_FAMILY_MEC
|
|
bool
|
|
|
|
if SOC_FAMILY_MEC
|
|
config SOC_FAMILY
|
|
string
|
|
default "microchip_mec"
|
|
|
|
menuconfig MCHP_MEC_UNSIGNED_HEADER
|
|
bool "Create an unsigned output binary with MCHP MEC binary header"
|
|
help
|
|
On Microchip MEC series chip, the ROM code loads firmware image from flash
|
|
to RAM using a TAG to locate a Header which specifies the location and
|
|
size of the firmware image. Enable this to invoke the mec_spi_gen tool
|
|
which generates an SPI image with TAG, Header, and firmware binary. This
|
|
tool does not produce a signed image which can be authenticated by the
|
|
Boot-ROM. Use the full Microchip SPI image generator program for
|
|
authentication and all other Boot-ROM loader features. Refer to the MCHP
|
|
EVB boards for an example.
|
|
|
|
if MCHP_MEC_UNSIGNED_HEADER
|
|
|
|
config MCHP_MEC_HEADER_CHIP
|
|
string
|
|
default "mec152x" if SOC_SERIES_MEC1501X
|
|
default "mec172x" if SOC_SERIES_MEC172X
|
|
|
|
choice MCHP_MEC_HEADER_SPI_FREQ_MHZ_CHOICE
|
|
prompt "Clock rate to use for SPI flash"
|
|
default MCHP_MEC_HEADER_SPI_FREQ_MHZ_12
|
|
help
|
|
This selects the SPI clock frequency that will be used for loading
|
|
firmware binary from flash to RAM.
|
|
|
|
config MCHP_MEC_HEADER_SPI_FREQ_MHZ_12
|
|
bool "SPI flash clock rate of 12 MHz"
|
|
|
|
config MCHP_MEC_HEADER_SPI_FREQ_MHZ_16
|
|
bool "SPI flash clock rate of 16 MHz"
|
|
|
|
config MCHP_MEC_HEADER_SPI_FREQ_MHZ_24
|
|
bool "SPI flash clock rate of 24 MHz"
|
|
|
|
config MCHP_MEC_HEADER_SPI_FREQ_MHZ_48
|
|
bool "SPI flash clock rate of 48 MHz"
|
|
|
|
endchoice
|
|
|
|
config MCHP_MEC_HEADER_SPI_FREQ_MHZ
|
|
int
|
|
default 12 if MCHP_MEC_HEADER_SPI_FREQ_MHZ_12
|
|
default 25 if MCHP_MEC_HEADER_SPI_FREQ_MHZ_16
|
|
default 24 if MCHP_MEC_HEADER_SPI_FREQ_MHZ_24
|
|
default 48 if MCHP_MEC_HEADER_SPI_FREQ_MHZ_48
|
|
|
|
choice MCHP_MEC_HEADER_SPI_READ_MODE_CHOICE
|
|
prompt "Reading mode used by the SPI flash"
|
|
default MCHP_MEC_HEADER_SPI_READ_MODE_FAST
|
|
help
|
|
This sets the reading mode that can be used by the SPI flash.
|
|
Reading modes supported are normal, fast, dual, and quad.
|
|
|
|
config MCHP_MEC_HEADER_SPI_READ_MODE_NORMAL
|
|
bool "SPI flash operates full-duplex with frequency (< 25 MHz)"
|
|
|
|
config MCHP_MEC_HEADER_SPI_READ_MODE_FAST
|
|
bool "SPI flash operates full-duplex with fast reading mode"
|
|
|
|
config MCHP_MEC_HEADER_SPI_READ_MODE_DUAL
|
|
bool "SPI flash operates with dual data reading mode"
|
|
|
|
config MCHP_MEC_HEADER_SPI_READ_MODE_QUAD
|
|
bool "SPI flash operates with quad data reading mode"
|
|
|
|
endchoice
|
|
|
|
config MCHP_MEC_HEADER_SPI_READ_MODE
|
|
string
|
|
default "slow" if MCHP_MEC_HEADER_SPI_READ_MODE_NORMAL
|
|
default "fast" if MCHP_MEC_HEADER_SPI_READ_MODE_FAST
|
|
default "dual" if MCHP_MEC_HEADER_SPI_READ_MODE_DUAL
|
|
default "quad" if MCHP_MEC_HEADER_SPI_READ_MODE_QUAD
|
|
|
|
choice MCHP_MEC_HEADER_FLASH_SIZE_CHOICE
|
|
prompt "Flash size"
|
|
default MCHP_MEC_HEADER_FLASH_SIZE_16M
|
|
help
|
|
This sets the SPI flash size.
|
|
|
|
config MCHP_MEC_HEADER_FLASH_SIZE_256K
|
|
bool "SPI flash size 256K Bytes"
|
|
help
|
|
The SPI flash size is 256K Bytes.
|
|
|
|
config MCHP_MEC_HEADER_FLASH_SIZE_512K
|
|
bool "SPI flash size 512K Bytes"
|
|
help
|
|
The SPI flash size is 512K Bytes.
|
|
|
|
config MCHP_MEC_HEADER_FLASH_SIZE_1M
|
|
bool "SPI flash size 1M Bytes"
|
|
help
|
|
The SPI flash size is 1M Bytes.
|
|
|
|
config MCHP_MEC_HEADER_FLASH_SIZE_2M
|
|
bool "SPI flash size 2M Bytes"
|
|
help
|
|
The SPI flash size is 2M Bytes.
|
|
|
|
config MCHP_MEC_HEADER_FLASH_SIZE_4M
|
|
bool "SPI flash size 4M Bytes"
|
|
help
|
|
The SPI flash size is 4M Bytes.
|
|
|
|
config MCHP_MEC_HEADER_FLASH_SIZE_8M
|
|
bool "SPI flash size 8M Bytes"
|
|
help
|
|
The SPI flash size is 8M Bytes.
|
|
|
|
config MCHP_MEC_HEADER_FLASH_SIZE_16M
|
|
bool "SPI flash size 16M Bytes"
|
|
help
|
|
The SPI flash size is 16M Bytes.
|
|
|
|
endchoice
|
|
|
|
config MCHP_MEC_HEADER_FLASH_SIZE
|
|
int
|
|
default 256 if MCHP_MEC_HEADER_FLASH_SIZE_256K
|
|
default 512 if MCHP_MEC_HEADER_FLASH_SIZE_512K
|
|
default 1024 if MCHP_MEC_HEADER_FLASH_SIZE_1M
|
|
default 2048 if MCHP_MEC_HEADER_FLASH_SIZE_2M
|
|
default 4096 if MCHP_MEC_HEADER_FLASH_SIZE_4M
|
|
default 8192 if MCHP_MEC_HEADER_FLASH_SIZE_8M
|
|
default 16384 if MCHP_MEC_HEADER_FLASH_SIZE_16M
|
|
|
|
choice MCHP_MEC_HEADER_SPI_DRVSTR_CHOICE
|
|
prompt "Flash drive strength"
|
|
default MCHP_MEC_HEADER_SPI_DRVSTR_1X
|
|
help
|
|
This sets the SPI flash size.
|
|
|
|
config MCHP_MEC_HEADER_SPI_DRVSTR_1X
|
|
bool "SPI flash drive strength multiplier 1"
|
|
help
|
|
The SPI flash size is 256K Bytes.
|
|
|
|
config MCHP_MEC_HEADER_SPI_DRVSTR_2X
|
|
bool "SPI flash drive strength multiplier 2"
|
|
help
|
|
The SPI flash size is 256K Bytes.
|
|
|
|
config MCHP_MEC_HEADER_SPI_DRVSTR_4X
|
|
bool "SPI flash drive strength multiplier 4"
|
|
help
|
|
The SPI flash size is 512K Bytes.
|
|
|
|
config MCHP_MEC_HEADER_SPI_DRVSTR_6X
|
|
bool "SPI flash drive strength multiplier 6"
|
|
help
|
|
The SPI flash size is 1M Bytes.
|
|
|
|
endchoice
|
|
|
|
config MCHP_MEC_HEADER_SPI_DRVSTR
|
|
string
|
|
default "1x" if MCHP_MEC_HEADER_SPI_DRVSTR_1X
|
|
default "2x" if MCHP_MEC_HEADER_SPI_DRVSTR_2X
|
|
default "4x" if MCHP_MEC_HEADER_SPI_DRVSTR_4X
|
|
default "6x" if MCHP_MEC_HEADER_SPI_DRVSTR_6X
|
|
|
|
choice MCHP_MEC_HEADER_SPI_SLEW_RATE_CHOICE
|
|
prompt "Slew rate of SPI pins"
|
|
default MCHP_MEC_HEADER_SPI_SLEW_RATE_SLOW
|
|
help
|
|
This sets the slew rate of the SPI pins. Default is slow
|
|
slew rate which is 1/2 the AHB clock rate. Fast slew is the
|
|
AHB clock rate.
|
|
|
|
config MCHP_MEC_HEADER_SPI_SLEW_RATE_SLOW
|
|
bool "SPI pins slew rate is 1/2 AHB frequency"
|
|
|
|
config MCHP_MEC_HEADER_SPI_SLEW_RATE_FAST
|
|
bool "SPI pins slew rate is 1x AHB frequency"
|
|
|
|
endchoice
|
|
|
|
config MCHP_MEC_HEADER_SPI_SLEW_RATE
|
|
string
|
|
default "slow" if MCHP_MEC_HEADER_SPI_SLEW_RATE_SLOW
|
|
default "fast" if MCHP_MEC_HEADER_SPI_SLEW_RATE_FAST
|
|
|
|
config MCHP_MEC_HEADER_FLASH_SPI_MODE
|
|
int "Flash SPI Mode"
|
|
range 0 7
|
|
default 0
|
|
help
|
|
This three bit value corresponds to the QMSPI controllers clock idle and
|
|
input/output data phases. Bits[0:2] are CPOL:CPHA_MOSI:CPHA_MISO. Refer
|
|
to the data sheet. Default value is 0 corresponding to SPI Mode 0
|
|
signalling.
|
|
Setting this field to 0 selects mode 0, CPOL=0, CPHA_MOSI=0, CPHA_MISO=0
|
|
Setting this filed to 7 selects mode 3, CPOL=1, CPHA_MOSI=1, CPHA_MISO=1
|
|
|
|
config MCHP_HEADER_VERBOSE_OUTPUT
|
|
bool "Debug console output"
|
|
default n
|
|
help
|
|
Enable print output from SPI generator script for debug
|
|
|
|
endif # MCHP_MEC_UNSIGNED_HEADER
|
|
|
|
# Select SoC Part No. and configuration options
|
|
source "soc/arm/microchip_mec/*/Kconfig.soc"
|
|
|
|
endif # SOC_FAMILY_MEC
|