Skip to content

Commit 48a5927

Browse files
authored
Generate peripheral support table (#3617)
1 parent f6d54a0 commit 48a5927

File tree

12 files changed

+1004
-47
lines changed

12 files changed

+1004
-47
lines changed

esp-hal/README.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,64 @@ For help getting started with this HAL, please refer to [The Rust on ESP Book] a
4646
[s2-trm]: https://www.espressif.com/sites/default/files/documentation/esp32-s2_technical_reference_manual_en.pdf
4747
[s3-trm]: https://www.espressif.com/sites/default/files/documentation/esp32-s3_technical_reference_manual_en.pdf
4848

49+
## Peripheral support
50+
51+
<!-- The following table is machine generated. Do not edit the comments and the table by hand! -->
52+
<!-- start chip support table -->
53+
| Driver | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C6 | ESP32-H2 | ESP32-S2 | ESP32-S3 |
54+
| ------------------ |:-----:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|
55+
| ADC | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
56+
| AES | ⚒️ | | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
57+
| ASSIST_DEBUG | | ⚒️ | ⚒️ | ⚒️ | ⚒️ | | ⚒️ |
58+
| DAC | ⚒️ | | | | | ⚒️ | |
59+
| DMA | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
60+
| DS | | | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
61+
| ECC | | ⚒️ | | ⚒️ | ⚒️ | | |
62+
| Ethernet || | | | | | |
63+
| ETM | | | | ⚒️ | ⚒️ | | |
64+
| GPIO | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
65+
| HMAC | | | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
66+
| I2C master | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
67+
| I2C slave ||||||||
68+
| I2S | ⚒️ | | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
69+
| Interrupts | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
70+
| IOMUX | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
71+
| Camera interface || | | | | | ⚒️ |
72+
| RGB display | ⚒️ | | | | || ⚒️ |
73+
| LEDC | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
74+
| MCPWM | ⚒️ | | | ⚒️ | ⚒️ | | ⚒️ |
75+
| PARL_IO | | | | ⚒️ | ⚒️ | | |
76+
| PCNT | ⚒️ | | | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
77+
| PSRAM | ⚒️ | | | | | ⚒️ | ⚒️ |
78+
| RMT | ⚒️ | | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
79+
| RNG | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
80+
| RSA | ⚒️ | | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
81+
| SDIO host | ⚒️ | | | | | | ⚒️ |
82+
| SDIO slave | ⚒️ | | | ⚒️ | | | |
83+
| Light/deep sleep | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
84+
| SHA | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
85+
| SPI master | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
86+
| SPI slave | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
87+
| SYSTIMER | | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
88+
| Temperature sensor | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
89+
| Timers | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
90+
| Touch | ⚒️ | | | | |||
91+
| TWAI | ⚒️ | | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
92+
| UART | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
93+
| ULP (FSM) | ⚒️ | | | | | ⚒️ | ⚒️ |
94+
| ULP (RISC-V) | | | | ⚒️ | | ⚒️ | ⚒️ |
95+
| USB OTG FS | | | | | | ⚒️ | ⚒️ |
96+
| USB Serial/JTAG | | | ⚒️ | ⚒️ | ⚒️ | | ⚒️ |
97+
| WIFI | ⚒️ | ⚒️ | ⚒️ | ⚒️ | | ⚒️ | ⚒️ |
98+
| Bluetooth | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | | ⚒️ |
99+
| IEEE 802.15.4 | | | | ⚒️ | ⚒️ | | |
100+
101+
* Empty cell: not available
102+
* ❌: Not supported
103+
* ⚒️: Partial support
104+
* ✔️: Supported
105+
<!-- end chip support table -->
106+
49107
## `unstable` feature
50108

51109
The stable feature set is designed to remain consistent and reliable. Other parts guarded by the `unstable` feature, however, are still under active development and may undergo breaking changes and are disabled by default.

esp-metadata/devices/esp32.toml

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
# ESP32 Device Metadata
2+
#
3+
# Empty [`device.driver`] tables imply `partial` support status.
4+
#
5+
# If you modify a driver support status, run `cargo xtask update-chip-support-table` to
6+
# update the table in the esp-hal README.
7+
18
[device]
29
name = "esp32"
310
arch = "xtensa"
@@ -11,6 +18,7 @@ peripherals = [
1118
"bb",
1219
"dport",
1320
"efuse",
21+
"emac",
1422
"flash_encryption",
1523
"frc_timer",
1624
"gpio",
@@ -80,6 +88,64 @@ symbols = [
8088

8189
memory = [{ name = "dram", start = 0x3FFA_E000, end = 0x4000_0000 }]
8290

91+
[device.gpio]
92+
status = "supported"
93+
94+
[device.i2c_master]
95+
status = "supported"
96+
97+
[device.i2c_slave]
98+
status = "not_supported"
99+
83100
[device.rmt]
101+
status = "partial"
84102
ram_start = 0x3ff56800
85103
channel_ram_size = 64
104+
105+
[device.spi_master]
106+
status = "supported"
107+
108+
[device.uart]
109+
status = "supported"
110+
111+
[device.ethernet]
112+
status = "not_supported"
113+
114+
[device.camera]
115+
status = "not_supported"
116+
[device.rgb_display]
117+
118+
# Other drivers which are partially supported but have no other configuration:
119+
120+
## Crypto
121+
[device.aes]
122+
[device.rsa]
123+
[device.sha]
124+
[device.rng]
125+
126+
## Interfaces
127+
[device.i2s]
128+
[device.ledc]
129+
[device.mcpwm]
130+
[device.pcnt]
131+
[device.sd_host]
132+
[device.sd_slave]
133+
[device.spi_slave]
134+
[device.touch]
135+
[device.twai]
136+
137+
## Miscellaneous
138+
[device.adc]
139+
[device.dac]
140+
[device.dma]
141+
[device.interrupts]
142+
[device.io_mux]
143+
[device.psram]
144+
[device.temp_sensor]
145+
[device.sleep]
146+
[device.timers]
147+
[device.ulp_fsm]
148+
149+
## Radio
150+
[device.wifi]
151+
[device.bt]

esp-metadata/devices/esp32c2.toml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
# ESP32-C2 Device Metadata
2+
#
3+
# Empty [`device.driver`] tables imply `partial` support status.
4+
#
5+
# If you modify a driver support status, run `cargo xtask update-chip-support-table` to
6+
# update the table in the esp-hal README.
7+
18
[device]
29
name = "esp32c2"
310
arch = "riscv"
@@ -56,6 +63,43 @@ symbols = [
5663

5764
memory = [{ name = "dram", start = 0x3FCA_0000, end = 0x3FCE_0000 }]
5865

66+
[device.gpio]
67+
status = "supported"
68+
5969
[device.i2c_master]
70+
status = "supported"
6071
has_fsm_timeouts = true
6172
has_hw_bus_clear = true
73+
74+
[device.spi_master]
75+
status = "supported"
76+
77+
[device.uart]
78+
status = "supported"
79+
80+
# Other drivers which are partially supported but have no other configuration:
81+
82+
## Crypto
83+
# [device.aes] Product portfolio lists AES, but TRM only has XTS_AES?
84+
[device.ecc]
85+
[device.sha]
86+
[device.rng]
87+
88+
## Interfaces
89+
[device.ledc]
90+
[device.spi_slave]
91+
92+
## Miscellaneous
93+
[device.assist_debug]
94+
[device.adc]
95+
[device.dma]
96+
[device.interrupts]
97+
[device.io_mux]
98+
[device.temp_sensor]
99+
[device.sleep]
100+
[device.timers]
101+
[device.systimer]
102+
103+
## Radio
104+
[device.wifi]
105+
[device.bt]

esp-metadata/devices/esp32c3.toml

Lines changed: 54 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
# ESP32-C3 Device Metadata
2+
#
3+
# Empty [`device.driver`] tables imply `partial` support status.
4+
#
5+
# If you modify a driver support status, run `cargo xtask update-chip-support-table` to
6+
# update the table in the esp-hal README.
7+
18
[device]
29
name = "esp32c3"
310
arch = "riscv"
@@ -70,10 +77,54 @@ symbols = [
7077

7178
memory = [{ name = "dram", start = 0x3FC8_0000, end = 0x3FCE_0000 }]
7279

73-
[device.rmt]
74-
ram_start = 0x60016400
75-
channel_ram_size = 48
80+
81+
[device.gpio]
82+
status = "supported"
7683

7784
[device.i2c_master]
85+
status = "supported"
7886
has_fsm_timeouts = true
7987
has_hw_bus_clear = true
88+
89+
[device.rmt]
90+
status = "partial"
91+
ram_start = 0x60016400
92+
channel_ram_size = 48
93+
94+
[device.spi_master]
95+
status = "supported"
96+
97+
[device.uart]
98+
status = "supported"
99+
100+
# Other drivers which are partially supported but have no other configuration:
101+
102+
## Crypto
103+
[device.aes]
104+
[device.ds]
105+
[device.rsa]
106+
[device.sha]
107+
[device.hmac]
108+
[device.rng]
109+
110+
## Interfaces
111+
[device.i2s]
112+
[device.ledc]
113+
[device.spi_slave]
114+
[device.twai]
115+
[device.usb_serial_jtag]
116+
117+
## Miscellaneous
118+
[device.adc]
119+
[device.assist_debug]
120+
[device.dma]
121+
[device.interrupts]
122+
[device.io_mux]
123+
[device.temp_sensor]
124+
[device.timers]
125+
[device.sleep]
126+
[device.systimer]
127+
128+
## Radio
129+
[device.wifi]
130+
[device.bt]

esp-metadata/devices/esp32c6.toml

Lines changed: 61 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
# ESP32-C6 Device Metadata
2+
#
3+
# Empty [`device.driver`] tables imply `partial` support status.
4+
#
5+
# If you modify a driver support status, run `cargo xtask update-chip-support-table` to
6+
# update the table in the esp-hal README.
7+
18
[device]
29
name = "esp32c6"
310
arch = "riscv"
@@ -102,10 +109,61 @@ symbols = [
102109

103110
memory = [{ name = "dram", start = 0x4080_0000, end = 0x4088_0000 }]
104111

105-
[device.rmt]
106-
ram_start = 0x60006400
107-
channel_ram_size = 48
112+
[device.gpio]
113+
status = "supported"
108114

109115
[device.i2c_master]
116+
status = "supported"
110117
has_fsm_timeouts = true
111118
has_hw_bus_clear = true
119+
120+
[device.rmt]
121+
status = "partial"
122+
ram_start = 0x60006400
123+
channel_ram_size = 48
124+
125+
[device.spi_master]
126+
status = "supported"
127+
128+
[device.uart]
129+
status = "supported"
130+
131+
# Other drivers which are partially supported but have no other configuration:
132+
133+
## Crypto
134+
[device.aes]
135+
[device.ds]
136+
[device.ecc]
137+
[device.rsa]
138+
[device.sha]
139+
[device.hmac]
140+
[device.rng]
141+
142+
## Interfaces
143+
[device.i2s]
144+
[device.ledc]
145+
[device.mcpwm]
146+
[device.parl_io]
147+
[device.pcnt]
148+
[device.spi_slave]
149+
[device.sd_slave]
150+
[device.twai]
151+
[device.usb_serial_jtag]
152+
153+
## Miscellaneous
154+
[device.adc]
155+
[device.assist_debug]
156+
[device.dma]
157+
[device.etm]
158+
[device.interrupts]
159+
[device.io_mux]
160+
[device.sleep]
161+
[device.temp_sensor]
162+
[device.systimer]
163+
[device.timers]
164+
[device.ulp_riscv]
165+
166+
## Radio
167+
[device.wifi]
168+
[device.bt]
169+
[device.ieee802154]

0 commit comments

Comments
 (0)