mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-11-04 00:51:42 +01:00 
			
		
		
		
	
		
			
	
	
		
			72 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			72 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								# SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
							 | 
						||
| 
								 | 
							
								# SPDX-License-Identifier: CC0-1.0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import logging
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import pytest
							 | 
						||
| 
								 | 
							
								from pytest_embedded import Dut
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								MEM_TEST_UNICORE = {
							 | 
						||
| 
								 | 
							
								    'esp32s2': [
							 | 
						||
| 
								 | 
							
								        ['IRAM0_SRAM', 'WRX'],
							 | 
						||
| 
								 | 
							
								        ['IRAM0_RTCFAST', 'WRX'],
							 | 
						||
| 
								 | 
							
								        ['DRAM0_SRAM', 'WR'],
							 | 
						||
| 
								 | 
							
								        ['DRAM0_RTCFAST', 'WR'],
							 | 
						||
| 
								 | 
							
								        ['PERI1_RTCSLOW', 'WR'],
							 | 
						||
| 
								 | 
							
								        ['PERI2_RTCSLOW_0', 'WRX'],
							 | 
						||
| 
								 | 
							
								        ['PERI2_RTCSLOW_1', 'WRX']
							 | 
						||
| 
								 | 
							
								    ],
							 | 
						||
| 
								 | 
							
								    'esp32c3': [
							 | 
						||
| 
								 | 
							
								        ['IRAM0_SRAM', 'WRX'],
							 | 
						||
| 
								 | 
							
								        ['DRAM0_SRAM', 'WR'],
							 | 
						||
| 
								 | 
							
								        ['IRAM0_RTCFAST', 'WRX']
							 | 
						||
| 
								 | 
							
								    ],
							 | 
						||
| 
								 | 
							
								    'esp32s3': [
							 | 
						||
| 
								 | 
							
								        ['IRAM0_SRAM (core 0)', 'WRX'],
							 | 
						||
| 
								 | 
							
								        ['DRAM0_SRAM (core 0)', 'WR']
							 | 
						||
| 
								 | 
							
								        # temporarily disabled unless IDF-5208 gets merged
							 | 
						||
| 
								 | 
							
								        # ['IRAM0_RTCFAST', 'WR'],
							 | 
						||
| 
								 | 
							
								    ],
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								MEM_TEST_MULTICORE = {
							 | 
						||
| 
								 | 
							
								    'esp32s3': [
							 | 
						||
| 
								 | 
							
								        # instruction execute test temporarily disabled
							 | 
						||
| 
								 | 
							
								        # ['IRAM0_SRAM (core 0)', 'WRX'],
							 | 
						||
| 
								 | 
							
								        ['IRAM0_SRAM (core 0)', 'WR'],
							 | 
						||
| 
								 | 
							
								        ['DRAM0_SRAM (core 0)', 'WR'],
							 | 
						||
| 
								 | 
							
								        # instruction execute test temporarily disabled
							 | 
						||
| 
								 | 
							
								        # ['IRAM0_SRAM (core 1)', 'WRX'],
							 | 
						||
| 
								 | 
							
								        ['IRAM0_SRAM (core 1)', 'WR'],
							 | 
						||
| 
								 | 
							
								        ['DRAM0_SRAM (core 1)', 'WR']
							 | 
						||
| 
								 | 
							
								        # temporarily disabled unless IDF-5208 gets merged
							 | 
						||
| 
								 | 
							
								        # ['IRAM0_RTCFAST', 'WR'],
							 | 
						||
| 
								 | 
							
								    ]
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@pytest.mark.esp32s2
							 | 
						||
| 
								 | 
							
								@pytest.mark.esp32s3
							 | 
						||
| 
								 | 
							
								@pytest.mark.esp32c3
							 | 
						||
| 
								 | 
							
								@pytest.mark.generic
							 | 
						||
| 
								 | 
							
								def test_sys_memprot(dut: Dut) -> None:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    current_target = dut.target
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    unicore = dut.app.sdkconfig.get('FREERTOS_UNICORE')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    mem_test_cfg = MEM_TEST_UNICORE if unicore else MEM_TEST_MULTICORE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    logging.info(f'Test cfg: {current_target}')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    for i in mem_test_cfg[current_target]:
							 | 
						||
| 
								 | 
							
								        if 'R' in i[1]:
							 | 
						||
| 
								 | 
							
								            dut.expect_exact(i[0] + ' read low: OK')
							 | 
						||
| 
								 | 
							
								            dut.expect_exact(i[0] + ' read high: OK')
							 | 
						||
| 
								 | 
							
								        if 'W' in i[1]:
							 | 
						||
| 
								 | 
							
								            dut.expect_exact(i[0] + ' write low: OK')
							 | 
						||
| 
								 | 
							
								            dut.expect_exact(i[0] + ' write high: OK')
							 | 
						||
| 
								 | 
							
								        if 'X' in i[1]:
							 | 
						||
| 
								 | 
							
								            dut.expect_exact(i[0] + ' exec low: OK')
							 | 
						||
| 
								 | 
							
								            dut.expect_exact(i[0] + ' exec high: OK')
							 |