mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-11 06:23:39 +00:00
avr: drop GNU toolchain dependency
- Use compiler-rt and picolibc instead of avr-libc. - Use ld.lld instead of avr-ld (or avr-gcc). This makes it much easier to get started with TinyGo on AVR because installing these extra tools (gcc-avr, avr-libc) can be a hassle. It also opens the door for future improvements such as ThinLTO. There is a code size increase but I think it's worth it in the long run. The code size increase can hopefully be reduced with improvements to the LLVM AVR backend and to compiler-rt.
This commit is contained in:
committed by
Ron Evans
parent
b9bb605257
commit
df888acd5e
@@ -2,7 +2,7 @@
|
||||
"inherits": ["atmega1280"],
|
||||
"build-tags": ["arduino_mega1280"],
|
||||
"ldflags": [
|
||||
"-Wl,--defsym=_bootloader_size=4096"
|
||||
"--defsym=_bootloader_size=4096"
|
||||
],
|
||||
"flash-command":"avrdude -c arduino -b 57600 -p atmega1280 -P {port} -U flash:w:{hex}:i -v -D"
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"inherits": ["atmega2560"],
|
||||
"build-tags": ["arduino_mega2560"],
|
||||
"ldflags": [
|
||||
"-Wl,--defsym=_bootloader_size=8192"
|
||||
"--defsym=_bootloader_size=8192"
|
||||
],
|
||||
"flash-command":"avrdude -c wiring -b 115200 -p atmega2560 -P {port} -U flash:w:{hex}:i -v -D"
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
"inherits": ["atmega328p"],
|
||||
"build-tags": ["arduino_nano"],
|
||||
"ldflags": [
|
||||
"-Wl,--defsym=_bootloader_size=512",
|
||||
"-Wl,--defsym=_stack_size=512"
|
||||
"--defsym=_bootloader_size=512",
|
||||
"--defsym=_stack_size=512"
|
||||
],
|
||||
"flash-command": "avrdude -c arduino -p atmega328p -b 57600 -P {port} -U flash:w:{hex}:i",
|
||||
"emulator": "simavr -m atmega328p -f 16000000 {}"
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
"inherits": ["atmega328p"],
|
||||
"build-tags": ["arduino"],
|
||||
"ldflags": [
|
||||
"-Wl,--defsym=_bootloader_size=512",
|
||||
"-Wl,--defsym=_stack_size=512"
|
||||
"--defsym=_bootloader_size=512",
|
||||
"--defsym=_stack_size=512"
|
||||
],
|
||||
"flash-command": "avrdude -c arduino -p atmega328p -P {port} -U flash:w:{hex}:i",
|
||||
"serial-port": ["2341:0043", "2341:0001", "2a03:0043", "2341:0243"],
|
||||
|
||||
@@ -4,8 +4,7 @@
|
||||
"build-tags": ["atmega1280", "atmega"],
|
||||
"serial": "uart",
|
||||
"ldflags": [
|
||||
"-mmcu=avr51",
|
||||
"-Wl,--defsym=_stack_size=512"
|
||||
"--defsym=_stack_size=512"
|
||||
],
|
||||
"linkerscript": "src/device/avr/atmega1280.ld",
|
||||
"extra-files": [
|
||||
|
||||
@@ -4,9 +4,8 @@
|
||||
"build-tags": ["atmega1284p", "atmega"],
|
||||
"serial": "uart",
|
||||
"ldflags": [
|
||||
"-mmcu=avr51",
|
||||
"-Wl,--defsym=_bootloader_size=0",
|
||||
"-Wl,--defsym=_stack_size=512"
|
||||
"--defsym=_bootloader_size=0",
|
||||
"--defsym=_stack_size=512"
|
||||
],
|
||||
"linkerscript": "src/device/avr/atmega1284p.ld",
|
||||
"extra-files": [
|
||||
|
||||
@@ -4,8 +4,7 @@
|
||||
"build-tags": ["atmega2560", "atmega"],
|
||||
"serial": "uart",
|
||||
"ldflags": [
|
||||
"-mmcu=avr6",
|
||||
"-Wl,--defsym=_stack_size=512"
|
||||
"--defsym=_stack_size=512"
|
||||
],
|
||||
"linkerscript": "src/device/avr/atmega2560.ld",
|
||||
"extra-files": [
|
||||
|
||||
@@ -3,9 +3,6 @@
|
||||
"cpu": "atmega328p",
|
||||
"build-tags": ["atmega328p", "atmega", "avr5"],
|
||||
"serial": "uart",
|
||||
"ldflags": [
|
||||
"-mmcu=avr5"
|
||||
],
|
||||
"linkerscript": "src/device/avr/atmega328p.ld",
|
||||
"extra-files": [
|
||||
"targets/avr.S",
|
||||
|
||||
@@ -5,9 +5,6 @@
|
||||
"cflags": [
|
||||
"-D__AVR_ARCH__=25"
|
||||
],
|
||||
"ldflags": [
|
||||
"-mmcu=avr25"
|
||||
],
|
||||
"linkerscript": "src/device/avr/attiny85.ld",
|
||||
"extra-files": [
|
||||
"targets/avr.S",
|
||||
|
||||
+3
-2
@@ -4,16 +4,17 @@
|
||||
"goos": "linux",
|
||||
"goarch": "arm",
|
||||
"gc": "conservative",
|
||||
"linker": "avr-gcc",
|
||||
"linker": "ld.lld",
|
||||
"scheduler": "none",
|
||||
"rtlib": "compiler-rt",
|
||||
"libc": "picolibc",
|
||||
"default-stack-size": 256,
|
||||
"cflags": [
|
||||
"-Werror"
|
||||
],
|
||||
"ldflags": [
|
||||
"-T", "targets/avr.ld",
|
||||
"-Wl,--gc-sections"
|
||||
"--gc-sections"
|
||||
],
|
||||
"extra-files": [
|
||||
"src/internal/task/task_stack_avr.S",
|
||||
|
||||
@@ -5,6 +5,8 @@ MEMORY
|
||||
RAM (xrw) : ORIGIN = 0x800000 + __ram_start, LENGTH = __ram_size
|
||||
}
|
||||
|
||||
ENTRY(__vector_RESET)
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.text :
|
||||
@@ -12,9 +14,11 @@ SECTIONS
|
||||
KEEP(*(.vectors))
|
||||
KEEP(*(.text.__vector_RESET))
|
||||
KEEP(*(.text.main)) /* main must follow the reset handler */
|
||||
*(.text)
|
||||
*(.text.*)
|
||||
*(.progmem)
|
||||
*(.progmem.*)
|
||||
. = ALIGN(16); /* needed with ld.lld for some reasoon */
|
||||
}
|
||||
|
||||
.stack (NOLOAD) :
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
"inherits": ["attiny85"],
|
||||
"build-tags": ["digispark"],
|
||||
"ldflags": [
|
||||
"-Wl,--defsym=_bootloader_size=2180",
|
||||
"-Wl,--defsym=_stack_size=128"
|
||||
"--defsym=_bootloader_size=2180",
|
||||
"--defsym=_stack_size=128"
|
||||
],
|
||||
"flash-command": "micronucleus --run {hex}",
|
||||
"emulator": "simavr -m attiny85 -f 16000000 {}"
|
||||
|
||||
Reference in New Issue
Block a user