Commit Graph

273 Commits

Author SHA1 Message Date
Ayke van Laethem f2768bee17 nrf: better formatting of pca10040.json 2018-10-03 19:03:27 +02:00
Ayke van Laethem b08c8a0cf0 all: implement gdb sub-command for easy debugging 2018-10-03 19:03:22 +02:00
Ayke van Laethem ddd4a39cb8 avr: fix default handler in interrupt vector
Apparently the target of a weak symbol must be defined in the same file
as where it is used as a weak symbol.

https://www.avrfreaks.net/forum/using-weak-custom-vector-table#comment-745922
2018-09-24 13:03:21 +02:00
Ayke van Laethem b09f7a5e6c avr: make linker script generic 2018-09-23 20:50:12 +02:00
Ayke van Laethem b9638315d2 avr: automatically generate interrupt vectors 2018-09-23 20:37:22 +02:00
Ayke van Laethem 2c21925f4c targets: put board name in build tags 2018-09-22 15:37:46 +02:00
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 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 505b1f750d all: generate interrupt vector from .svd file 2018-09-21 15:38:28 +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 8b94fe9205 avr: fix assembly comment regarding data/stack 2018-09-17 20:51:41 +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
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 112f6dc01a all: implement tinygo flash command
This will now just work:

    tinygo flash -target=arduino examples/blinky1
2018-09-14 20:59:28 +02:00
Ayke van Laethem c763e9f1a6 compiler: produce .hex files directly 2018-09-14 20:27:04 +02:00
Ayke van Laethem 76e77917d8 targets: move target-specific files to this directory 2018-09-13 00:59:39 +02:00
Ayke van Laethem 76a513802f targets/pca10040: support linking from within the compiler
This is kind of dirty with that huge list of linker params, but it works
and it produces smaller object files (probably because GCC is better
optimized for size).
2018-09-12 23:40:21 +02:00
Ayke van Laethem 914cd56ca5 all: support Arduino in the compiler driver
This makes sure the compiler itself can build/link an ELF file that
works on an Arduino.
2018-09-12 20:55:50 +02:00
Ayke van Laethem 9bec479041 all: make targets configurable with a JSON file
This is intentionally similar to the target specifications in Rust:
https://doc.rust-lang.org/nightly/nightly-rustc/rustc_target/spec/struct.TargetOptions.html
2018-09-12 18:28:39 +02:00