2016-08-17 15:08:22 +00:00
#
# Partition table
#
# The partition table is not a real component that gets linked into
# the project. Instead, it is a standalone project to generate
# the partition table binary as part of the build process. This
# binary is then added to the list of files for esptool.py to flash.
#
2018-04-19 04:42:26 +00:00
.PHONY : partition_table partition_table -flash partition_table -clean partition_table_get_info
2016-08-17 15:08:22 +00:00
2018-04-26 02:07:27 +00:00
PARTITION_MD5_OPT :=
2018-07-13 01:52:57 +00:00
i f n d e f C O N F I G _ P A R T I T I O N _ T A B L E _ M D 5
2018-04-26 02:07:27 +00:00
PARTITION_MD5_OPT := "--disable-md5sum"
2018-02-16 10:12:16 +00:00
e n d i f
2018-04-26 02:07:27 +00:00
PARTITION_FLASHSIZE_OPT :=
2018-04-20 06:57:15 +00:00
i f n e q ( "$(CONFIG_ESPTOOLPY_FLASHSIZE)" , "" )
2018-04-26 02:07:27 +00:00
PARTITION_FLASHSIZE_OPT := --flash-size $( CONFIG_ESPTOOLPY_FLASHSIZE)
2018-04-20 06:57:15 +00:00
e n d i f
2018-07-13 01:52:57 +00:00
PARTITION_SECURE_OPT :=
i f d e f C O N F I G _ S E C U R E _ B O O T _ E N A B L E D
i f n d e f C O N F I G _ S E C U R E _ B O O T _ A L L O W _ S H O R T _ A P P _ P A R T I T I O N
PARTITION_SECURE_OPT += --secure
e n d i f
e n d i f
2018-04-19 04:42:26 +00:00
# Address of partition table
PARTITION_TABLE_OFFSET := $( CONFIG_PARTITION_TABLE_OFFSET)
PARTITION_TABLE_OFFSET_ARG := --offset $( PARTITION_TABLE_OFFSET)
2016-08-17 15:08:22 +00:00
2018-07-13 01:52:57 +00:00
GEN_ESP32PART := $( PYTHON) $( COMPONENT_PATH) /gen_esp32part.py -q $( PARTITION_MD5_OPT) $( PARTITION_FLASHSIZE_OPT) $( PARTITION_TABLE_OFFSET_ARG) $( PARTITION_SECURE_OPT)
2018-04-19 04:42:26 +00:00
GET_PART_INFO := $( COMPONENT_PATH) /parttool.py -q
2016-11-07 03:35:23 +00:00
2017-06-23 04:08:01 +00:00
# if CONFIG_PARTITION_TABLE_FILENAME is unset, means we haven't re-generated config yet...
i f n e q ( "$(CONFIG_PARTITION_TABLE_FILENAME)" , "" )
2016-12-21 18:18:42 +00:00
i f n d e f P A R T I T I O N _ T A B L E _ C S V _ P A T H
2016-08-17 15:08:22 +00:00
# Path to partition CSV file is relative to project path for custom
2017-10-18 12:43:43 +00:00
# partition CSV files, but relative to component dir otherwise.
2016-08-17 15:08:22 +00:00
PARTITION_TABLE_ROOT := $( call dequote,$( if $( CONFIG_PARTITION_TABLE_CUSTOM) ,$( PROJECT_PATH) ,$( COMPONENT_PATH) ) )
2017-10-20 04:14:41 +00:00
PARTITION_TABLE_CSV_PATH := $( call dequote,$( abspath $( PARTITION_TABLE_ROOT) /$( call dequote,$( CONFIG_PARTITION_TABLE_FILENAME) ) ) )
2016-12-21 18:18:42 +00:00
e n d i f
2016-08-17 15:08:22 +00:00
2017-06-23 04:08:01 +00:00
PARTITION_TABLE_CSV_NAME := $( notdir $( PARTITION_TABLE_CSV_PATH) )
PARTITION_TABLE_BIN := $( BUILD_DIR_BASE) /$( PARTITION_TABLE_CSV_NAME:.csv= .bin)
2016-08-17 15:08:22 +00:00
2016-12-19 02:06:21 +00:00
i f d e f C O N F I G _ S E C U R E _ B O O T _ B U I L D _ S I G N E D _ B I N A R I E S
2016-11-07 04:45:57 +00:00
PARTITION_TABLE_BIN_UNSIGNED := $( PARTITION_TABLE_BIN:.bin= -unsigned.bin)
# add an extra signing step for secure partition table
2016-11-25 03:13:05 +00:00
$(PARTITION_TABLE_BIN) : $( PARTITION_TABLE_BIN_UNSIGNED ) $( SDKCONFIG_MAKEFILE ) $( SECURE_BOOT_SIGNING_KEY )
$( ESPSECUREPY) sign_data --keyfile $( SECURE_BOOT_SIGNING_KEY) -o $@ $<
2016-11-07 04:45:57 +00:00
e l s e
# secure bootloader disabled, both files are the same
PARTITION_TABLE_BIN_UNSIGNED := $( PARTITION_TABLE_BIN)
2016-11-03 06:33:30 +00:00
e n d i f
2016-08-17 15:08:22 +00:00
2018-08-20 07:39:56 +00:00
$(PARTITION_TABLE_BIN_UNSIGNED) : $( PARTITION_TABLE_CSV_PATH ) $( SDKCONFIG_MAKEFILE ) | check_python_dependencies
2016-08-17 15:08:22 +00:00
@echo " Building partitions from $( PARTITION_TABLE_CSV_PATH) ... "
2016-11-11 01:29:38 +00:00
$( GEN_ESP32PART) $< $@
2016-08-17 15:08:22 +00:00
2019-02-13 09:32:23 +00:00
all_binaries : $( PARTITION_TABLE_BIN ) partition_table_get_info check_table_contents
2018-04-19 04:42:26 +00:00
partition_table_get_info : $( PARTITION_TABLE_BIN )
2018-11-15 21:01:41 +00:00
$( eval PHY_DATA_OFFSET:= $( shell $( GET_PART_INFO) --partition-type data --partition-subtype phy \
--partition-table-file $( PARTITION_TABLE_BIN) get_partition_info --info offset) )
$( eval APP_OFFSET:= $( shell $( GET_PART_INFO) --partition-boot-default \
--partition-table-file $( PARTITION_TABLE_BIN) get_partition_info --info offset) )
$( eval OTA_DATA_OFFSET:= $( shell $( GET_PART_INFO) --partition-type data --partition-subtype ota \
--partition-table-file $( PARTITION_TABLE_BIN) get_partition_info --info offset) )
$( eval OTA_DATA_SIZE:= $( shell $( GET_PART_INFO) --partition-type data --partition-subtype ota \
--partition-table-file $( PARTITION_TABLE_BIN) get_partition_info --info size) )
2019-02-13 09:32:23 +00:00
$( eval FACTORY_OFFSET:= $( shell $( GET_PART_INFO) --partition-type app --partition-subtype factory \
--partition-table-file $( PARTITION_TABLE_BIN) get_partition_info --info offset) )
2018-04-19 04:42:26 +00:00
export APP_OFFSET
export PHY_DATA_OFFSET
2018-06-25 06:53:10 +00:00
export OTA_DATA_OFFSET
export OTA_DATA_SIZE
2016-08-18 09:11:27 +00:00
2019-02-13 09:32:23 +00:00
# If anti-rollback option is set then factory partition should not be in Partition Table.
# In this case, should be used the partition table with two ota app without the factory.
check_table_contents : partition_table_get_info
2019-05-09 12:10:35 +00:00
@echo $( if $( CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK) , $( if $( FACTORY_OFFSET) , $( error "ERROR: Anti-rollback option is enabled. Partition table should consist of two ota app without factory partition." ) , "" ) , "" )
2019-02-13 09:32:23 +00:00
2016-11-07 03:35:23 +00:00
PARTITION_TABLE_FLASH_CMD = $( ESPTOOLPY_SERIAL) write_flash $( PARTITION_TABLE_OFFSET) $( PARTITION_TABLE_BIN)
ESPTOOL_ALL_FLASH_ARGS += $( PARTITION_TABLE_OFFSET) $( PARTITION_TABLE_BIN)
2016-08-17 15:08:22 +00:00
2018-09-03 09:42:10 +00:00
partition_table : $( PARTITION_TABLE_BIN ) partition_table_get_info | check_python_dependencies
2016-08-17 15:08:22 +00:00
@echo "Partition table binary generated. Contents:"
@echo $( SEPARATOR)
2016-11-11 01:29:38 +00:00
$( GEN_ESP32PART) $<
2016-08-17 15:08:22 +00:00
@echo $( SEPARATOR)
@echo "Partition flashing command:"
@echo " $( PARTITION_TABLE_FLASH_CMD) "
2018-09-03 09:42:10 +00:00
partition_table-flash : $( PARTITION_TABLE_BIN ) | check_python_dependencies
2016-08-17 15:08:22 +00:00
@echo "Flashing partition table..."
2016-11-11 01:29:38 +00:00
$( PARTITION_TABLE_FLASH_CMD)
2016-08-17 15:08:22 +00:00
partition_table-clean :
2016-11-11 01:29:38 +00:00
rm -f $( PARTITION_TABLE_BIN)
2016-08-18 09:11:27 +00:00
clean : partition_table -clean
2017-06-23 04:08:01 +00:00
e n d i f