mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-10 04:43:33 +00:00
feat(partition_table): Support primary subtypes partitions
This commit is contained in:
@@ -1,8 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
# SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
|
||||
# SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
from __future__ import division, print_function
|
||||
|
||||
import csv
|
||||
import io
|
||||
import os
|
||||
@@ -64,6 +62,9 @@ def _strip_trailing_ffs(binary_table):
|
||||
|
||||
|
||||
class CSVParserTests(Py23TestCase):
|
||||
def tearDown(self):
|
||||
gen_esp32part.primary_bootloader_offset = None
|
||||
gen_esp32part.offset_part_table = 0
|
||||
|
||||
def test_simple_partition(self):
|
||||
table = gen_esp32part.PartitionTable.from_csv(SIMPLE_CSV)
|
||||
@@ -182,6 +183,42 @@ first, app, ota_0, 0x200000, 1M
|
||||
t = gen_esp32part.PartitionTable.from_csv(csv)
|
||||
t.verify()
|
||||
|
||||
def test_bootloader_and_part_table_partitions_no_sdkconfig(self):
|
||||
csv = """
|
||||
bootloader, bootloader, primary, N/A, N/A
|
||||
"""
|
||||
with self.assertRaisesRegex(gen_esp32part.InputError, 'Primary bootloader offset is not defined. Please use --primary-bootloader-offset'):
|
||||
gen_esp32part.PartitionTable.from_csv(csv)
|
||||
|
||||
def test_bootloader_and_part_table_partitions(self):
|
||||
csv = """
|
||||
bootloader, bootloader, primary, N/A, N/A
|
||||
partition_table, partition_table, primary, N/A, N/A
|
||||
FactoryApp, app, factory, , 1M
|
||||
OtaBTLDR, bootloader, ota, , N/A
|
||||
OtaPrtTable, partition_table, ota, , N/A
|
||||
"""
|
||||
gen_esp32part.primary_bootloader_offset = 0x1000
|
||||
gen_esp32part.offset_part_table = 0x9000
|
||||
part_table_size = 0x1000
|
||||
bootloader_size = gen_esp32part.offset_part_table - gen_esp32part.primary_bootloader_offset
|
||||
t = gen_esp32part.PartitionTable.from_csv(csv)
|
||||
t.verify()
|
||||
# bootloader
|
||||
self.assertEqual(t[0].offset, gen_esp32part.primary_bootloader_offset)
|
||||
self.assertEqual(t[0].size, bootloader_size)
|
||||
# partition_table
|
||||
self.assertEqual(t[1].offset, gen_esp32part.offset_part_table)
|
||||
self.assertEqual(t[1].size, part_table_size)
|
||||
# FactoryApp
|
||||
self.assertEqual(t[2].offset, 0x10000)
|
||||
# OtaBTLDR
|
||||
self.assertEqual(t[3].offset, 0x110000)
|
||||
self.assertEqual(t[3].size, bootloader_size)
|
||||
# OtaPrtTable
|
||||
self.assertEqual(t[4].offset, 0x118000)
|
||||
self.assertEqual(t[4].size, part_table_size)
|
||||
|
||||
|
||||
class BinaryOutputTests(Py23TestCase):
|
||||
def test_binary_entry(self):
|
||||
@@ -369,7 +406,7 @@ class CommandLineTests(Py23TestCase):
|
||||
from_csv = gen_esp32part.PartitionTable.from_csv(f.read())
|
||||
self.assertEqual(_strip_trailing_ffs(from_csv.to_binary()), LONGER_BINARY_TABLE)
|
||||
|
||||
# run gen_esp32part.py to conver the CSV to binary again
|
||||
# run gen_esp32part.py to convert the CSV to binary again
|
||||
output = subprocess.check_output([sys.executable, '../gen_esp32part.py',
|
||||
csvpath, binpath], stderr=subprocess.STDOUT)
|
||||
self.assertNotIn(b'WARNING', output)
|
||||
|
Reference in New Issue
Block a user