machine: add generic board support on non-baremetal hardware

Instead of trying to modify periperhals directly, external functions are
called. For example, __tinygo_gpio_set sets a GPIO pin to a specified
value (high or low). It is expected that binaries made this way will be
linked with some extra libraries that implement support for these
functions.

One particularly interesting case is this experimental board simulator:
https://github.com/aykevl/tinygo-play
Compiling code to WebAssembly with the correct build tag for a board
will enable this board to be simulated in the browser.

Atmel/Microchip based SAMD boards are not currently supported, because
their I2C/SPI support is somewhat uncommon and harder to support in the
machine API. They may require a modification to the machine API for
proper support.
This commit is contained in:
Ayke van Laethem
2019-05-22 17:46:14 +02:00
committed by Ron Evans
parent 40b193f1fa
commit 4ecd478d82
14 changed files with 210 additions and 61 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
// +build nrf51,microbit
// +build microbit
package machine