mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-09-01 02:09:06 +00:00
Puya PY32F MCU support (#5106)
* pinout yamls removed * machine: implement default UART pin configuration for Embedfire boards * flash command moved to chip level so VS Code plugin can select bare chip * machine: add support for alternate pin mode configuration * add build targets for embedfire on py32 * add support for embedfire target in GNUmakefile for py32 * lib/py32-svd: remove duplicate DBGMCU.IDCODE CODE field Update submodule to fix duplicate SetIDCODE/GetIDCODE method declarations in the generated py32f002bxx.go device file. * update subproject commit reference in py32-svd * refactor: update CPU frequency handling in machine and runtime packages * refactor: replace ConfigureUARTPin function with direct pin configuration in UART setup * SetAltFunc documentation for GPIO pin alternate functions * refactor: improve UART write and flush error handling with timeout * machine/py32: generalize UART driver to any USART Add a per-instance setup func to the UART type so the driver is no longer hardwired to USART1. DefaultUART stays USART1; add UART2 (USART2) in a separately build-tagged file since py32f002x parts lack USART2. RX IRQ handlers reference runtime-assigned vars to break the init cycle, and setup is assigned in the var initializer so it runs before InitSerial. Add the py32f003_32k_4k target (32K flash / 4K RAM). * Add canonical PY32F002, F003, and F030 density targets Use CMSIS/pyocd device names for target files and build tags. Add all F003 and F030 densities plus F002A/B, correct F002B to 24K flash and its own startup file, fix the F030x8 pyocd target, and update Embedfire inheritance. * Add targets for all PY32 CMSIS devices * Support all PY32 register layout variants * machine/py32: use generated register definitions * machine/py32: fix alternate-function documentation * machine/py32: report the configured CPU frequency * machine/py32: use unsafe.Add for GPIO ports * machine/py32: bound and yield UART polling * machine/py32: configure UART pins from UARTConfig * build: use the current PY32 SVD repository URL * test: cover PY32 UART register layouts * machine/py32: restore dynamic CPU frequency tracking * machine/py32: share the USART TX-ready bit * targets/py32: scale system stacks with RAM * machine/py32: keep clock state internal * targets/py32: normalize generated metadata * machine/py32: normalize GPIO configuration * machine/py32: fix T020 UART setup * machine/py32: reduce clock variant files * machine/py32: clean up UART variants * machine/py32: decouple UART clock capability * lib/py32-svd: use organization repository * runtime/py32: name 24MHz HSI encodings * machine/py32: derive startup clock from capability * machine/py32: use generated USART clock mask * machine/py32: name T020 8-bit UART mode * ci: include PY32 in sharded smoke tests * runtime: remove PY32 HSI frequency workaround
This commit is contained in:
+9
-2
@@ -2,9 +2,9 @@
|
||||
|
||||
.PHONY: gen-device gen-device-avr gen-device-esp gen-device-nrf gen-device-sam \
|
||||
gen-device-sifive gen-device-kendryte gen-device-nxp gen-device-rp \
|
||||
gen-device-stm32 gen-device-renesas
|
||||
gen-device-stm32 gen-device-renesas gen-device-py32 gen-target-py32
|
||||
|
||||
gen-device: gen-device-avr gen-device-esp gen-device-nrf gen-device-sam gen-device-sifive gen-device-kendryte gen-device-nxp gen-device-rp ## Generate microcontroller-specific sources
|
||||
gen-device: gen-device-avr gen-device-esp gen-device-nrf gen-device-sam gen-device-sifive gen-device-kendryte gen-device-nxp gen-device-rp gen-device-py32 ## Generate microcontroller-specific sources
|
||||
ifneq ($(RENESAS), 0)
|
||||
gen-device: gen-device-renesas
|
||||
endif
|
||||
@@ -58,3 +58,10 @@ gen-device-rp: build/gen-device-svd
|
||||
gen-device-renesas: build/gen-device-svd
|
||||
./build/gen-device-svd -source=https://github.com/cmsis-svd/cmsis-svd-data/tree/master/data/Renesas lib/cmsis-svd/data/Renesas/ src/device/renesas/
|
||||
GO111MODULE=off $(GO) fmt ./src/device/renesas
|
||||
|
||||
gen-device-py32: build/gen-device-svd
|
||||
./build/gen-device-svd -source=https://github.com/tinygo-org/py32-svd lib/py32-svd/svd src/device/py32/
|
||||
GO111MODULE=off $(GO) fmt ./src/device/py32
|
||||
|
||||
gen-target-py32: ## Generate PY32 target and linker definitions
|
||||
$(GO) run ./tools/gen-py32-targets
|
||||
|
||||
@@ -19,6 +19,7 @@ SMOKETEST_SUBTARGETS = \
|
||||
smoketest-rp2xxx \
|
||||
smoketest-pwm-usb \
|
||||
smoketest-stm32 \
|
||||
smoketest-py32 \
|
||||
smoketest-avr \
|
||||
smoketest-esp \
|
||||
smoketest-riscv \
|
||||
@@ -403,6 +404,37 @@ ifneq ($(STM32), 0)
|
||||
@$(MD5SUM) $(SMOKE_OUT).hex
|
||||
endif
|
||||
|
||||
smoketest-py32: SMOKE_OUT = build/smoke/py32
|
||||
smoketest-py32: | build/smoke
|
||||
ifneq ($(PY32), 0)
|
||||
$(TINYGO) build -size short -o $(SMOKE_OUT).hex -target=embedfire-py32f030 examples/blinky1
|
||||
@$(MD5SUM) $(SMOKE_OUT).hex
|
||||
$(TINYGO) build -size short -o $(SMOKE_OUT).hex -target=embedfire-py32f030 examples/echo
|
||||
@$(MD5SUM) $(SMOKE_OUT).hex
|
||||
$(TINYGO) build -size short -o $(SMOKE_OUT).hex -target=embedfire-py32f002b examples/blinky1
|
||||
@$(MD5SUM) $(SMOKE_OUT).hex
|
||||
$(TINYGO) build -size short -o $(SMOKE_OUT).hex -target=embedfire-py32f002b examples/echo
|
||||
@$(MD5SUM) $(SMOKE_OUT).hex
|
||||
$(TINYGO) build -size short -o $(SMOKE_OUT).hex -target=py32f002bx5 ./testdata/py32-uart
|
||||
@$(MD5SUM) $(SMOKE_OUT).hex
|
||||
$(TINYGO) build -size short -o $(SMOKE_OUT).hex -target=py32f003x6 ./testdata/py32-uart
|
||||
@$(MD5SUM) $(SMOKE_OUT).hex
|
||||
$(TINYGO) build -size short -o $(SMOKE_OUT).hex -target=py32f030x8 ./testdata/py32-uart
|
||||
@$(MD5SUM) $(SMOKE_OUT).hex
|
||||
$(TINYGO) build -size short -o $(SMOKE_OUT).hex -target=py32f403xb examples/echo
|
||||
@$(MD5SUM) $(SMOKE_OUT).hex
|
||||
$(TINYGO) build -size short -o $(SMOKE_OUT).hex -target=py32f030x8 ./testdata/py32-clock
|
||||
@$(MD5SUM) $(SMOKE_OUT).hex
|
||||
$(TINYGO) build -size short -o $(SMOKE_OUT).hex -target=py32f403xb ./testdata/py32-clock
|
||||
@$(MD5SUM) $(SMOKE_OUT).hex
|
||||
$(TINYGO) build -size short -o $(SMOKE_OUT).hex -target=py32e407xc examples/echo
|
||||
@$(MD5SUM) $(SMOKE_OUT).hex
|
||||
$(TINYGO) build -size short -o $(SMOKE_OUT).hex -target=py32f410xb examples/echo
|
||||
@$(MD5SUM) $(SMOKE_OUT).hex
|
||||
$(TINYGO) build -size short -o $(SMOKE_OUT).hex -target=py32t020x5 examples/echo
|
||||
@$(MD5SUM) $(SMOKE_OUT).hex
|
||||
endif
|
||||
|
||||
smoketest-avr: SMOKE_OUT = build/smoke/avr
|
||||
smoketest-avr: | build/smoke
|
||||
$(TINYGO) build -size short -o $(SMOKE_OUT).hex -target=atmega328pb examples/blinkm
|
||||
|
||||
Reference in New Issue
Block a user