Ayke van Laethem
72b19555dc
machine: add simulated PWM/timer peripherals
...
I will soon use these as part of the TinyGo tour, to explain the PWM
peripherals on common chips.
2025-04-30 19:44:34 +02:00
Michael Smith
febb3906db
machine/rp2: expose usb endpoint stall handling
2025-04-17 10:15:44 +02:00
Michael Smith
133e32c1c4
machine/rp2: merge common usb code ( #4856 )
...
* machine/rp2: merge common usb code
* chore: add note on noinline reason
2025-04-15 11:07:47 +02:00
Michael Smith
4768c7d431
machine/rp2350: add flash support for rp2350 ( #4803 )
...
* machine/rp2350: add flash support for rp2350
* combine duplicate files
* clean things up and group by source file
* add stubbed out xip cache clean func if needed in the future
* update flash_enable_xip_via_boot2
* remove unused macros and fix inconsistent formatting
* make flash size configurable like rp2040
* add missing flash size configs
* retain big Go CGo compatibility per #4103
* clarify CS0_SIZE source and remove single-use typedef
2025-03-16 09:45:53 +01:00
あーるどん
4f7c64cb24
fix(rp2040): replace loop counter with hw timer for USB SetAddressReq… ( #4796 )
...
* fix(rp2040/rp2350): replace loop counter with hw timer for USB SetAddressRequest timeout.
* fix code format.
---------
Co-authored-by: rdon <you@example.com >
2025-03-13 16:39:43 +01:00
Ron Evans
f76e8d2812
fix: ensure use of pointers for SPI interface on atsam21/atsam51 and other machines/boards that were missing implementation. ( #4798 )
...
Signed-off-by: deadprogram <ron@hybridgroup.com >
2025-03-11 12:50:31 -03:00
deadprogram
2bee29959b
refactor: use *SPI everywhere to make consistant for implementations.
...
Fixes #4663 "in reverse" by making SPI a pointer everywhere, as discussed
in the comments.
Signed-off-by: deadprogram <ron@hybridgroup.com >
2025-03-11 06:06:31 -07:00
Ayke van Laethem
cab3834bc9
riscv-qemu: add VirtIO RNG device
...
This implements machine.GetRNG() using VirtIO. This gets the tests to
pass for crypto/md5 and crypto/sha1 that use crypto/rand in their tests.
2025-03-11 04:22:16 -07:00
Elias Naur
7f970a45c2
machine: don't block the rp2xxx UART interrupt handler
...
Don't block forever if there's nothing to receive. On the other hand,
process the entire FIFO, not just a single byte.
This fixes an issue where the rp2350 would hang after programming through
openocd, where the UART0 interrupt would be spuriously pending.
2025-03-11 02:01:18 -07:00
Elias Naur
226744a538
machine: correct register address for Pin.SetInterrupt for rp2350 ( #4782 )
...
Fixes #4689
2025-03-09 10:26:38 -03:00
Ayke van Laethem
e49663809b
machine: fix RP2040 Pico board on the playground
...
Right now it doesn't compile, with errors like the following:
# machine
/app/tinygo/src/machine/board_pico.go:7:13: undefined: GPIO0
/app/tinygo/src/machine/board_pico.go:8:13: undefined: GPIO1
/app/tinygo/src/machine/board_pico.go:9:13: undefined: GPIO2
/app/tinygo/src/machine/board_pico.go:10:13: undefined: GPIO3
[...etc...]
This patch should fix that.
2025-03-07 07:20:40 -08:00
Elias Naur
7d6d93f7aa
machine: bump rp2040 to 200MHz ( #4768 )
...
* machine: add support for core voltage adjustments to rp2040
In preparation for bumping the core frequency of the rp2040, this
change implements the required core voltage adjustment logic.
* machine: bump rp2040 to 200MHz
2025-03-04 08:57:59 -03:00
Elias Naur
20fc814635
machine: replace hard-coded cpu frequencies on rp2xxx ( #4767 )
...
Missed from the earlier change that bumped the rp2350 frequency.
2025-03-02 08:38:29 -03:00
Elias Naur
b95effbdd7
machine: bump rp2350 CPUFrequency to 150 MHz ( #4766 )
...
Leave rp2040 speed bump to 200 MHz for a future change, because it
requires bumping the core voltage as well[0].
[0] https://github.com/raspberrypi/pico-sdk/releases/tag/2.1.1
2025-03-01 10:09:53 -03:00
Elias Naur
92c130c7be
machine: compute rp2 clock dividers from crystal and target frequency ( #4747 )
...
Follow-up to #4728 which implemented the algorithm for finding the
dividers.
The calculation is computed at compile time by interp, as verified by
building example/blinky1 for -target pico.
2025-02-28 19:05:27 -03:00
Ayke van Laethem
a1be8cd9fe
machine/usb/descriptor: avoid bytes package
...
We can't use the bytes package in Go 1.24 since it would result in an
import cycle. Therefore, use bytealg.Index instead.
(I'm not sure this code is correct - just searching for a range of bytes
seems brittle. But at least this commit shouldn't change the code).
2025-02-25 14:41:42 +01:00
Ayke van Laethem
52b9fcd57f
machine: remove bytes package dependency in flash code
...
This also moves flash padding code to a single place, since it was
copied 5 times.
This change is necessary in Go 1.24 to avoid an import cycle.
2025-02-25 14:41:42 +01:00
Ron Evans
6e97079367
target: add Pimoroni Pico Plus2 ( #4735 )
...
* machine: separate definitions for ADC pins on rp2350/rp2350b
Signed-off-by: deadprogram <ron@hybridgroup.com >
* targets: add support for Pimoroni Pico Plus2
Signed-off-by: deadprogram <ron@hybridgroup.com >
---------
Signed-off-by: deadprogram <ron@hybridgroup.com >
Co-authored-by: Patricio Whittingslow <graded.sp@gmail.com >
2025-02-21 09:56:52 +01:00
soypat
9c7bbce029
rp2350: add pll generalized solution; fix ADC handles; pwm period fix
2025-02-21 09:56:52 +01:00
soypat
0ec1cb1e19
machine/rp2350: extending support to include the rp2350b
2025-02-21 09:56:52 +01:00
HattoriHanzo031
d55a89f96a
board: support for NRF51 HW-651 ( #4712 )
...
NRF51: Support for NRF51 HW-651 board
* smoketest
* removed redundant flash-method
* smoketest fix
* description and links
* link fix
2025-01-30 05:46:52 +01:00
Yurii Soldak
b7fcf6ad68
nrf: fix adc read near zero
2025-01-23 13:03:25 +08:00
milkpirate
7417c14c2d
nrf: make ADC resolution changeable ( #4701 )
...
Signed-off-by: Paul Schroeder <milkpirate@users.noreply.github.com >
2025-01-20 21:51:05 +01:00
vaaski
4f39be9c3b
targets: esp32c3-supermini ( #4518 )
2025-01-20 21:44:58 +01:00
Scott Feldman
7305a44f0c
targets: add support for Elecrow Pico rp2350 W5 boards ( #4706 )
...
https://www.elecrow.com/pico-w5-microcontroller-development-boards-rp2350-microcontroller-board.html
Just the basics to get several test to work (blinky1, flash).
This board has an rtl8720d Wifi/bluetooth chip wired to UART1, but the
rtl8720d firmware installed is the AT cmd set, not the RPC interface
used by the rtl8720dn driver, so no wifi support at the moment.
---------
Co-authored-by: Yurii Soldak <ysoldak@gmail.com >
2025-01-20 15:36:03 +01:00
Scott Feldman
74effd2fa9
targets: add support for Elecrow Pico rp2040 W5 boards ( #4705 )
...
https://www.elecrow.com/pico-w5-microcontroller-development-boards-rp2040-microcontroller-board-support-wifi-2-4ghz-5ghz-bluetooth5.html
Just the basics to get several test to work (blinky1, flash).
This board has an rtl8720d Wifi/bluetooth chip wired to UART1, but the
rtl8720d firmware installed is the AT cmd set, not the RPC interface
used by the rtl8720dn driver, so no wifi support at the moment.
2025-01-20 13:48:51 +01:00
Roman Grudzinski
127557d27e
Fix ADC channel selecting and ADC value reading
2025-01-17 09:18:30 +01:00
Roman Grudzinski
fd89e9b83a
Fix stm32f103 ADC ( #4702 )
...
fix: Fix stm32f103 ADC
2025-01-16 10:06:22 +01:00
Volodymyr Pobochii
b15adf23f8
machine: add support for waveshare-rp2040-tiny ( #4683 )
2025-01-14 01:53:40 +01:00
deadprogram
194438cdd6
fix: correctly handle calls for GetRNG() when being made from nrf devices with SoftDevice enabled.
...
Signed-off-by: deadprogram <ron@hybridgroup.com >
2025-01-12 16:44:35 +01:00
soypat
b898916d52
rp2350 cleanup: unexport internal USB and clock package variable, consts and types
2024-12-26 10:49:48 +01:00
deadprogram
6507765883
feature: make RNG implementation shared for rp2040/rp2350
...
Signed-off-by: deadprogram <ron@hybridgroup.com >
2024-12-19 12:54:25 +01:00
deadprogram
c4cfc01ba3
targets: add support for Pimoroni Tiny2350 board
...
Signed-off-by: deadprogram <ron@hybridgroup.com >
2024-12-19 10:12:57 +01:00
deadprogram
f64e70e659
feature: make SPI implementation shared for rp2040/rp2350
...
Signed-off-by: deadprogram <ron@hybridgroup.com >
2024-12-19 08:01:36 +01:00
deadprogram
64fa7853a7
feature: make i2c implementation shared for rp2040/rp2350
...
Signed-off-by: deadprogram <ron@hybridgroup.com >
2024-12-18 21:16:07 +01:00
Patricio Whittingslow
37f35f8c91
Add RP2350 support ( #4459 )
...
machine/rp2350: add support
* add linker scripts for rp2350
* add bootloader
* begin melding rp2040 and rp2350 APIs
* add UART
* add rp2350 boot patching
* Fix RP2350 memory layout (#4626 )
* Remove rp2040-style second stage bootloader.
* Add 'minimum viable' IMAGE_DEF embedded block
* Create a pico2 specific target
* Implement rp2350 init, clock, and uart support
* Merge rp2 reset code back together
* Separate chip-specific clock definitions
* Clear pad isolation bit on rp2350
* Init UART in rp2350 runtime
* Correct usb/serial initialization order
* Implement jump-to-bootloader
* test: add pico2 to smoketests
---------
Signed-off-by: deadprogram <ron@hybridgroup.com >
Co-authored-by: Matthew Mets <matt.mets@cibomahto.com >
Co-authored-by: Matt Mets <matt@blinkinlabs.com >
Co-authored-by: deadprogram <ron@hybridgroup.com >
2024-12-18 19:36:30 +01:00
deadprogram
5701bf81f3
feature: modify i2s interface/implementation to better match specification
...
Signed-off-by: deadprogram <ron@hybridgroup.com >
2024-12-18 15:23:00 +01:00
Ron Evans
17302ca762
targets: add implementation for Tillitis TKey device ( #4631 )
...
* initial implementation for Tillitis TKey device
* add UART implementation for TKey
* add Pin interface implementation for TKey touch sensor
* add RNG interface implementation for TKey
* add helpful machine package functions to return identifiers such as name and version for TKey
* use built-in timer for sleep timing on TKey
* modify UART implementation for TKey to implement Serialer interface
* implement BLAKE2s ROM function call for TKey device
* handle abort by triggering TKey device fault using illegal instruction to halt CPU
* simplify TKey implementation by inheriting from existing riscv32 target
* return error for trying to configure invalid baudrates on UART
* add tkey to builder test
* be very specific for features passed to LLVM for specific config in use for TKey
* handle feedback items from TKey device code review
Signed-off-by: deadprogram <ron@hybridgroup.com >
2024-12-14 14:26:03 +01:00
sago35
b8420e78bb
machine/usb/adc/midi: fix PitchBend
2024-10-25 06:25:49 +01:00
sago35
f0d523f778
machine/usb/adc/midi: clarify operator precedence
2024-10-25 06:25:49 +01:00
Ayke van Laethem
e615c25319
targets: add WaveShare ESP-C3-32S-Kit
...
I've had this board for a while now, but never added proper TinyGo
support. So here is a PR to do just that.
2024-10-22 11:21:48 +01:00
Ayke van Laethem
b2fbbeb771
esp32c3: add smoke tests for a few boards
...
These boards probably haven't been working since the addition of I2C,
because they were missing some constants in the machine package.
2024-10-22 09:23:31 +01:00
Ayke van Laethem
bcfe751f62
fe310: support GPIO PinInput
...
This is needed to support switching between input and output.
2024-10-21 18:30:31 +01:00
Warren Guy
1f3e0004a9
add board: RAKwireless RAK4631 ( #4454 )
...
targets: add rak4631
2024-09-05 11:49:36 +02:00
Dan Kegel
5368dd22c5
misspell.csv: add new misspellings; also check in result of 'make spellfix'.
2024-08-15 10:34:35 +02:00
Unrud
815784bd96
machine/usb/descriptor: Reset joystick physical
2024-08-14 18:43:27 +02:00
Unrud
7fc64a27b4
machine/usb/descriptor: Drop second joystick hat
2024-08-14 18:43:27 +02:00
Unrud
c38bf27091
machine/usb/hid/joystick: Allow more hat switches
2024-08-14 18:43:27 +02:00
Unrud
9a2fab8874
machine/usb/descriptor: Add more HID... functions
2024-08-14 18:43:27 +02:00
Unrud
f1516ad3ee
machine/usb/descriptor: Fix encoding of values
...
The limit for positive values is incorrect and leads to an overflow (e.g. 0xFF and 0xFFFF become -1)
2024-08-14 18:43:27 +02:00