mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-10-30 04:42:19 +00:00 
			
		
		
		
	spi_flash_test: remove threshold from unit test
This commit is contained in:
		| @@ -33,87 +33,6 @@ | |||||||
| #define IDF_PERFORMANCE_MAX_SPI_PER_TRANS_NO_POLLING                            30 | #define IDF_PERFORMANCE_MAX_SPI_PER_TRANS_NO_POLLING                            30 | ||||||
| #define IDF_PERFORMANCE_MAX_SPI_PER_TRANS_NO_POLLING_NO_DMA                     27 | #define IDF_PERFORMANCE_MAX_SPI_PER_TRANS_NO_POLLING_NO_DMA                     27 | ||||||
|  |  | ||||||
| /* |  | ||||||
|  * Flash Performance value |  | ||||||
|  * 4 subsections: legacy, normal (new driver after v4.0), SPI1 (external but on SPI1), external (SPI2) |  | ||||||
|  * These thresholds are set to about 70% of the average test data, under certain condition. |  | ||||||
|  * Contact Espressif for details. |  | ||||||
|  */ |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_WR_4B |  | ||||||
| //The single_core config is much faster than other configs. Use the value of other configs |  | ||||||
| //Collect data and correct it later |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_WR_4B               0 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_RD_4B |  | ||||||
| //The single_core config is much faster than other configs. Use the value of other configs |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_RD_4B               35300 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_WR_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_WR_2KB              (697*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_RD_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_RD_2KB              (6780*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_ERASE |  | ||||||
| //erase performance is highly depending on the chip vendor. Use 70% of the minimal value. |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_ERASE               11200 |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_WR_4B |  | ||||||
| //The single_core config is much faster than other configs. Use the value of other configs |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_WR_4B                      20100 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_RD_4B |  | ||||||
| //The single_core config is much faster than other configs. Use the value of other configs |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_RD_4B                      35200 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_WR_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_WR_2KB                     (754*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_RD_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_RD_2KB                     (6650*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_ERASE |  | ||||||
| //erase performance is highly depending on the chip vendor. Use 70% of the minimal value. |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_ERASE                      45300 |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_WR_4B |  | ||||||
| //The single_core config is much faster than other configs. Use the value of other configs |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_WR_4B                 16200 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_RD_4B |  | ||||||
| //The single_core config is much faster than other configs. Use the value of other configs |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_RD_4B                 33600 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_WR_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_WR_2KB                (484*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_RD_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_RD_2KB                (1512*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_ERASE |  | ||||||
| //erase performance is highly depending on the chip vendor. Use 70% of the minimal value. |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_ERASE                 49600 |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_WR_4B |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_WR_4B                  73500 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_RD_4B |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_RD_4B                  (261*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_WR_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_WR_2KB                 (470*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_RD_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_RD_2KB                 (261*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_ERASE |  | ||||||
| //erase performance is highly depending on the chip vendor. Use 70% of the minimal value. |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_ERASE                  30900 |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| // floating point instructions per divide and per sqrt (configured for worst-case with PSRAM workaround) | // floating point instructions per divide and per sqrt (configured for worst-case with PSRAM workaround) | ||||||
| #define IDF_PERFORMANCE_MAX_CYCLES_PER_DIV                                      70 | #define IDF_PERFORMANCE_MAX_CYCLES_PER_DIV                                      70 | ||||||
| #define IDF_PERFORMANCE_MAX_CYCLES_PER_SQRT                                     140 | #define IDF_PERFORMANCE_MAX_CYCLES_PER_SQRT                                     140 | ||||||
|   | |||||||
| @@ -29,85 +29,6 @@ | |||||||
| #define IDF_PERFORMANCE_MAX_SPI_PER_TRANS_NO_POLLING                            32 | #define IDF_PERFORMANCE_MAX_SPI_PER_TRANS_NO_POLLING                            32 | ||||||
| #define IDF_PERFORMANCE_MAX_SPI_PER_TRANS_NO_POLLING_NO_DMA                     30 | #define IDF_PERFORMANCE_MAX_SPI_PER_TRANS_NO_POLLING_NO_DMA                     30 | ||||||
|  |  | ||||||
| /* |  | ||||||
|  * Flash Performance value |  | ||||||
|  * 4 subsections: legacy, normal (new driver after v4.0), SPI1 (external but on SPI1), external (SPI2) |  | ||||||
|  * These thresholds are set to about 70% of the average test data, under certain condition. |  | ||||||
|  * Contact Espressif for details. |  | ||||||
|  */ |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_WR_4B |  | ||||||
| // rom options is much slower. use its 70% |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_WR_4B               42200 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_RD_4B |  | ||||||
| // legacy & suspend config are much faster. use the 70% of slower configs |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_RD_4B               (179*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_WR_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_WR_2KB              (622*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_RD_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_RD_2KB              (6536*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_ERASE |  | ||||||
| //erase performance is highly depending on the chip vendor. Use 70% of the minimal value. |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_ERASE               23700 |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_WR_4B |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_WR_4B                      46400 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_RD_4B |  | ||||||
| // legacy & suspend config are much faster. use the 70% of slower configs |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_RD_4B                      (183*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_WR_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_WR_2KB                     (605*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_RD_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_RD_2KB                     (6676*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_ERASE |  | ||||||
| //erase performance is highly depending on the chip vendor. Use 70% of the minimal value. |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_ERASE                      22900 |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| // No SPI1 tests for C3 |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_WR_4B |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_WR_4B                 0 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_RD_4B |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_RD_4B                 0 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_WR_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_WR_2KB                0 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_RD_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_RD_2KB                0 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_ERASE |  | ||||||
| //erase performance is highly depending on the chip vendor. Use 70% of the minimal value. |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_ERASE                 0 |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_WR_4B |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_WR_4B                  43300 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_RD_4B |  | ||||||
| // rom options is much slower. use its 70% |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_RD_4B                  99500 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_WR_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_WR_2KB                 (300*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_RD_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_RD_2KB                 (754*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_ERASE |  | ||||||
| //erase performance is highly depending on the chip vendor. Use 70% of the minimal value. |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_ERASE                  33900 |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| // floating point instructions per divide and per sqrt (configured for worst-case with PSRAM workaround) | // floating point instructions per divide and per sqrt (configured for worst-case with PSRAM workaround) | ||||||
| #define IDF_PERFORMANCE_MAX_CYCLES_PER_DIV                                      70 | #define IDF_PERFORMANCE_MAX_CYCLES_PER_DIV                                      70 | ||||||
| #define IDF_PERFORMANCE_MAX_CYCLES_PER_SQRT                                     140 | #define IDF_PERFORMANCE_MAX_CYCLES_PER_SQRT                                     140 | ||||||
|   | |||||||
| @@ -25,82 +25,3 @@ | |||||||
|  |  | ||||||
| #define IDF_PERFORMANCE_MAX_SPI_PER_TRANS_NO_POLLING                            32 | #define IDF_PERFORMANCE_MAX_SPI_PER_TRANS_NO_POLLING                            32 | ||||||
| #define IDF_PERFORMANCE_MAX_SPI_PER_TRANS_NO_POLLING_NO_DMA                     30 | #define IDF_PERFORMANCE_MAX_SPI_PER_TRANS_NO_POLLING_NO_DMA                     30 | ||||||
|  |  | ||||||
| /* |  | ||||||
|  * Flash Performance value |  | ||||||
|  * 4 subsections: legacy, normal (new driver after v4.0), SPI1 (external but on SPI1), external (SPI2) |  | ||||||
|  * These thresholds are set to about 70% of the average test data, under certain condition. |  | ||||||
|  * Contact Espressif for details. |  | ||||||
|  */ |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_WR_4B |  | ||||||
| //Great variation, use the 70% of min value |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_WR_4B               33300 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_RD_4B |  | ||||||
| // legacy config is much faster. use the 70% of slower configs |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_RD_4B               (239*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_WR_2KB |  | ||||||
| // Weird data. Use 70% average of slower configs. |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_WR_2KB              (546*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_RD_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_RD_2KB              (1191*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_ERASE |  | ||||||
| //erase performance is highly depending on the chip vendor. Use 70% of the minimal value. |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_ERASE               19500 |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_WR_4B |  | ||||||
| //release config is much faster than other configs. Use 70% average of other configs |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_WR_4B                      46300 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_RD_4B |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_RD_4B                      (249*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_WR_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_WR_2KB                     (851*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_RD_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_RD_2KB                     (11480*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_ERASE |  | ||||||
| //erase performance is highly depending on the chip vendor. Use 70% of the minimal value. |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_ERASE                      40100 |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_WR_4B |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_WR_4B                 30500 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_RD_4B |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_RD_4B                 (183*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_WR_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_WR_2KB                (474*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_RD_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_RD_2KB                (1283*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_ERASE |  | ||||||
| //erase performance is highly depending on the chip vendor. Use 70% of the minimal value. |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_ERASE                 44100 |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_WR_4B |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_WR_4B                  47800 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_RD_4B |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_RD_4B                  (252*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_WR_2KB |  | ||||||
| // write with large RAM buffer tests has lower performance value than normal performance tests |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_WR_2KB                 (398*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_RD_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_RD_2KB                 (1204*1000) |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_ERASE |  | ||||||
| //erase performance is highly depending on the chip vendor. Use 70% of the minimal value. |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_ERASE                  22100 |  | ||||||
| #endif |  | ||||||
|   | |||||||
| @@ -24,82 +24,6 @@ | |||||||
| #define IDF_PERFORMANCE_MAX_SPI_PER_TRANS_NO_POLLING                            32 | #define IDF_PERFORMANCE_MAX_SPI_PER_TRANS_NO_POLLING                            32 | ||||||
| #define IDF_PERFORMANCE_MAX_SPI_PER_TRANS_NO_POLLING_NO_DMA                     30 | #define IDF_PERFORMANCE_MAX_SPI_PER_TRANS_NO_POLLING_NO_DMA                     30 | ||||||
|  |  | ||||||
| /* |  | ||||||
|  * Flash Performance value |  | ||||||
|  * 4 subsections: legacy, normal (new driver after v4.0), SPI1 (external but on SPI1), external (SPI2) |  | ||||||
|  * These thresholds are set to about 70% of the average test data, under certain condition. |  | ||||||
|  * Contact Espressif for details. |  | ||||||
|  * |  | ||||||
|  * Currently all performance data on S3 are set to 0 for now. Update to a proper value later. |  | ||||||
|  */ |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_WR_4B |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_WR_4B               0 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_RD_4B |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_RD_4B               0 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_WR_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_WR_2KB              0 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_RD_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_RD_2KB              0 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_ERASE |  | ||||||
| //erase performance is highly depending on the chip vendor. Use 70% of the minimal value. |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_LEGACY_ERASE               0 |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_WR_4B |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_WR_4B                      0 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_RD_4B |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_RD_4B                      0 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_WR_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_WR_2KB                     0 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_RD_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_RD_2KB                     0 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_ERASE |  | ||||||
| //erase performance is highly depending on the chip vendor. Use 70% of the minimal value. |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_ERASE                      0 |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_WR_4B |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_WR_4B                 0 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_RD_4B |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_RD_4B                 0 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_WR_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_WR_2KB                0 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_RD_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_RD_2KB                0 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_ERASE |  | ||||||
| //erase performance is highly depending on the chip vendor. Use 70% of the minimal value. |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_SPI1_ERASE                 0 |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_WR_4B |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_WR_4B                  0 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_RD_4B |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_RD_4B                  0 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_WR_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_WR_2KB                 0 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_RD_2KB |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_RD_2KB                 0 |  | ||||||
| #endif |  | ||||||
| #ifndef IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_ERASE |  | ||||||
| //erase performance is highly depending on the chip vendor. Use 70% of the minimal value. |  | ||||||
| #define IDF_PERFORMANCE_MIN_FLASH_SPEED_BYTE_PER_SEC_EXT_ERASE                  0 |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| // floating point instructions per divide and per sqrt (configured for worst-case with PSRAM workaround) | // floating point instructions per divide and per sqrt (configured for worst-case with PSRAM workaround) | ||||||
| #define IDF_PERFORMANCE_MAX_CYCLES_PER_DIV                                      70 | #define IDF_PERFORMANCE_MAX_CYCLES_PER_DIV                                      70 | ||||||
| #define IDF_PERFORMANCE_MAX_CYCLES_PER_SQRT                                     140 | #define IDF_PERFORMANCE_MAX_CYCLES_PER_SQRT                                     140 | ||||||
|   | |||||||
| @@ -1044,6 +1044,37 @@ static uint32_t measure_read(const char* name, const esp_partition_t* part, uint | |||||||
|     return time_measure_end(&time_ctx); |     return time_measure_end(&time_ctx); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | static const char* get_chip_vendor(uint32_t id) | ||||||
|  | { | ||||||
|  |     switch (id) | ||||||
|  |     { | ||||||
|  |     case 0x20: | ||||||
|  |         return "XMC"; | ||||||
|  |         break; | ||||||
|  |     case 0x68: | ||||||
|  |         return "BOYA"; | ||||||
|  |         break; | ||||||
|  |     case 0xC8: | ||||||
|  |         return "GigaDevice"; | ||||||
|  |         break; | ||||||
|  |     case 0x9D: | ||||||
|  |         return "ISSI"; | ||||||
|  |         break; | ||||||
|  |     case 0xC2: | ||||||
|  |         return "MXIC"; | ||||||
|  |         break; | ||||||
|  |     case 0xEF: | ||||||
|  |         return "Winbond"; | ||||||
|  |         break; | ||||||
|  |     case 0xA1: | ||||||
|  |         return "Fudan Micro"; | ||||||
|  |         break; | ||||||
|  |     default: | ||||||
|  |         break; | ||||||
|  |     } | ||||||
|  |     return "generic"; | ||||||
|  | } | ||||||
|  |  | ||||||
| #define MEAS_WRITE(n)   (measure_write("write in "#n"-byte chunks", part, data_to_write, n)) | #define MEAS_WRITE(n)   (measure_write("write in "#n"-byte chunks", part, data_to_write, n)) | ||||||
| #define MEAS_READ(n)    (measure_read("read in "#n"-byte chunks", part, data_read, n)) | #define MEAS_READ(n)    (measure_read("read in "#n"-byte chunks", part, data_read, n)) | ||||||
|  |  | ||||||
| @@ -1068,37 +1099,35 @@ static void test_flash_read_write_performance(const esp_partition_t *part) | |||||||
|  |  | ||||||
|     TEST_ASSERT_EQUAL_HEX8_ARRAY(data_to_write, data_read, total_len); |     TEST_ASSERT_EQUAL_HEX8_ARRAY(data_to_write, data_read, total_len); | ||||||
|  |  | ||||||
| #if !CONFIG_SPIRAM && !CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE | #define LOG_DATA(bus, suffix, chip) IDF_LOG_PERFORMANCE("FLASH_SPEED_BYTE_PER_SEC_"#bus#suffix, "%d, flash_chip: %s", speed_##suffix, chip) | ||||||
| #  define CHECK_DATA(bus, suffix) TEST_PERFORMANCE_CCOMP_GREATER_THAN(FLASH_SPEED_BYTE_PER_SEC_##bus##suffix, "%d", speed_##suffix) | #define LOG_ERASE(bus, var, chip) IDF_LOG_PERFORMANCE("FLASH_SPEED_BYTE_PER_SEC_"#bus"ERASE", "%d, flash_chip: %s", var, chip) | ||||||
| #  define CHECK_ERASE(bus, var) TEST_PERFORMANCE_CCOMP_GREATER_THAN(FLASH_SPEED_BYTE_PER_SEC_##bus##ERASE, "%d", var) |  | ||||||
| #else |  | ||||||
| #  define CHECK_DATA(bus, suffix) ((void)speed_##suffix) |  | ||||||
| #  define CHECK_ERASE(bus, var)   ((void)var) |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| // Erase time may vary a lot, can increase threshold if this fails with a reasonable speed | // Erase time may vary a lot, can increase threshold if this fails with a reasonable speed | ||||||
| #define CHECK_PERFORMANCE(bus) do {\ | #define LOG_PERFORMANCE(bus, chip) do {\ | ||||||
|             CHECK_DATA(bus, WR_4B); \ |             LOG_DATA(bus, WR_4B, chip); \ | ||||||
|             CHECK_DATA(bus, RD_4B); \ |             LOG_DATA(bus, RD_4B, chip); \ | ||||||
|             CHECK_DATA(bus, WR_2KB); \ |             LOG_DATA(bus, WR_2KB, chip); \ | ||||||
|             CHECK_DATA(bus, RD_2KB); \ |             LOG_DATA(bus, RD_2KB, chip); \ | ||||||
|             CHECK_ERASE(bus, erase_1); \ |             LOG_ERASE(bus, erase_1, chip); \ | ||||||
|             CHECK_ERASE(bus, erase_2); \ |             LOG_ERASE(bus, erase_2, chip); \ | ||||||
|         } while (0) |         } while (0) | ||||||
|  |  | ||||||
|     spi_host_device_t host_id; |     spi_host_device_t host_id; | ||||||
|     int cs_id; |     int cs_id; | ||||||
|  |     uint32_t id; | ||||||
|  |     esp_flash_read_id(chip, &id); | ||||||
|  |     const char *chip_name = get_chip_vendor(id >> 16); | ||||||
|  |  | ||||||
|     get_chip_host(chip, &host_id, &cs_id); |     get_chip_host(chip, &host_id, &cs_id); | ||||||
|     if (host_id != SPI1_HOST) { |     if (host_id != SPI1_HOST) { | ||||||
|         // Chips on other SPI buses |         // Chips on other SPI buses | ||||||
|         CHECK_PERFORMANCE(EXT_); |         LOG_PERFORMANCE(EXT_, chip_name); | ||||||
|     } else if (cs_id == 0) { |     } else if (cs_id == 0) { | ||||||
|         // Main flash |         // Main flash | ||||||
|         CHECK_PERFORMANCE(); |         LOG_PERFORMANCE(,chip_name); | ||||||
|     } else { |     } else { | ||||||
|         // Other cs pins on SPI1 |         // Other cs pins on SPI1 | ||||||
|         CHECK_PERFORMANCE(SPI1_); |         LOG_PERFORMANCE(SPI1_, chip_name); | ||||||
|     } |     } | ||||||
|     free(data_to_write); |     free(data_to_write); | ||||||
|     free(data_read); |     free(data_read); | ||||||
|   | |||||||
| @@ -312,23 +312,17 @@ TEST_CASE("Test spi_flash read/write performance", "[spi_flash]") | |||||||
|  |  | ||||||
|     TEST_ASSERT_EQUAL_HEX8_ARRAY(data_to_write, data_read, total_len); |     TEST_ASSERT_EQUAL_HEX8_ARRAY(data_to_write, data_read, total_len); | ||||||
|  |  | ||||||
| // Data checks are disabled when PSRAM is used or in Freertos compliance check test | #define LOG_DATA(suffix) IDF_LOG_PERFORMANCE("FLASH_SPEED_BYTE_PER_SEC_LEGACY_"#suffix, "%d", speed_##suffix) | ||||||
| #if !CONFIG_SPIRAM && !CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE | #define LOG_ERASE(var) IDF_LOG_PERFORMANCE("FLASH_SPEED_BYTE_PER_SEC_LEGACY_ERASE", "%d", var) | ||||||
| #  define CHECK_DATA(suffix) TEST_PERFORMANCE_CCOMP_GREATER_THAN(FLASH_SPEED_BYTE_PER_SEC_LEGACY_##suffix, "%d", speed_##suffix) |  | ||||||
| #  define CHECK_ERASE(var) TEST_PERFORMANCE_CCOMP_GREATER_THAN(FLASH_SPEED_BYTE_PER_SEC_LEGACY_ERASE, "%d", var) |  | ||||||
| #else |  | ||||||
| #  define CHECK_DATA(suffix) ((void)speed_##suffix) |  | ||||||
| #  define CHECK_ERASE(var) ((void)var) |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
|     CHECK_DATA(WR_4B); |     LOG_DATA(WR_4B); | ||||||
|     CHECK_DATA(RD_4B); |     LOG_DATA(RD_4B); | ||||||
|     CHECK_DATA(WR_2KB); |     LOG_DATA(WR_2KB); | ||||||
|     CHECK_DATA(RD_2KB); |     LOG_DATA(RD_2KB); | ||||||
|  |  | ||||||
|     // Erase time may vary a lot, can increase threshold if this fails with a reasonable speed |     // Erase time may vary a lot, can increase threshold if this fails with a reasonable speed | ||||||
|     CHECK_ERASE(erase_1); |     LOG_ERASE(erase_1); | ||||||
|     CHECK_ERASE(erase_2); |     LOG_ERASE(erase_2); | ||||||
|  |  | ||||||
|     free(data_to_write); |     free(data_to_write); | ||||||
|     free(data_read); |     free(data_read); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Michael (XIAO Xufeng)
					Michael (XIAO Xufeng)