merge esp_flash_data_types into esp_flash_partitions

This commit is contained in:
morris 2019-03-14 22:03:04 +08:00 committed by bot
parent f1e9078cb0
commit fae39dc326
12 changed files with 75 additions and 102 deletions

View File

@ -36,7 +36,7 @@
#include "rom/crc.h" #include "rom/crc.h"
#include "soc/dport_reg.h" #include "soc/dport_reg.h"
#include "esp_log.h" #include "esp_log.h"
#include "esp_flash_data_types.h" #include "esp_flash_partitions.h"
#include "bootloader_common.h" #include "bootloader_common.h"
#include "sys/param.h" #include "sys/param.h"
#include "esp_system.h" #include "esp_system.h"

View File

@ -21,7 +21,7 @@
#include "esp_err.h" #include "esp_err.h"
#include "esp_partition.h" #include "esp_partition.h"
#include "esp_image_format.h" #include "esp_image_format.h"
#include "esp_flash_data_types.h" #include "esp_flash_partitions.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" extern "C"

View File

@ -13,7 +13,7 @@
// limitations under the License. // limitations under the License.
#pragma once #pragma once
#include "esp_flash_data_types.h" #include "esp_flash_partitions.h"
#include "esp_image_format.h" #include "esp_image_format.h"
/// Type of hold a GPIO in low state /// Type of hold a GPIO in low state

View File

@ -0,0 +1,2 @@
#warning esp_flash_data_types.h has been merged into esp_flash_partitions.h, please include esp_flash_partitions.h instead
#include "esp_flash_partitions.h"

View File

@ -11,14 +11,37 @@
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
#ifndef __ESP_FLASH_PARTITIONS_H #pragma once
#define __ESP_FLASH_PARTITIONS_H
#include "esp_err.h" #include "esp_err.h"
#include "esp_flash_data_types.h" #include "esp_types.h"
#include <stdbool.h>
#include "sdkconfig.h" #include "sdkconfig.h"
#ifdef __cplusplus
extern "C" {
#endif
#define ESP_PARTITION_MAGIC 0x50AA
#define ESP_PARTITION_MAGIC_MD5 0xEBEB
#define PART_TYPE_APP 0x00
#define PART_SUBTYPE_FACTORY 0x00
#define PART_SUBTYPE_OTA_FLAG 0x10
#define PART_SUBTYPE_OTA_MASK 0x0f
#define PART_SUBTYPE_TEST 0x20
#define PART_TYPE_DATA 0x01
#define PART_SUBTYPE_DATA_OTA 0x00
#define PART_SUBTYPE_DATA_RF 0x01
#define PART_SUBTYPE_DATA_WIFI 0x02
#define PART_SUBTYPE_DATA_NVS_KEYS 0x04
#define PART_SUBTYPE_DATA_EFUSE_EM 0x05
#define PART_TYPE_END 0xff
#define PART_SUBTYPE_END 0xff
#define PART_FLAG_ENCRYPTED (1<<0)
/* Pre-partition table fixed flash offsets */ /* Pre-partition table fixed flash offsets */
#define ESP_BOOTLOADER_DIGEST_OFFSET 0x0 #define ESP_BOOTLOADER_DIGEST_OFFSET 0x0
#define ESP_BOOTLOADER_OFFSET 0x1000 /* Offset of bootloader image. Has matching value in bootloader KConfig.projbuild file. */ #define ESP_BOOTLOADER_OFFSET 0x1000 /* Offset of bootloader image. Has matching value in bootloader KConfig.projbuild file. */
@ -27,6 +50,43 @@
#define ESP_PARTITION_TABLE_MAX_LEN 0xC00 /* Maximum length of partition table data */ #define ESP_PARTITION_TABLE_MAX_LEN 0xC00 /* Maximum length of partition table data */
#define ESP_PARTITION_TABLE_MAX_ENTRIES (ESP_PARTITION_TABLE_MAX_LEN / sizeof(esp_partition_info_t)) /* Maximum length of partition table data, including terminating entry */ #define ESP_PARTITION_TABLE_MAX_ENTRIES (ESP_PARTITION_TABLE_MAX_LEN / sizeof(esp_partition_info_t)) /* Maximum length of partition table data, including terminating entry */
/// OTA_DATA states for checking operability of the app.
typedef enum {
ESP_OTA_IMG_NEW = 0x0U, /*!< Monitor the first boot. In bootloader this state is changed to ESP_OTA_IMG_PENDING_VERIFY. */
ESP_OTA_IMG_PENDING_VERIFY = 0x1U, /*!< First boot for this app was. If while the second boot this state is then it will be changed to ABORTED. */
ESP_OTA_IMG_VALID = 0x2U, /*!< App was confirmed as workable. App can boot and work without limits. */
ESP_OTA_IMG_INVALID = 0x3U, /*!< App was confirmed as non-workable. This app will not selected to boot at all. */
ESP_OTA_IMG_ABORTED = 0x4U, /*!< App could not confirm the workable or non-workable. In bootloader IMG_PENDING_VERIFY state will be changed to IMG_ABORTED. This app will not selected to boot at all. */
ESP_OTA_IMG_UNDEFINED = 0xFFFFFFFFU, /*!< Undefined. App can boot and work without limits. */
} esp_ota_img_states_t;
/* OTA selection structure (two copies in the OTA data partition.)
Size of 32 bytes is friendly to flash encryption */
typedef struct {
uint32_t ota_seq;
uint8_t seq_label[20];
uint32_t ota_state;
uint32_t crc; /* CRC32 of ota_seq field only */
} esp_ota_select_entry_t;
typedef struct {
uint32_t offset;
uint32_t size;
} esp_partition_pos_t;
/* Structure which describes the layout of partition table entry.
* See docs/partition_tables.rst for more information about individual fields.
*/
typedef struct {
uint16_t magic;
uint8_t type;
uint8_t subtype;
esp_partition_pos_t pos;
uint8_t label[16];
uint32_t flags;
} esp_partition_info_t;
/* @brief Verify the partition table /* @brief Verify the partition table
* *
* @param partition_table Pointer to at least ESP_PARTITION_TABLE_MAX_ENTRIES of potential partition table data. (ESP_PARTITION_TABLE_MAX_LEN bytes.) * @param partition_table Pointer to at least ESP_PARTITION_TABLE_MAX_ENTRIES of potential partition table data. (ESP_PARTITION_TABLE_MAX_LEN bytes.)
@ -43,5 +103,6 @@ inline static __attribute__((deprecated)) esp_err_t esp_partition_table_basic_ve
{ {
return esp_partition_table_verify(partition_table, log_errors, num_partitions); return esp_partition_table_verify(partition_table, log_errors, num_partitions);
} }
#ifdef __cplusplus
}
#endif #endif

View File

@ -21,7 +21,7 @@ extern "C"
{ {
#endif #endif
#include "esp_flash_data_types.h" #include "esp_flash_partitions.h"
#include "soc/soc.h" #include "soc/soc.h"
#define SPI_SEC_SIZE 0x1000 #define SPI_SEC_SIZE 0x1000

View File

@ -21,7 +21,6 @@
#include "rom/crc.h" #include "rom/crc.h"
#include "rom/ets_sys.h" #include "rom/ets_sys.h"
#include "rom/gpio.h" #include "rom/gpio.h"
#include "esp_flash_data_types.h"
#include "esp_secure_boot.h" #include "esp_secure_boot.h"
#include "esp_flash_partitions.h" #include "esp_flash_partitions.h"
#include "bootloader_flash.h" #include "bootloader_flash.h"

View File

@ -18,7 +18,6 @@
#include "esp_image_format.h" #include "esp_image_format.h"
#include "esp_flash_encrypt.h" #include "esp_flash_encrypt.h"
#include "esp_flash_partitions.h" #include "esp_flash_partitions.h"
#include "esp_flash_data_types.h"
#include "esp_secure_boot.h" #include "esp_secure_boot.h"
#include "esp_efuse.h" #include "esp_efuse.h"
#include "esp_log.h" #include "esp_log.h"
@ -340,11 +339,11 @@ esp_err_t esp_flash_encrypt_region(uint32_t src_addr, size_t data_length)
return err; return err;
} }
void esp_flash_write_protect_crypt_cnt() void esp_flash_write_protect_crypt_cnt()
{ {
uint32_t efuse_blk0 = REG_READ(EFUSE_BLK0_RDATA0_REG); uint32_t efuse_blk0 = REG_READ(EFUSE_BLK0_RDATA0_REG);
bool flash_crypt_wr_dis = efuse_blk0 & EFUSE_WR_DIS_FLASH_CRYPT_CNT; bool flash_crypt_wr_dis = efuse_blk0 & EFUSE_WR_DIS_FLASH_CRYPT_CNT;
if(!flash_crypt_wr_dis) { if(!flash_crypt_wr_dis) {
REG_WRITE(EFUSE_BLK0_WDATA0_REG, EFUSE_WR_DIS_FLASH_CRYPT_CNT); REG_WRITE(EFUSE_BLK0_WDATA0_REG, EFUSE_WR_DIS_FLASH_CRYPT_CNT);
esp_efuse_burn_new_values(); esp_efuse_burn_new_values();
} }

View File

@ -16,7 +16,6 @@
#include "esp_log.h" #include "esp_log.h"
#include "rom/spi_flash.h" #include "rom/spi_flash.h"
#include "rom/md5_hash.h" #include "rom/md5_hash.h"
#include "esp_flash_data_types.h"
static const char *TAG = "flash_parts"; static const char *TAG = "flash_parts";

View File

@ -1,86 +0,0 @@
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef __ESP_BIN_TYPES_H__
#define __ESP_BIN_TYPES_H__
#include <stdint.h>
#ifdef __cplusplus
extern "C"
{
#endif
#define ESP_PARTITION_MAGIC 0x50AA
#define ESP_PARTITION_MAGIC_MD5 0xEBEB
/// OTA_DATA states for checking operability of the app.
typedef enum {
ESP_OTA_IMG_NEW = 0x0U, /*!< Monitor the first boot. In bootloader this state is changed to ESP_OTA_IMG_PENDING_VERIFY. */
ESP_OTA_IMG_PENDING_VERIFY = 0x1U, /*!< First boot for this app was. If while the second boot this state is then it will be changed to ABORTED. */
ESP_OTA_IMG_VALID = 0x2U, /*!< App was confirmed as workable. App can boot and work without limits. */
ESP_OTA_IMG_INVALID = 0x3U, /*!< App was confirmed as non-workable. This app will not selected to boot at all. */
ESP_OTA_IMG_ABORTED = 0x4U, /*!< App could not confirm the workable or non-workable. In bootloader IMG_PENDING_VERIFY state will be changed to IMG_ABORTED. This app will not selected to boot at all. */
ESP_OTA_IMG_UNDEFINED = 0xFFFFFFFFU, /*!< Undefined. App can boot and work without limits. */
} esp_ota_img_states_t;
/* OTA selection structure (two copies in the OTA data partition.)
Size of 32 bytes is friendly to flash encryption */
typedef struct {
uint32_t ota_seq;
uint8_t seq_label[20];
uint32_t ota_state;
uint32_t crc; /* CRC32 of ota_seq field only */
} esp_ota_select_entry_t;
typedef struct {
uint32_t offset;
uint32_t size;
} esp_partition_pos_t;
/* Structure which describes the layout of partition table entry.
* See docs/partition_tables.rst for more information about individual fields.
*/
typedef struct {
uint16_t magic;
uint8_t type;
uint8_t subtype;
esp_partition_pos_t pos;
uint8_t label[16];
uint32_t flags;
} esp_partition_info_t;
#define PART_TYPE_APP 0x00
#define PART_SUBTYPE_FACTORY 0x00
#define PART_SUBTYPE_OTA_FLAG 0x10
#define PART_SUBTYPE_OTA_MASK 0x0f
#define PART_SUBTYPE_TEST 0x20
#define PART_TYPE_DATA 0x01
#define PART_SUBTYPE_DATA_OTA 0x00
#define PART_SUBTYPE_DATA_RF 0x01
#define PART_SUBTYPE_DATA_WIFI 0x02
#define PART_SUBTYPE_DATA_NVS_KEYS 0x04
#define PART_SUBTYPE_DATA_EFUSE_EM 0x05
#define PART_TYPE_END 0xff
#define PART_SUBTYPE_END 0xff
#define PART_FLAG_ENCRYPTED (1<<0)
#ifdef __cplusplus
}
#endif
#endif //__ESP_BIN_TYPES_H__

View File

@ -19,7 +19,6 @@
#include <sys/lock.h> #include <sys/lock.h>
#include "esp_flash_partitions.h" #include "esp_flash_partitions.h"
#include "esp_attr.h" #include "esp_attr.h"
#include "esp_flash_data_types.h"
#include "esp_spi_flash.h" #include "esp_spi_flash.h"
#include "esp_partition.h" #include "esp_partition.h"
#include "esp_flash_encrypt.h" #include "esp_flash_encrypt.h"

View File

@ -23,7 +23,7 @@
#include <string> #include <string>
#include "sdkconfig.h" #include "sdkconfig.h"
#include "esp_flash_data_types.h" #include "esp_flash_partitions.h"
using namespace std; using namespace std;