arch/esp32_partition: read data from SPI Flash at designated

address (with decryption)

Signed-off-by: nuttxs <zhaoqing.zhang@sony.com>
This commit is contained in:
nuttxs
2025-02-25 16:17:17 +08:00
committed by Xiang Xiao
parent 72f3ac98e2
commit 720c6cce6f
2 changed files with 70 additions and 0 deletions
+20
View File
@@ -55,4 +55,24 @@ enum ota_img_bootseq
OTA_IMG_BOOT_SEQ_MAX
};
/****************************************************************************
* Name: esp32_partition_read_decrypt
*
* Description:
* Read data from SPI Flash at designated address. (with decryption)
*
* Input Parameters:
* label - Partition label
* offset - Offset in SPI Flash
* buf - Data buffer pointer
* size - Data number
*
* Returned Value:
* 0 if success or a negative value if fail.
*
****************************************************************************/
int esp32_partition_read_decrypt(const char *label, size_t offset,
void *buf, size_t size);
#endif /* __ARCH_XTENSA_INCLUDE_ESP32_PARTITION_H */
+50
View File
@@ -1038,6 +1038,56 @@ int esp32_partition_read(const char *label, size_t offset, void *buf,
return OK;
}
/****************************************************************************
* Name: esp32_partition_read_decrypt
*
* Description:
* Read data from SPI Flash at designated address. (with decryption)
*
* Input Parameters:
* label - Partition label
* offset - Offset in SPI Flash
* buf - Data buffer pointer
* size - Data number
*
* Returned Value:
* 0 if success or a negative value if fail.
*
****************************************************************************/
int esp32_partition_read_decrypt(const char *label, size_t offset, void *buf,
size_t size)
{
int ret;
int partion_offset;
DEBUGASSERT(label != NULL && buf != NULL);
struct mtd_dev_s *mtd;
partion_offset = partition_get_offset(label, strlen(label));
if (partion_offset < 0)
{
ferr("ERROR: Failed to get partition: %s offset\n", label);
return partion_offset;
}
mtd = esp32_spiflash_encrypt_get_mtd();
if (!mtd)
{
ferr("ERROR: Failed to get SPI flash MTD\n");
return -ENOSYS;
}
ret = MTD_READ(mtd, partion_offset + offset,
size, (uint8_t *)buf);
if (ret != size)
{
ferr("ERROR: Failed to get read data from MTD\n");
return -EIO;
}
return OK;
}
/****************************************************************************
* Name: esp32_partition_write
*