AVR-GCC. Αρχεία Makefile.

Αν έχετε συνηθίσει να προγραμματίζεται μέσω κάποιου ολοκληρωμένου περιβάλλοντος (IDE), όπως για παράδειγμα τα Visual Studio, Eclipse, NetBeans, CodeBlocks κ.τ.λ., η χρήση των Makefile ίσως σας φανεί λίγο περίεργη και να σας προβληματίσει. Μετά από λίγη εκμάθηση όμως θα δείτε πως η χρήση των Makefiles είναι πολύ πρακτική. Τα αρχεία Makefile ελέγχουν το πρόγραμμα make που υπάρχει σχεδόν σε όλους του υπολογιστές που έχουν GNU/Linux και σε Windows που έχουν εγκατεστημένο το πακέτο WinAVR (π.χ. C:\WinAVR-20100110\utils\bin\make.exe ).

Τεκμηρίωση του προγράμματος make.
Τεκμηρίωση του ATmega8.

Υπάρχουν πολλά έτοιμα αρχεία Makefile που μπορείτε να τα προσαρμόσετε στις ανάγκες σας. Υπάρχει ένα για παράδειγμα στον φάκελο sample στον φάκελο εγκατάστασης του WinAVR (συνήθως C:\WinAVR-20100110\sample\). Ένα που συνήθως χρησιμοποιώ είναι το παρακάτω.

Makefile.

Είναι πολύ καλά τεκμηριωμένο και θα σας επιτρέψει να το προσαρμόσετε πολύ εύκολα.
Ένα Makefile ελέγχει συνήθως τρεις εντολές. Τις make all, make program και make clean.

make all :
Εκτελεί την μεταγλώττιση του κώδικα μας και παράγει τα κατάλληλα αρχεία (.hex) που θα φορτώσουμε στον μικροελεγκτή μας.

make clean:
Διαγράφει όλα τα προσωρινά αρχεία που δημιουργήθηκαν κατά την μεταγλώττιση καθώς και τα αρχεία .hex.

make program:
Με την βοήθεια του προγράμματος που χρησιμοποιούμε για τον προγραμματισμό του μικροελεγκτή μας (π.χ. avrdude) φορτώνει σε αυτόν τα .hex αρχεία. Το όρισμα “program” δεν είναι δεσμευτικό. Μπορεί να είναι για παράδειγμα load (make load) ή οτιδήποτε θέλει ο χρήστης.

Το παραπάνω αρχείο Makefile που είδαμε έχει και μερικές επιπλέον εντολές. Την make coff που παράγει αρχεία προσομοίωσης/αποσφαλμάτωσης για το AVR Studio 3, Την make extcoff που παράγει αρχεία προσομοίωσης/αποσφαλμάτωσης για το AVR Studio 4 και την make filename.s (π.χ. make main.s) που παράγει μόνο αρχεία σε γλώσσα assembly από τον κώδικα μας.

Πράγματα που ρυθμίζουμε συχνά σε ένα Makefile (στο παραπάνω πρότυπο Makefile για παράδειγμα).

PROJECTNAME:
Το όνομα του κυρίως αρχείου του κώδικά μας. Αν για παράδειγμα είναι το mai.c έχουμε PROJECTNAME=main.

MCU:
Το όνομα του μικροελεγκτή που χρησιμοποιούμε. Αν για παράδειγμα έχουμε τον ATmega8 βάζουμε MCU=atmega8.

F_OSC:
Είναι η συχνότητα λειτουργίας του μικροελεγκτή σε Hz. Για παράδειγμα F_OSC=4000000 (για 4 MHz).

CSRC = $(PROJECTNAME).c
Εδώ προσθέτουμε τα επιπλέον αρχεία που έχει ο κώδικας μας. Για παράδειγμα στον έλεγχο για lcd με το HD44780 είχαμε κώδικα και στο αρχείο lcd.c. Οπότε θα έχουμε CSRC = $(PROJECTNAME).c lcd.c. Γενικά CSRC = $(PROJECTNAME).c file_1.c file_2.c file_3.c .

OPT:
Μέθοδος βελτιστοποίησης του κώδικά μας κατά την μεταγλώττιση. Συνήθως OPT = s .

AVRDUDE_PROGRAMMER
:
Ο τύπος του programmer που θα επικοινωνεί το avrdude. Στην δική μου περίπτωση AVRDUDE_PROGRAMMER=stk500v2 .

AVRDUDE_PORT:
Η θύρα επικοινωνίας του programmer. Στην δική μου περίπτωση AVRDUDE_PORT=/dev/ttyUSB0 .

Ας δούμε την χρήση ενός Makefile για το πρόγραμμα ελέγχου του HD44780 LCD που γράψαμε.

Το Makefile σε pdf μορφή (δεν επιτρέπει το wordpress.com άλλη μορφή). Makefile.

Advertisements
This entry was posted in AVR, Electronics and tagged , , , , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s