Skip to content

Commit 52ee82f

Browse files
committed
machine/esp32xx: add WASM simulator support for ESP32-C3/ESP32-S3 targets
Signed-off-by: deadprogram <ron@hybridgroup.com>
1 parent 0755145 commit 52ee82f

File tree

2 files changed

+136
-0
lines changed

2 files changed

+136
-0
lines changed

GNUmakefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -644,6 +644,8 @@ ifneq ($(WASM), 0)
644644
@$(MD5SUM) test.wasm
645645
GOOS=js GOARCH=wasm $(TINYGO) build -size short -o test.wasm -tags=pico examples/blinky1
646646
@$(MD5SUM) test.wasm
647+
GOOS=js GOARCH=wasm $(TINYGO) build -size short -o test.wasm -tags=xiao_esp32s3 examples/blinky1
648+
@$(MD5SUM) test.wasm
647649
endif
648650
# test all targets/boards
649651
$(TINYGO) build -size short -o test.hex -target=pca10040-s132v6 examples/blinky1
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
//go:build !baremetal && (xiao_esp32c3 || xiao_esp32s3)
2+
3+
// Simulator support for ESP32-C3 and ESP32-S3 based boards.
4+
5+
package machine
6+
7+
// Hardware pin numbers
8+
const (
9+
GPIO0 Pin = 0
10+
GPIO1 Pin = 1
11+
GPIO2 Pin = 2
12+
GPIO3 Pin = 3
13+
GPIO4 Pin = 4
14+
GPIO5 Pin = 5
15+
GPIO6 Pin = 6
16+
GPIO7 Pin = 7
17+
GPIO8 Pin = 8
18+
GPIO9 Pin = 9
19+
GPIO10 Pin = 10
20+
GPIO11 Pin = 11
21+
GPIO12 Pin = 12
22+
GPIO13 Pin = 13
23+
GPIO14 Pin = 14
24+
GPIO15 Pin = 15
25+
GPIO16 Pin = 16
26+
GPIO17 Pin = 17
27+
GPIO18 Pin = 18
28+
GPIO19 Pin = 19
29+
GPIO20 Pin = 20
30+
GPIO21 Pin = 21
31+
GPIO26 Pin = 26
32+
GPIO27 Pin = 27
33+
GPIO28 Pin = 28
34+
GPIO29 Pin = 29
35+
GPIO30 Pin = 30
36+
GPIO31 Pin = 31
37+
GPIO32 Pin = 32
38+
GPIO33 Pin = 33
39+
GPIO34 Pin = 34
40+
GPIO35 Pin = 35
41+
GPIO36 Pin = 36
42+
GPIO37 Pin = 37
43+
GPIO38 Pin = 38
44+
GPIO39 Pin = 39
45+
GPIO40 Pin = 40
46+
GPIO41 Pin = 41
47+
GPIO42 Pin = 42
48+
GPIO43 Pin = 43
49+
GPIO44 Pin = 44
50+
GPIO45 Pin = 45
51+
GPIO46 Pin = 46
52+
GPIO47 Pin = 47
53+
GPIO48 Pin = 48
54+
)
55+
56+
const (
57+
ADC0 Pin = GPIO1
58+
ADC2 Pin = GPIO2
59+
ADC3 Pin = GPIO3
60+
ADC4 Pin = GPIO4
61+
ADC5 Pin = GPIO5
62+
ADC6 Pin = GPIO6
63+
ADC7 Pin = GPIO7
64+
ADC8 Pin = GPIO8
65+
ADC9 Pin = GPIO9
66+
ADC10 Pin = GPIO10
67+
ADC11 Pin = GPIO11
68+
ADC12 Pin = GPIO12
69+
ADC13 Pin = GPIO13
70+
ADC14 Pin = GPIO14
71+
ADC15 Pin = GPIO15
72+
ADC16 Pin = GPIO16
73+
ADC17 Pin = GPIO17
74+
ADC18 Pin = GPIO18
75+
ADC19 Pin = GPIO19
76+
ADC20 Pin = GPIO20
77+
)
78+
79+
// Channel values below are nil, so that they get filled in on the first use.
80+
// This is the same as what happens on baremetal.
81+
82+
var PWM0 = &timerType{
83+
instance: 0,
84+
frequency: 16e6,
85+
bits: 15,
86+
prescalers: []int{1, 2, 4, 8, 16, 32, 64, 128},
87+
channelPins: [][]Pin{
88+
nil, // channel 0
89+
nil, // channel 1
90+
nil, // channel 2
91+
nil, // channel 3
92+
},
93+
}
94+
95+
var PWM1 = &timerType{
96+
instance: 1,
97+
frequency: 16e6,
98+
bits: 15,
99+
prescalers: []int{1, 2, 4, 8, 16, 32, 64, 128},
100+
channelPins: [][]Pin{
101+
nil, // channel 0
102+
nil, // channel 1
103+
nil, // channel 2
104+
nil, // channel 3
105+
},
106+
}
107+
108+
var PWM2 = &timerType{
109+
instance: 2,
110+
frequency: 16e6,
111+
bits: 15,
112+
prescalers: []int{1, 2, 4, 8, 16, 32, 64, 128},
113+
channelPins: [][]Pin{
114+
nil, // channel 0
115+
nil, // channel 1
116+
nil, // channel 2
117+
nil, // channel 3
118+
},
119+
}
120+
121+
var PWM3 = &timerType{
122+
instance: 3,
123+
frequency: 16e6,
124+
bits: 15,
125+
prescalers: []int{1, 2, 4, 8, 16, 32, 64, 128},
126+
channelPins: [][]Pin{
127+
nil, // channel 0
128+
nil, // channel 1
129+
nil, // channel 2
130+
nil, // channel 3
131+
},
132+
}
133+
134+
var I2C0 = &I2C{Bus: 0}

0 commit comments

Comments
 (0)