Skip to content

Commit 255d10d

Browse files
committed
feat: add soc header for targets
1 parent 96382c4 commit 255d10d

File tree

26 files changed

+969
-0
lines changed

26 files changed

+969
-0
lines changed

src/target/esp32/include/soc/soc.h

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
3+
*
4+
* SPDX-License-Identifier: Apache-2.0 OR MIT
5+
*/
6+
7+
#pragma once
8+
9+
/* Overall memory map */
10+
#define SOC_DROM_LOW 0x3F400000
11+
#define SOC_DROM_HIGH 0x3F800000
12+
#define SOC_DRAM_LOW 0x3FFAE000
13+
#define SOC_DRAM_HIGH 0x40000000
14+
#define SOC_IROM_LOW 0x400D0000
15+
#define SOC_IROM_HIGH 0x40400000
16+
#define SOC_IROM_MASK_LOW 0x40000000
17+
#define SOC_IROM_MASK_HIGH 0x40070000
18+
#define SOC_CACHE_PRO_LOW 0x40070000
19+
#define SOC_CACHE_PRO_HIGH 0x40078000
20+
#define SOC_CACHE_APP_LOW 0x40078000
21+
#define SOC_CACHE_APP_HIGH 0x40080000
22+
#define SOC_IRAM_LOW 0x40080000
23+
#define SOC_IRAM_HIGH 0x400AA000
24+
#define SOC_RTC_IRAM_LOW 0x400C0000
25+
#define SOC_RTC_IRAM_HIGH 0x400C2000
26+
#define SOC_RTC_DRAM_LOW 0x3FF80000
27+
#define SOC_RTC_DRAM_HIGH 0x3FF82000
28+
#define SOC_RTC_DATA_LOW 0x50000000
29+
#define SOC_RTC_DATA_HIGH 0x50002000
30+
#define SOC_EXTRAM_DATA_LOW 0x3F800000
31+
#define SOC_EXTRAM_DATA_HIGH 0x3FC00000
32+
33+
#define SOC_EXTRAM_DATA_SIZE (SOC_EXTRAM_DATA_HIGH - SOC_EXTRAM_DATA_LOW)
34+
35+
//First and last words of the D/IRAM region, for both the DRAM address as well as the IRAM alias.
36+
#define SOC_DIRAM_IRAM_LOW 0x400A0000
37+
#define SOC_DIRAM_IRAM_HIGH 0x400C0000
38+
#define SOC_DIRAM_DRAM_LOW 0x3FFE0000
39+
#define SOC_DIRAM_DRAM_HIGH 0x40000000
40+
// Byte order of D/IRAM regions is reversed between accessing as DRAM or IRAM
41+
#define SOC_DIRAM_INVERTED 1
42+
43+
// Region of memory accessible via DMA. See esp_ptr_dma_capable().
44+
#define SOC_DMA_LOW 0x3FFAE000
45+
#define SOC_DMA_HIGH 0x40000000
46+
47+
// Region of memory that is byte-accessible. See esp_ptr_byte_accessible().
48+
#define SOC_BYTE_ACCESSIBLE_LOW 0x3FF90000
49+
#define SOC_BYTE_ACCESSIBLE_HIGH 0x40000000
50+
51+
//Region of memory that is internal, as in on the same silicon die as the ESP32 CPUs
52+
//(excluding RTC data region, that's checked separately.) See esp_ptr_internal().
53+
#define SOC_MEM_INTERNAL_LOW 0x3FF90000
54+
#define SOC_MEM_INTERNAL_HIGH 0x400C2000
55+
56+
// Start (highest address) of ROM boot stack, only relevant during early boot
57+
#define SOC_ROM_STACK_START 0x3ffe3f20
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
3+
*
4+
* SPDX-License-Identifier: Apache-2.0 OR MIT
5+
*/
6+
7+
#pragma once
8+
9+
/* Capabilities */
10+
11+
#define SOC_RTC_FAST_MEM_SUPPORTED 1
12+
#define SOC_RTC_SLOW_MEM_SUPPORTED 1
13+
#define SOC_RTC_MEM_SUPPORTED 1
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
3+
*
4+
* SPDX-License-Identifier: Apache-2.0 OR MIT
5+
*/
6+
7+
#pragma once
8+
9+
/* Overall memory map */
10+
#define SOC_DROM_LOW 0x3C000000
11+
#define SOC_DROM_HIGH 0x3C400000
12+
#define SOC_IROM_LOW 0x42000000
13+
#define SOC_IROM_HIGH 0x42400000
14+
#define SOC_IROM_MASK_LOW 0x40000000
15+
#define SOC_IROM_MASK_HIGH 0x40090000
16+
#define SOC_DROM_MASK_LOW 0x3FF00000
17+
#define SOC_DROM_MASK_HIGH 0x3FF50000
18+
#define SOC_IRAM_LOW 0x4037C000
19+
#define SOC_IRAM_HIGH 0x403C0000
20+
#define SOC_DRAM_LOW 0x3FCA0000
21+
#define SOC_DRAM_HIGH 0x3FCE0000
22+
23+
//First and last words of the D/IRAM region, for both the DRAM address as well as the IRAM alias.
24+
#define SOC_DIRAM_IRAM_LOW 0x40380000
25+
#define SOC_DIRAM_IRAM_HIGH 0x403C0000
26+
#define SOC_DIRAM_DRAM_LOW 0x3FCA0000
27+
#define SOC_DIRAM_DRAM_HIGH 0x3FCE0000
28+
29+
#define SOC_I_D_OFFSET (SOC_DIRAM_IRAM_LOW - SOC_DIRAM_DRAM_LOW)
30+
#define MAP_DRAM_TO_IRAM(addr) (addr + SOC_I_D_OFFSET)
31+
#define MAP_IRAM_TO_DRAM(addr) (addr - SOC_I_D_OFFSET)
32+
33+
// Region of memory accessible via DMA. See esp_ptr_dma_capable().
34+
#define SOC_DMA_LOW 0x3FCA0000
35+
#define SOC_DMA_HIGH 0x3FCE0000
36+
37+
// Region of RAM that is byte-accessible. See esp_ptr_byte_accessible().
38+
#define SOC_BYTE_ACCESSIBLE_LOW 0x3FCA0000
39+
#define SOC_BYTE_ACCESSIBLE_HIGH 0x3FCE0000
40+
41+
//Region of memory that is internal, as in on the same silicon die as the ESP32 CPUs
42+
//(excluding RTC data region, that's checked separately.) See esp_ptr_internal().
43+
#define SOC_MEM_INTERNAL_LOW 0x3FCA0000
44+
#define SOC_MEM_INTERNAL_HIGH 0x3FCE0000
45+
46+
#define SOC_MAX_CONTIGUOUS_RAM_SIZE (SOC_IRAM_HIGH - SOC_IRAM_LOW) ///< Largest span of contiguous memory (DRAM or IRAM) in the address space
47+
48+
// Region of address space that holds peripherals
49+
#define SOC_PERIPHERAL_LOW 0x60000000
50+
#define SOC_PERIPHERAL_HIGH 0x60100000
51+
52+
// Debug region, not used by software
53+
#define SOC_DEBUG_LOW 0x20000000
54+
#define SOC_DEBUG_HIGH 0x28000000
55+
56+
// Start (highest address) of ROM boot stack, only relevant during early boot
57+
#define SOC_ROM_STACK_START 0x3fcdeb70
58+
#define SOC_ROM_STACK_SIZE 0x2000
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
3+
*
4+
* SPDX-License-Identifier: Apache-2.0 OR MIT
5+
*/
6+
7+
#pragma once
8+
9+
/* Capabilities */
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
3+
*
4+
* SPDX-License-Identifier: Apache-2.0 OR MIT
5+
*/
6+
7+
#pragma once
8+
9+
/* Overall memory map */
10+
#define SOC_DROM_LOW 0x3C000000
11+
#define SOC_DROM_HIGH 0x3C800000
12+
#define SOC_IROM_LOW 0x42000000
13+
#define SOC_IROM_HIGH 0x42800000
14+
#define SOC_IROM_MASK_LOW 0x40000000
15+
#define SOC_IROM_MASK_HIGH 0x40060000
16+
#define SOC_DROM_MASK_LOW 0x3FF00000
17+
#define SOC_DROM_MASK_HIGH 0x3FF20000
18+
#define SOC_IRAM_LOW 0x4037C000
19+
#define SOC_IRAM_HIGH 0x403E0000
20+
#define SOC_DRAM_LOW 0x3FC80000
21+
#define SOC_DRAM_HIGH 0x3FCE0000
22+
#define SOC_RTC_IRAM_LOW 0x50000000 // ESP32-C3 only has RTC slow memory
23+
#define SOC_RTC_IRAM_HIGH 0x50002000
24+
#define SOC_RTC_DRAM_LOW 0x50000000
25+
#define SOC_RTC_DRAM_HIGH 0x50002000
26+
#define SOC_RTC_DATA_LOW 0x50000000
27+
#define SOC_RTC_DATA_HIGH 0x50002000
28+
29+
//First and last words of the D/IRAM region, for both the DRAM address as well as the IRAM alias.
30+
#define SOC_DIRAM_IRAM_LOW 0x40380000
31+
#define SOC_DIRAM_IRAM_HIGH 0x403E0000
32+
#define SOC_DIRAM_DRAM_LOW 0x3FC80000
33+
#define SOC_DIRAM_DRAM_HIGH 0x3FCE0000
34+
35+
#define SOC_I_D_OFFSET (SOC_DIRAM_IRAM_LOW - SOC_DIRAM_DRAM_LOW)
36+
#define MAP_DRAM_TO_IRAM(addr) (addr + SOC_I_D_OFFSET)
37+
#define MAP_IRAM_TO_DRAM(addr) (addr - SOC_I_D_OFFSET)
38+
39+
// Region of memory accessible via DMA. See esp_ptr_dma_capable().
40+
#define SOC_DMA_LOW 0x3FC80000
41+
#define SOC_DMA_HIGH 0x3FCE0000
42+
43+
// Region of RAM that is byte-accessible. See esp_ptr_byte_accessible().
44+
#define SOC_BYTE_ACCESSIBLE_LOW 0x3FC80000
45+
#define SOC_BYTE_ACCESSIBLE_HIGH 0x3FD00000
46+
47+
//Region of memory that is internal, as in on the same silicon die as the ESP32 CPUs
48+
//(excluding RTC data region, that's checked separately.) See esp_ptr_internal().
49+
#define SOC_MEM_INTERNAL_LOW 0x3FC80000
50+
#define SOC_MEM_INTERNAL_HIGH 0x3FCE0000
51+
52+
#define SOC_MAX_CONTIGUOUS_RAM_SIZE (SOC_IRAM_HIGH - SOC_IRAM_LOW) ///< Largest span of contiguous memory (DRAM or IRAM) in the address space
53+
54+
// Region of address space that holds peripherals
55+
#define SOC_PERIPHERAL_LOW 0x60000000
56+
#define SOC_PERIPHERAL_HIGH 0x60100000
57+
58+
// Debug region, not used by software
59+
#define SOC_DEBUG_LOW 0x20000000
60+
#define SOC_DEBUG_HIGH 0x28000000
61+
62+
// Start (highest address) of ROM boot stack, only relevant during early boot
63+
#define SOC_ROM_STACK_START 0x3fcde710
64+
#define SOC_ROM_STACK_SIZE 0x2000
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
3+
*
4+
* SPDX-License-Identifier: Apache-2.0 OR MIT
5+
*/
6+
7+
#pragma once
8+
9+
/* Capabilities */
10+
11+
#define SOC_RTC_FAST_MEM_SUPPORTED 1
12+
#define SOC_RTC_MEM_SUPPORTED 1
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
3+
*
4+
* SPDX-License-Identifier: Apache-2.0 OR MIT
5+
*/
6+
7+
#pragma once
8+
9+
/* Overall memory map */
10+
#define SOC_IROM_LOW 0x42000000
11+
#define SOC_IROM_HIGH 0x44000000
12+
#define SOC_EXTRAM_DATA_LOW 0x42000000
13+
#define SOC_EXTRAM_DATA_HIGH 0x44000000
14+
#define SOC_DROM_LOW SOC_IROM_LOW
15+
#define SOC_DROM_HIGH SOC_IROM_HIGH
16+
#define SOC_IROM_MASK_LOW 0x40000000
17+
#define SOC_IROM_MASK_HIGH 0x40050000
18+
#define SOC_DROM_MASK_LOW 0x40000000
19+
#define SOC_DROM_MASK_HIGH 0x40050000
20+
#define SOC_IRAM_LOW 0x40800000
21+
#define SOC_IRAM_HIGH 0x40860000
22+
#define SOC_DRAM_LOW 0x40800000
23+
#define SOC_DRAM_HIGH 0x40860000
24+
#define SOC_RTC_IRAM_LOW 0x50000000 // ESP32-C5 only has 16k LP memory
25+
#define SOC_RTC_IRAM_HIGH 0x50004000
26+
#define SOC_RTC_DRAM_LOW 0x50000000
27+
#define SOC_RTC_DRAM_HIGH 0x50004000
28+
#define SOC_RTC_DATA_LOW 0x50000000
29+
#define SOC_RTC_DATA_HIGH 0x50004000
30+
31+
//First and last words of the D/IRAM region, for both the DRAM address as well as the IRAM alias.
32+
#define SOC_DIRAM_IRAM_LOW 0x40800000
33+
#define SOC_DIRAM_IRAM_HIGH 0x40860000
34+
#define SOC_DIRAM_DRAM_LOW 0x40800000
35+
#define SOC_DIRAM_DRAM_HIGH 0x40860000
36+
37+
#define MAP_DRAM_TO_IRAM(addr) (addr)
38+
#define MAP_IRAM_TO_DRAM(addr) (addr)
39+
40+
// Region of memory accessible via DMA. See esp_ptr_dma_capable().
41+
#define SOC_DMA_LOW 0x40800000
42+
#define SOC_DMA_HIGH 0x40860000
43+
44+
// Region of RAM that is byte-accessible. See esp_ptr_byte_accessible().
45+
#define SOC_BYTE_ACCESSIBLE_LOW 0x40800000
46+
#define SOC_BYTE_ACCESSIBLE_HIGH 0x40860000
47+
48+
//Region of memory that is internal, as in on the same silicon die as the ESP32 CPUs
49+
//(excluding RTC data region, that's checked separately.) See esp_ptr_internal().
50+
#define SOC_MEM_INTERNAL_LOW 0x40800000
51+
#define SOC_MEM_INTERNAL_HIGH 0x40860000
52+
#define SOC_MEM_INTERNAL_LOW1 0x40800000
53+
#define SOC_MEM_INTERNAL_HIGH1 0x40860000
54+
55+
#define SOC_MAX_CONTIGUOUS_RAM_SIZE (SOC_IROM_HIGH - SOC_IROM_LOW) ///< Largest span of contiguous memory (DRAM or IRAM) in the address space
56+
57+
// Region of address space that holds peripherals
58+
#define SOC_PERIPHERAL_LOW 0x60000000
59+
#define SOC_PERIPHERAL_HIGH 0x60100000
60+
61+
// CPU sub-system region, contains interrupt config registers
62+
#define SOC_CPU_SUBSYSTEM_LOW 0x20000000
63+
#define SOC_CPU_SUBSYSTEM_HIGH 0x30000000
64+
65+
// Start (highest address) of ROM boot stack, only relevant during early boot
66+
#define SOC_ROM_STACK_START 0x4085e5a0
67+
#define SOC_ROM_STACK_SIZE 0x2000
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
3+
*
4+
* SPDX-License-Identifier: Apache-2.0 OR MIT
5+
*/
6+
7+
#pragma once
8+
9+
/* Capabilities */
10+
11+
#define SOC_RTC_FAST_MEM_SUPPORTED 1
12+
#define SOC_RTC_MEM_SUPPORTED 1
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
3+
*
4+
* SPDX-License-Identifier: Apache-2.0 OR MIT
5+
*/
6+
7+
#pragma once
8+
9+
#define SOC_MMU_PAGE_SIZE 0x8000
10+
11+
/* Overall memory map */
12+
#define SOC_IROM_LOW 0x42000000
13+
#define SOC_IROM_HIGH (SOC_IROM_LOW + (SOC_MMU_PAGE_SIZE<<8))
14+
#define SOC_DROM_LOW SOC_IROM_LOW
15+
#define SOC_DROM_HIGH SOC_IROM_HIGH
16+
#define SOC_IROM_MASK_LOW 0x40000000
17+
#define SOC_IROM_MASK_HIGH 0x40050000
18+
#define SOC_DROM_MASK_LOW 0x40000000
19+
#define SOC_DROM_MASK_HIGH 0x40050000
20+
#define SOC_IRAM_LOW 0x40800000
21+
#define SOC_IRAM_HIGH 0x40880000
22+
#define SOC_DRAM_LOW 0x40800000
23+
#define SOC_DRAM_HIGH 0x40880000
24+
#define SOC_RTC_IRAM_LOW 0x50000000 // ESP32-C6 only has 16k LP memory
25+
#define SOC_RTC_IRAM_HIGH 0x50004000
26+
#define SOC_RTC_DRAM_LOW 0x50000000
27+
#define SOC_RTC_DRAM_HIGH 0x50004000
28+
#define SOC_RTC_DATA_LOW 0x50000000
29+
#define SOC_RTC_DATA_HIGH 0x50004000
30+
31+
//First and last words of the D/IRAM region, for both the DRAM address as well as the IRAM alias.
32+
#define SOC_DIRAM_IRAM_LOW 0x40800000
33+
#define SOC_DIRAM_IRAM_HIGH 0x40880000
34+
#define SOC_DIRAM_DRAM_LOW 0x40800000
35+
#define SOC_DIRAM_DRAM_HIGH 0x40880000
36+
37+
#define MAP_DRAM_TO_IRAM(addr) (addr)
38+
#define MAP_IRAM_TO_DRAM(addr) (addr)
39+
40+
// Region of memory accessible via DMA. See esp_ptr_dma_capable().
41+
#define SOC_DMA_LOW 0x40800000
42+
#define SOC_DMA_HIGH 0x40880000
43+
44+
// Region of RAM that is byte-accessible. See esp_ptr_byte_accessible().
45+
#define SOC_BYTE_ACCESSIBLE_LOW 0x40800000
46+
#define SOC_BYTE_ACCESSIBLE_HIGH 0x40880000
47+
48+
//Region of memory that is internal, as in on the same silicon die as the ESP32 CPUs
49+
//(excluding RTC data region, that's checked separately.) See esp_ptr_internal().
50+
#define SOC_MEM_INTERNAL_LOW 0x40800000
51+
#define SOC_MEM_INTERNAL_HIGH 0x40880000
52+
#define SOC_MEM_INTERNAL_LOW1 0x40800000
53+
#define SOC_MEM_INTERNAL_HIGH1 0x40880000
54+
55+
#define SOC_MAX_CONTIGUOUS_RAM_SIZE (SOC_IRAM_HIGH - SOC_IRAM_LOW) ///< Largest span of contiguous memory (DRAM or IRAM) in the address space
56+
57+
// Region of address space that holds peripherals
58+
#define SOC_PERIPHERAL_LOW 0x60000000
59+
#define SOC_PERIPHERAL_HIGH 0x60100000
60+
61+
// CPU sub-system region, contains interrupt config registers
62+
#define SOC_CPU_SUBSYSTEM_LOW 0x20000000
63+
#define SOC_CPU_SUBSYSTEM_HIGH 0x30000000
64+
65+
// Start (highest address) of ROM boot stack, only relevant during early boot
66+
#define SOC_ROM_STACK_START 0x4087e610
67+
#define SOC_ROM_STACK_SIZE 0x2000
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
3+
*
4+
* SPDX-License-Identifier: Apache-2.0 OR MIT
5+
*/
6+
7+
#pragma once
8+
9+
/* Capabilities */
10+
11+
#define SOC_RTC_FAST_MEM_SUPPORTED 1
12+
#define SOC_RTC_MEM_SUPPORTED 1

0 commit comments

Comments
 (0)