Commit Graph

349 Commits

Author SHA1 Message Date
Ayke van Laethem dd5b5a381c stm32: initial support 2018-09-22 01:51:44 +02:00
Ayke van Laethem 12298d23a7 all: move generic ARM bits into separate files 2018-09-22 01:44:47 +02:00
Ayke van Laethem 895d109fc4 compiler: run flash command in a shell 2018-09-22 01:40:46 +02:00
Ayke van Laethem 7517ac86e4 runtime: merge common sleep() functions 2018-09-22 01:40:04 +02:00
Ayke van Laethem 7c16f6c904 tools/gen-device-svd: make source URL configurable 2018-09-22 01:20:34 +02:00
Ayke van Laethem b705b332a7 tools/gen-device-svd: indentation in .s file 2018-09-22 01:09:08 +02:00
Ayke van Laethem e0d13f489f tools/gen-device/svd: auto-generate output directory 2018-09-22 01:08:42 +02:00
Ayke van Laethem d841daa32b tools/gen-device-svd: emit correct Go code for stm32
Groups were not recognized because the parser only looked at the
derivedFrom attribute and not at <groupName> tags for matching
peripherals.
2018-09-22 01:05:22 +02:00
Ayke van Laethem 9fa08bf51d all: use groupName in peripherals
This is needed for support for multiple instances of a peripheral type.
2018-09-21 22:24:41 +02:00
Ayke van Laethem 110230a50d tools/gen-device-svd: make svd files deal with stm32
First concrete preparation for stm32 support at some point.
2018-09-21 21:52:16 +02:00
Ayke van Laethem 5b0aaf0d39 targets: clean up and unify linker scripts
Especially arm.ld needed some cleaning up. Other than that, I've made
sure the two linker scripts look similar where possible.
2018-09-21 15:38:55 +02:00
Ayke van Laethem 2122780309 compiler: implement *ssa.ChangeType 2018-09-21 15:38:55 +02:00
Ayke van Laethem 505b1f750d all: generate interrupt vector from .svd file 2018-09-21 15:38:28 +02:00
Ayke van Laethem 3c22f5731c all: replace _extern_* workaround with //go:extern pragma 2018-09-21 14:37:11 +02:00
Ayke van Laethem 2ca2220e44 compiler: move SSA construction to ir.go 2018-09-21 14:37:11 +02:00
Ayke van Laethem 2496ae9967 compiler: emit non-PIE executables
This fixes a problem on baremetal targets, where PIE doesn't make any
sense. Specifically, on ARM, the compiler sometimes inserted GOT
pointers for linker-defined globals.
2018-09-21 14:37:11 +02:00
Ayke van Laethem 3e6750ae23 examples/test: make unicode example more interesting 2018-09-21 14:37:11 +02:00
Ayke van Laethem 486ea1b8ea examples: re-add hello world serial communication
I accidentally removed the serial example from 45348bfc3e while merging
commit 40f834d58f (PR: https://github.com/aykevl/tinygo/pull/12).
Force-pushing seemed like a bad idea so here it is.
2018-09-21 14:33:39 +02:00
Ayke van Laethem de694b5857 avr: set ADLAR bit in ADC to get a value scaled to 16-bit 2018-09-20 21:39:45 +02:00
Ron Evans 40f834d58f avr: ADC with 0-1023 range 2018-09-20 21:39:45 +02:00
Ayke van Laethem dbb5ae5a23 avr: use i16 for lengths 2018-09-20 20:52:59 +02:00
Ron Evans 45348bfc3e examples: add hello world serial communication
Signed-off-by: Ron Evans <ron@hybridgroup.com>
2018-09-19 22:38:29 +02:00
Ayke van Laethem c0d1963d63 runtime/nrf: remove some leftover header files 2018-09-18 20:45:02 +02:00
Ayke van Laethem 7c9a3d70bc nrf: use correct ISA type for pca10040
No change to code size.
2018-09-18 20:16:55 +02:00
Ayke van Laethem c554c7c009 nrf: use assembly for nrf52, not nrf51
Slightly increase code size, but this is the more correct thing to do.
2018-09-18 20:15:18 +02:00
Ayke van Laethem 87963d3d5b compiler: add -size flag to replace size utility
The size flag has two modes:
  -size=short: prints data basically equivalent to the `size` program.
  -size=full:  tries to determine sizes per package (not entirely
               accurate).
2018-09-18 00:04:21 +02:00
Ayke van Laethem 8b94fe9205 avr: fix assembly comment regarding data/stack 2018-09-17 20:51:41 +02:00
Ayke van Laethem db8c3479d6 compiler: give names to nameless globals
This should make it easier in the future to show a breakdown of which
packages consume text/data/bss.
2018-09-17 20:41:48 +02:00
Ayke van Laethem 1f2af7d848 compiler: do not remove dead globals
These were not removed when they contain data, and will be removed by
LLVM anyway.
2018-09-17 15:15:03 +02:00
Ayke van Laethem b0aeaed635 compiler: allow a global to be defined multiple times
This is only possible when using compiler directives like the magic
_extern_ prefix on global variables.
2018-09-17 15:14:57 +02:00
Ayke van Laethem 77934f364f avr: fix corrupted .data byte
The stack and the .data section shared the first byte, leading to
corruption of the first byte of .data.
2018-09-17 15:10:52 +02:00
Ron Evans fc0ff3a987 avr: initial implementation for PWM
Signed-off-by: Ron Evans <ron@hybridgroup.com>

Edited slightly by Ayke van Laethem
2018-09-17 14:03:05 +02:00
Ayke van Laethem 94358959f5 compiler: fix unsafe.Sizeof and friends for AVR
This fixes runtime.printptr().
2018-09-16 20:42:10 +02:00
Ayke van Laethem e04f0868ed compiler: fix constant globals on AVR
Turn const globals into non-const globals, at least until pointers have
the correct address space attribute.
2018-09-16 16:31:38 +02:00
Ayke van Laethem a02426948b avr: implement .data section
This doesn't completely work for some reason as the first character of
.data is corrupted, but otherwise it works.
2018-09-16 16:26:04 +02:00
Ayke van Laethem 39e3fe28db avr: convert initialization from asm to Go
This increases code size by 1 instruction (2 bytes) because LLVM isn't
yet smart enough to recognize that it doesn't need to clear a register
to use 0: it can just use r1 which is always 0 according to the
convention. It makes initialization a lot easier to read, however.
2018-09-16 15:03:48 +02:00
Ayke van Laethem 0d8a7e1666 avr: link with the GCC runtime library
This allows the use of some compiler-generated builtins that are
hopefully compatible with LLVM. Example: println(uint8(foo))

Code size is unchanged normally but of course compiler builtins will
increase code size when actually used (for example with division).
2018-09-16 14:54:10 +02:00
Ayke van Laethem a25e598463 compiler: truncate output files before writing 2018-09-16 13:41:56 +02:00
Ayke van Laethem 35fe24981f runtime/unix: panic: call abort() instead of exit(2)
abort() will cause gdb to show a backtrace when running inside the
debugger, and abort() seems more appropriate anyway for critical errors.
2018-09-16 13:01:15 +02:00
Ayke van Laethem 1484bb5c2c all: basic support for the os package
The resulting binary is pretty big due to lacking optimizations
(probably because of interfaces), so that should be fixed.
2018-09-16 13:01:03 +02:00
Ayke van Laethem c237633d34 all: use a custom sync package
The sync package is strongly tied to the runtime, so it's easier to
implement a new one. Besides, it's pretty big so it's better to replace
it.
2018-09-15 18:51:51 +02:00
Ayke van Laethem 94b18e2d79 compiler: support integer convert in interpreter 2018-09-15 18:47:15 +02:00
Ayke van Laethem 1d2e0cd259 compiler: don't show DebugRef with -dumpssa 2018-09-15 18:45:46 +02:00
Ayke van Laethem 2a20c0c7f0 all: rewrite sleep function
time.Sleep now compiles on all systems, so lets use that.
Additionally, do a few improvements in time unit handling for the
scheduler. This should lead to somewhat longer sleep durations without
wrapping (on some platforms).

Some examples got smaller, some got bigger. In particular, code using
the scheduler got bigger and the blinky1 example got smaller (especially
on Arduino: 380 -> 314 bytes).
2018-09-15 01:58:54 +02:00
Ayke van Laethem 1ac67cf8de compiler: adding a few more ignored init calls
These calls are generated in the JavaScript target (syscall/js and
syscall with GOOS=js), but they are not used at the moment. So ignore
them until they're needed.
2018-09-15 01:04:19 +02:00
Ayke van Laethem 38efc5653d compiler: support compile-time hashmap with int keys 2018-09-15 01:03:22 +02:00
Ayke van Laethem 152e12e4b0 all: implement iterating over hashmaps
Still no support for hashmaps > 8 entries, but this kind of works.
2018-09-15 00:29:34 +02:00
Ayke van Laethem 5b4b6cfee2 compiler: use -dumpssa flag in interpreter
This is useful for debugging.
2018-09-14 23:29:33 +02:00
Ayke van Laethem 866a6edb5f compiler: fix word size for AVR
Using a word size less than 4 led to typechecker errors.
2018-09-14 21:36:51 +02:00
Ayke van Laethem 327076da39 examples/test: add slice-a-slice test 2018-09-14 21:02:29 +02:00