Fórum témák
» Több friss téma |
Cikkek » AVR programozás Ubuntu-n AVR programozás Ubuntu-n
Szerző: mosomate, idő: Dec 5, 2014, Olvasva: 11871, Oldal olvasási idő: kb. 1 perc
Előfordulhat, hogy több forrásfájlból szeretnénk előállítani a futtatható kódunkat. Természetesen erre is van lehetőség, az avr-gcc ebben a tekintetben is úgy működik mint egy sima gcc fordító. Vegyük az eddigi példánkat és tegyük külön c fájlba, valamint saját mappába a _delay_10ms függvényt. Ehhez hozzuk létre a mydelay.h és mydelay.c fájlokat, amiker helyezzünk a mydelay mappába. A három fájl tartalma az alábbi lesz: main.c // Villogtat egy, a 2-es lábra kötött ledet.
#include <avr/io.h> #include "mydelay/mydelay.h" //------------------------------------- int main(void) { DDRB |= (1<<PINB3); PORTB &= ~(1<<PINB3); while(1) { if (PINB & (1<<PINB3)) PORTB &= ~(1<<PINB3); else PORTB |= (1<<PINB3); _delay_10ms(100); } } mydelay.h void _delay_10ms(unsigned long val);
mydelay.c #define F_CPU 1000000UL
#include "mydelay.h" #include <util/delay.h> void _delay_10ms(unsigned long val) { while(val--) _delay_ms(10); } Ha megvannak a forrásfájlok, akkor azokat először egyesével lefordíjuk: avr-gcc -O2 -mmcu=attiny45 -c main.c Ezután a linkelésnél felsoroljuk a main.o-n felül a többi lefordított object fájlt is: avr-gcc -mmcu=attiny45 -o prog.elf main.o mydelay.o A további lépések a korábban leírtaknak megfelelően történnek. A makefile-ban a prog.elf-nek meg kell adni a plusz függőséget a mydelay.o-tól, valamint le kell fordítani a mydelay.c-t: all: prog.hex
prog.hex: prog.elf avr-objcopy -j .text -j .data -O ihex prog.elf prog.hex prog.elf: main.o mydelay.o avr-gcc -mmcu=attiny45 -o prog.elf main.o mydelay.o mydelay.o: mydelay/mydelay.c avr-gcc -O2 -mmcu=attiny45 -c mydelay/mydelay.c main.o: main.c avr-gcc -O2 -mmcu=attiny45 -c main.c A cikk még nem ért véget, lapozz! Értékeléshez bejelentkezés szükséges! |
Bejelentkezés
Hirdetés |