mirror of
https://github.com/espressif/esp-idf.git
synced 2025-11-17 10:12:13 +00:00
fix(esp_partition): fixes related to BDL update
This commit is contained in:
@@ -3,5 +3,5 @@
|
||||
components/esp_partition/test_apps:
|
||||
enable:
|
||||
- if: IDF_TARGET in ["esp32", "esp32c3"]
|
||||
temporary: true
|
||||
reason: the other targets are not tested yet
|
||||
temporary: false
|
||||
reason: sufficient to test on one Xtensa and one RISC-V target
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
| Supported Targets | ESP32 | ESP32-C3 |
|
||||
| ----------------- | ----- | -------- |
|
||||
|
||||
This is a test app for esp_partition component. It verifies all important APIs and properties, and prints the results.
|
||||
This is a test app for 'esp_partition' component. It verifies all the important APIs and properties and prints the results.
|
||||
The Block Device Layer related tests have names with a prefix 'test_bdl', and they check all the BDL operations related to 'esp_partition' including parallel access to 2 partitions.
|
||||
|
||||
In CI, it is sufficient to run this test for one chip of each architecture.
|
||||
|
||||
@@ -34,21 +34,21 @@ TEST(esp_partition, test_bdl_interface)
|
||||
memset((void*)data_buffer, 0, data_size);
|
||||
|
||||
//erase the first sector data from the blockdev and check it's really wiped
|
||||
TEST_ESP_OK(part_blockdev->erase(part_blockdev, target_addr, part_blockdev->geometry.erase_size));
|
||||
TEST_ESP_OK(part_blockdev->ops->erase(part_blockdev, target_addr, part_blockdev->geometry.erase_size));
|
||||
memset((void*)test_data, 0xFF, data_size); //erased NOR flash sector contains only 1s
|
||||
TEST_ESP_OK(part_blockdev->read(part_blockdev, data_buffer, sizeof(data_buffer), target_addr, data_size));
|
||||
TEST_ESP_OK(part_blockdev->ops->read(part_blockdev, data_buffer, sizeof(data_buffer), target_addr, data_size));
|
||||
TEST_ASSERT_EQUAL(0, memcmp(test_data, data_buffer, data_size));
|
||||
|
||||
//write to the blockdev
|
||||
memset((void*)test_data, 'A', data_size);
|
||||
TEST_ESP_OK(part_blockdev->write(part_blockdev, test_data, target_addr, data_size));
|
||||
TEST_ESP_OK(part_blockdev->ops->write(part_blockdev, test_data, target_addr, data_size));
|
||||
|
||||
//read from the blockdev the data written before
|
||||
TEST_ESP_OK(part_blockdev->read(part_blockdev, data_buffer, sizeof(data_buffer), target_addr, data_size));
|
||||
TEST_ESP_OK(part_blockdev->ops->read(part_blockdev, data_buffer, sizeof(data_buffer), target_addr, data_size));
|
||||
TEST_ASSERT_EQUAL(0, memcmp(test_data, data_buffer, data_size));
|
||||
|
||||
//release the BDL object - nothing to check here, the BDL memory is just freed
|
||||
esp_partition_release_blockdev(part_blockdev);
|
||||
TEST_ESP_OK(part_blockdev->ops->release(part_blockdev));
|
||||
}
|
||||
|
||||
TEST(esp_partition, test_bdl_interface_external)
|
||||
@@ -68,21 +68,21 @@ TEST(esp_partition, test_bdl_interface_external)
|
||||
memset((void*)data_buffer, 0, data_size);
|
||||
|
||||
//erase the first sector data from the blockdev and check it's really wiped
|
||||
TEST_ESP_OK(part_blockdev->erase(part_blockdev, target_addr, part_blockdev->geometry.erase_size));
|
||||
TEST_ESP_OK(part_blockdev->ops->erase(part_blockdev, target_addr, part_blockdev->geometry.erase_size));
|
||||
memset((void*)test_data, 0xFF, data_size); //erased NOR flash sector contains only 1s
|
||||
TEST_ESP_OK(part_blockdev->read(part_blockdev, data_buffer, sizeof(data_buffer), target_addr, data_size));
|
||||
TEST_ESP_OK(part_blockdev->ops->read(part_blockdev, data_buffer, sizeof(data_buffer), target_addr, data_size));
|
||||
TEST_ASSERT_EQUAL(0, memcmp(test_data, data_buffer, data_size));
|
||||
|
||||
//write to the blockdev
|
||||
memset((void*)test_data, 'A', data_size);
|
||||
TEST_ESP_OK(part_blockdev->write(part_blockdev, test_data, target_addr, data_size));
|
||||
TEST_ESP_OK(part_blockdev->ops->write(part_blockdev, test_data, target_addr, data_size));
|
||||
|
||||
//read from the blockdev the data written before
|
||||
TEST_ESP_OK(part_blockdev->read(part_blockdev, data_buffer, sizeof(data_buffer), target_addr, data_size));
|
||||
TEST_ESP_OK(part_blockdev->ops->read(part_blockdev, data_buffer, sizeof(data_buffer), target_addr, data_size));
|
||||
TEST_ASSERT_EQUAL(0, memcmp(test_data, data_buffer, data_size));
|
||||
|
||||
//release the BDL object - nothing to check here, the BDL memory is just freed
|
||||
esp_partition_release_blockdev(part_blockdev);
|
||||
TEST_ESP_OK(part_blockdev->ops->release(part_blockdev));
|
||||
|
||||
//deregister the external partition
|
||||
TEST_ESP_OK(esp_partition_deregister_external(ext_partition));
|
||||
@@ -114,34 +114,34 @@ TEST(esp_partition, test_bdl_two_partitions)
|
||||
memset((void*)data_buffer_2, 0, data_size);
|
||||
|
||||
//erase the first sector data from the blockdev and check it's really wiped
|
||||
TEST_ESP_OK(part_blockdev_1->erase(part_blockdev_1, target_addr, part_blockdev_1->geometry.erase_size));
|
||||
TEST_ESP_OK(part_blockdev_2->erase(part_blockdev_2, target_addr, part_blockdev_2->geometry.erase_size));
|
||||
TEST_ESP_OK(part_blockdev_1->ops->erase(part_blockdev_1, target_addr, part_blockdev_1->geometry.erase_size));
|
||||
TEST_ESP_OK(part_blockdev_2->ops->erase(part_blockdev_2, target_addr, part_blockdev_2->geometry.erase_size));
|
||||
memset((void*)test_data, 0xFF, data_size); //erased NOR flash sector contains only 1s
|
||||
|
||||
TEST_ESP_OK(part_blockdev_1->read(part_blockdev_1, data_buffer_1, sizeof(data_buffer_1), target_addr, data_size));
|
||||
TEST_ESP_OK(part_blockdev_2->read(part_blockdev_2, data_buffer_2, sizeof(data_buffer_2), target_addr, data_size));
|
||||
TEST_ESP_OK(part_blockdev_1->ops->read(part_blockdev_1, data_buffer_1, sizeof(data_buffer_1), target_addr, data_size));
|
||||
TEST_ESP_OK(part_blockdev_2->ops->read(part_blockdev_2, data_buffer_2, sizeof(data_buffer_2), target_addr, data_size));
|
||||
TEST_ASSERT_EQUAL(0, memcmp(test_data, data_buffer_1, data_size));
|
||||
TEST_ASSERT_EQUAL(0, memcmp(test_data, data_buffer_2, data_size));
|
||||
|
||||
//write to the blockdev 1
|
||||
memset((void*)test_data, 'A', data_size);
|
||||
TEST_ESP_OK(part_blockdev_1->write(part_blockdev_1, test_data, target_addr, data_size));
|
||||
TEST_ESP_OK(part_blockdev_1->ops->write(part_blockdev_1, test_data, target_addr, data_size));
|
||||
|
||||
//read the data written before from the blockdev 1
|
||||
TEST_ESP_OK(part_blockdev_1->read(part_blockdev_1, data_buffer_1, sizeof(data_buffer_1), target_addr, data_size));
|
||||
TEST_ESP_OK(part_blockdev_1->ops->read(part_blockdev_1, data_buffer_1, sizeof(data_buffer_1), target_addr, data_size));
|
||||
TEST_ASSERT_EQUAL(0, memcmp(test_data, data_buffer_1, data_size));
|
||||
|
||||
//write to the blockdev 2
|
||||
memset((void*)test_data, 'B', data_size);
|
||||
TEST_ESP_OK(part_blockdev_2->write(part_blockdev_2, test_data, target_addr, data_size));
|
||||
TEST_ESP_OK(part_blockdev_2->ops->write(part_blockdev_2, test_data, target_addr, data_size));
|
||||
|
||||
//read the data written before from the blockdev 2
|
||||
TEST_ESP_OK(part_blockdev_2->read(part_blockdev_2, data_buffer_2, sizeof(data_buffer_2), target_addr, data_size));
|
||||
TEST_ESP_OK(part_blockdev_2->ops->read(part_blockdev_2, data_buffer_2, sizeof(data_buffer_2), target_addr, data_size));
|
||||
TEST_ASSERT_EQUAL(0, memcmp(test_data, data_buffer_2, data_size));
|
||||
|
||||
//release the BDL object - nothing to check here, the BDL memory is just freed
|
||||
esp_partition_release_blockdev(part_blockdev_1);
|
||||
esp_partition_release_blockdev(part_blockdev_2);
|
||||
//release the BDL objects
|
||||
TEST_ESP_OK(part_blockdev_1->ops->release(part_blockdev_1));
|
||||
TEST_ESP_OK(part_blockdev_2->ops->release(part_blockdev_2));
|
||||
}
|
||||
|
||||
TEST_GROUP_RUNNER(esp_partition)
|
||||
|
||||
Reference in New Issue
Block a user