Hi,
ich bastle gerade an einem größeren AVR-Projekt. Ursprünglich komplett
in C geschrieben (avr-gcc unter Linux) ist die Performance des
Hauptmoduls eher mäßig, also schreibe ich das Modul gerade auf Assembler
um. Mit AVR-Assembler (und speziell avr-as) habe ich bisher nie
gearbeitet, alles Neuland.
Minimalbeispiel (x.S):
1 | #include <avr/io.h>
|
2 | #define avrf r21 /* copy of SREG */
|
3 |
|
4 | in avrf, sreg ;1 /* store H, C */
|
Ich möchte also einfach nur SREG in ein (benamstes) Register speichern,
wie es auch überall gemacht wird. Aber irgendwas funktioniert da nicht:
1 | $ avr-gcc -mmcu=atmega8515 -std=gnu11 -Wall -Wextra -Os -c -o x.o x.S
|
2 | $ avr-nm x.o|grep sreg
|
3 | U sreg
|
4 |
|
5 | $ avr-gcc -mmcu=atmega8515 -std=gnu11 -Wall -Wextra -Os -o test.elf main.o x.o
|
6 | x.o:(.text+0x0): undefined reference to `sreg'
|
Was zur Hölle mache ich falsch?
Gruß,
svenska