Δρ. Νικόλαος Σκλάβος, Διδάσκων Π.Δ. 407/80. E mail : nsklavos@ceid.upatras.gr



Σχετικά έγγραφα
Α Εξάμηνο. Νικόλαος Σκλάβος. nsklavos ΑΤ ceid DΟΤ upatras DΟΤ gr 1

Εγχειρίδιο Χρήσης ΑΤ91

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Αρχιτεκτονική υπολογιστών

Οργάνωση Υπολογιστών (Ι)

Σύγχρονες Αρχιτεκτονικές Υπολογιστών

Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Τμήματα ΚΜΕ (CPU) Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (Ι)

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems)

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 3 Εντολές του MIPS (2)

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Φροντιστήριο: MIPS assembly

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

Εντολές του MIPS (2)

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών ARM και x86

Εγχειρίδιο Χρήσης ΑΤ91

Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ. Εισαγωγή

«ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ» ΕΣΩΤΕΡΙΚΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΚΑΙ ΛΕΙΤΟΥΡΓΙΕΣ

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

Θ. Ζαχαριάδης Αν. Καθηγητής. Λ. Σαράκης Καθ. Εφαρμογών

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονικές Συνόλου Εντολών

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. Τρίτη (3 η ) δίωρη διάλεξη. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Αρχιτεκτονική του ARM. K.Harteros G.Kornaros

Οργάνωση Η/Υ. Γλώσσα Assembly. Τμήμα Εφαρμσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Α. Χατζηγεωργίου-Η. Σακελλαρίου

Θ. Ζαχαριάδης Αν. Καθηγητής. Λ. Σαράκης Καθ. Εφαρμογών

Αρχιτεκτονική Υπολογιστών

; Γιατί είναι ταχύτερη η λήψη και αποκωδικοποίηση των εντολών σταθερού μήκους;

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός. Εργαστήριο Αρ. 2

Διαδικασίες Ι. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 4

Οργάνωση και Σχεδίαση Υπολογιστών Η Διασύνδεση Υλικού και Λογισμικού, 4 η έκδοση. Σύντομη Εισαγωγή στη χρήση του προσομοιωτή και συμβολομεταφραστή

LANGUAGE OF THE MACHINE. TEI Κρήτης, Τμ. ΕΠΠ, Αρχιτεκτονική Υπολογιστών. Οργάνωση Υπολογιστή. Τυπική οργάνωση υπολογιστή

Σημειώσεις για τον 80x86

Ενσωματωμένα Συστήματα

Αρχιτεκτονική Υπολογιστών

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

; Τι περιέχεται στη συσκευασία ενός μικροεπεξεργαστή σήμερα;

Τελική Εξέταση, Απαντήσεις/Λύσεις

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I

Άσκηση 1 (α) Άσκηση 1 (γ) Άσκηση 1 (β) Παραδείγματα Assembly. Άρα με έλεγχο στον $t1 αποφασίζω αν είναι 0 ή 1.

Αρχιτεκτονική Υπολογιστών

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ

ΗΜΥ 213. Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών. Διδάσκων: Δρ. Γιώργος Ζάγγουλος

Αρχιτεκτονική υπολογιστών

Εργαστήριο Αρ. 1. Εισαγωγή στην Αρχιτεκτονική MIPS. Πέτρος Παναγή Σελ. 1

Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

Δομημένος Προγραμματισμός

Ενσωματωμένα Συστήματα

Μάθημα 3.2: Κεντρική Μονάδα Επεξεργασίας

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονικη υπολογιστων

Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου. Ενδέκατη (11 η ) δίωρη διάλεξη.

Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 3-4: Προγραμματισμός MIPS. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Αρχιτεκτονική x86(-64) 32-bit και 64-bit λειτουργία. Αρχιτεκτονική x86(-64) Αρχιτεκτονική επεξεργαστών x86(-64) Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

Παραδείγματα Assembly (Μέρος

ΕΠΛ605 Εργασία 1 Ημερομηνία Παράδοσης 12/9/2018 στην αρχή του μαθήματος

Στοιχεία από Assembly Γιώργος Μανής

Εντολές γλώσσας μηχανής

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ

Πανεπιστήµιο Θεσσαλίας Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα εκτέλεσης εργαστηριακής άσκησης 3: Εντολές λογικών πράξεων και εντολές κλήσης ρουτινών

SMPcache. Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache)

Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Αρχιτεκτονική Υπολογιστών

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Intel x86 ISA. Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών ΗΥ

Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy. Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου

1 η Ενδιάμεση Εξέταση Απαντήσεις/Λύσεις

Αρχιτεκτονική Υπολογιστών

Εισαγωγή στην πληροφορική -4

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

Συστήματα Μικροεπεξεργαστών

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Πρόχειρες Σημειώσεις. Θ. Ζαχαριάδης Αν. Καθηγητής. Λ. Σαράκης Καθ. Εφαρμογών

Ενσωματωμένα Συστήματα

Διάλεξη 12 Καθυστερήσεις (Stalls) Εκκενώσεις Εντολών (Flushing)

Αρχιτεκτονική Επεξεργαστών Ψ.Ε.Σ

Εγχειρίδιο Ασκήσεων Εργαστηρίου Assembly

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Διαλέξεις 6: Κάλεσμα Διαδικασιών, Χρήση και Σώσιμο Καταχωρητών. Μανόλης Γ.Η.

με έμφαση στο MIPS R2000

Τέτοιες λειτουργίες γίνονται διαμέσου του

Συναρτήσεις-Διαδικασίες

και η µονάδα ελέγχου (control) O επεξεργαστής: Η δίοδος δεδοµένων (datapath) Εντολές διακλάδωσης (branch beq, bne) I Type Σχεδίαση datapath

Προχωρηµένα Θέµατα Αρχιτεκτονικής

Εφαρμογές μικροελεγκτών

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή

Αρχιτεκτονική Υπολογιστών

6. Επιστροφή ελέγχου στο σημείο εκκίνησης

Αναπαράσταση Δεδομένων. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

ΗΜΥ 213 Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy

Εισαγωγή στην Αριθμητική Ανάλυση

MIPS functions and procedures

Transcript:

Δρ. Νικόλαος Σκλάβος, Διδάσκων Π.Δ. 407/80 E mail : nsklavos@ceid.upatras.gr 1

Ενότητα 1 3

Πλατφόρμα ΑΤ91 Εμπορικά Διαθέσιμη Αναπτυξιακή Πλακέτα: ΑΤ91SΑΜ9261ΕΚ της εταιρείας ATMEL. Υποστηρίζει την ανάπτυξη εφαρμογών υλικού και λογισμικού για το μικροελεγκτή ΑΤ91SΑΜ9261: εμπλουτισμένη μ υλοποίηση ητου ARM926EJ S της εταιρείας ARM (Advanced Risc Machines) Ο μικροελεγκτής χρονίζεται με ένα ρολόι 200 MHz. 4

Ιδιαίτερα χαρακτηριστικά του ARM9EJ S Reduced Rd d Instruction Set Computer (RISC) επεξεργαστής: εξαιρετικά λίγες και απλές εντολές. Προσφέρει δύο διαφορετικά σύνολα εντολών: ARM / THUMB. Ειδικές εντολές: 1. για γρήγορη ρηεπεξεργασία ψηφιακού σήματος (DSP) 2. για την υλοποίηση της Jazelle αρχιτεκτονικής για JAVA 5

Εικόνα Αναπτυξιακού 6

Αρχιτεκτονική του επεξεργαστή ARM926EJ S 7

Αρχιτεκτονική του ARM9EJ S 8

Στοιχεία Επεξεργαστή: Καταχωρητές (Registers): μικρές μνήμες εύρους 32 bit Αριθμητική /Λογική Μονάδα (Arithmetic Logic Unit) Καταστάσεις Λειτουργίας: επτά διαφορετικές καταστάσεις, όπου η διαφοροποίηση τους σχετίζεται με τα δικαιώματα πρόσβασης στις περιοχές της εξωτερικής μνήμης. 9

Processor Modes User κατάσταση εκτέλεσης προγραμμάτων FIQ κατάσταση μετά από Fast Interrupt IRQ κατάσταση μετά από Interrupt Supervisor κατάσταση με αυξημένα δικαιώματα Abort κατάσταση μετά από λάθος προσπέλαση στη μνήμη Undefined κατάσταση μετά από εκτέλεση εντολής που δεν ανήκει στο σύνολο εντολών System κατάσταση με αυξημένα δικαιώματα 10

Καταχωρητές Ο επεξεργαστής διαθέτει 37 καταχωρητές: 31 καταχωρητές γενικού σκοπού 6 καταχωρητές ειδικού σκοπού Μόνο οι 17 είναι διαθέσιμοι και προσπελάσιμοι ανά πάσα στιγμή. Οι πρώτοι 8 (r0 έως r7) είναι κοινοί για όλες τις καταστάσεις του επεξεργαστή, ενώ οι υπόλοιποι 7 γίνονται διαθέσιμοι ανάλογα με την κατάσταση στην οποία βρίσκεται ο επεξεργαστής. 11

Διαθέσιμοι Καταχωρητές Κατάσταση Λειτουργίας 12

Χαρακτηριστικά Καταχωρητών Εύρος 32 bit, ισοδυναμεί με μια λέξη (word): χρήση μισής λέξης (half word), ή 8 λιγότερα σημαντικά ψηφία (byte). User Mode: χρησιμοποιούνται οι πρώτοι 13 καταχωρητές r0 r12, για γενικό σκοπό Οι επόμενοι τρεις έχουν συγκεκριμένη λειτουργία: r13 δείκτης σωρού (stack pointer) r14 καταχωρητής διασύνδεσης κώδικα (branch και link) r15 μετρητής προγράμματος (program counter pc) 13

Δείκτης Σωρού (Stack Pointer) R13 Χρησιμοποιείται για την διαχείριση του σωρού και έχει σαν περιεχόμενο τη διεύθυνση της μνήμης με την πρώτη ελεύθερη θέση του σωρού. Κάθε θέση στο σωρό έχει μέγεθος 32 bit (4 byte) LIFO (Last In First Out): ξεκινά από μια διεύθυνση και όσο γεμίζει με δεδομένα δ η θέση αυτή μειώνεται. Μειώνεται κατά 4 κατά την πρόσθεση μιας λέξης 32 bit Αυξάνεται κατά 4 κατά την απομάκρυνση μιας λέξης 32 bit 14

Παράδειγμα Σωρού 15

Μετρητής Προγράμματος (Program Counter) R14 Περιέχει τη διεύθυνση στην οποία υπάρχει η επόμενη προς εκτέλεση εντολή. Κάθε εντολή έχει μέγεθος 32 bit (4 byte). Αυξάνεται κατά 4 κατά την εκτέλεση μιας εντολής 32 bit. Το περιεχόμενο του PC μπορούμε να το μεταβάλουμε και εμείς γράφοντας μια τιμή σε αυτόν, αρκεί να είμαστε σίγουροι ότι η τιμή που γράψαμε αντιστοιχεί σε μια διεύθυνση στην οποία υπάρχει κώδικας προς εκτέλεση. 16

Καταχωρητής Κατάστασης: Current Processor Status Register (CPSR) 17

Ενότητα 2 18

Κατηγορίες Εντολών 1. Μεταφορά δεδομένων: δ από και προς την κύρια μνήμη 2. Αριθμητικές πράξεις: πρόσθεση, πολλαπλασιασμός, λ 3. Λογικές πράξεις: AND, OR, XOR, 4. Διακλαδώσεις :αλλαγή ροής εκτέλεσης κώδικα 5. Συστήματος: προσπέλαση συνεπεξεργαστή, κ.α. 19

Εντολές Ολίσθησης Logic Shift Left (LSL): λογική ολίσθηση προς τα αριστερά Logic Shift Right (LSR): λογική ολίσθηση προς τα δεξιά Arithmetic Shift Right (ASR): αριθμητική ολίσθηση προς τα δεξιά συμπλήρωση με ψηφία ίδια με το πρόσημο: Rotate Right (ROR): κυκλική ολίσθηση προς τα δεξιά 21

Ολίσθηση προς τα αριστερά κατά 2 θέσεις 22

Κυκλική ολίσθηση προς τα δεξιά Παράδειγμα : 1001_0111 & Carry Bit = Χ Κυκλική δεξιά ολίσθηση κατά 3 θέσεις Νέα τιμή : 11X1_0010 Αριστερή κυκλική ολίσθηση n: δεξιά κυκλική ολίσθηση κατά 33 n 23

Εντολές Μεταφοράς Δεδομένων LDR (μεταφορά φ ά από μνήμη σε καταχωρητή): R M STR (μεταφορά ά από καταχωρητή σε μνήμη): R M MOV (μεταφορά από καταχωρητή σε καταχωρητή): R R MVN (μεταφορά από καταχωρητή σε καταχωρητή με αντιστροφή): R NOT(R) SWP (εναλλαγή τιμής από μνήμη σε καταχωρητή): R M 24

Πρόσθετες Εντολές Μεταφοράς Δεδομένων LDM (μεταφορά ε block από μνήμη σε καταχωρητές): α regs mem block STM (μεταφορά block από καταχωρητές σε μνήμη ): regs mem block MRS (μεταφορά από τον CPSR σε καταχωρητή): CPSR R MSR (μεταφορά από καταχωρητή στον CPSR): CPSR R MRC (μεταφορά από συνεπεξεργαστή σε καταχωρητή): Cop R MCR (μεταφορά μ φ ρ από καταχωρητή σε συνεπεξεργαστή ): Cop R 25

Εύρος Μεταφοράς Δεδομένων Κάθε μεταφορά μπορεί να γίνει με δεδομένα εύρους 32 bit (word), 16 bit (halfword) ή 8 bit (byte). Μεταφορά 16 bit: επίθεμα Η (halfword) LDR LDRH Μεταφορά 8 bit: επίθεμα B (Byte) t) LDR LDRB 26

Εντολές Μεταφοράς Δεδομένων:Σύνταξη <εντολή> Rd,[Rb,<offset>] Το <offset> μπορεί να είναι καταχωρητής ή 8 bit τιμή με ολίσθηση 0 έως 31 ψηφίων Η παραπάνω σύνταξη βοηθάει στην διαχείριση πινάκων: Rb είναι η αρχή του πίνακα <οffset> δείχνει στην τρέχουσα θέση του πίνακα Προσοχή στο μέγεθος των περιεχομένων κάθε θέσης π.χ,: Αν είναι 1 byte αύξηση της διεύθυνσης κατά 1 Αν είναι word (4 bytes) αύξηση της διεύθυνσης κατά 4 Οι θέσεις πρέπει να είναι στοιχισμένες σε διευθύνσεις που είναι πολλαπλάσια του 1 ή 4 αντίστοιχα (byte, halfword ή word alignment) 27

Αποθήκευση αριθμού μεγαλύτερου του ενός byte στη μνήμη Little Endian: Το λιγότερο σημαντικό ψηφίο αποθηκεύεται στην χαμηλότερη διεύθυνση. Big Endian: Το περισσότερο σημαντικό ψηφίο αποθηκεύεται στην χαμηλότερη διεύθυνση. Στον ΑΤ91 επιτρέπονται και οι δύο τρόποι αλλά το Linux υιοθετεί Little Endian και αυτή την σύμβαση θα πρέπει να ακολουθούν όλα τα προγράμματα. 28

Παράδειγμα: ΘΕΣΗ ΜΝΗΜΗΣ LITTLE ENDIAN BIG ENDIAN ΟxCOOO450 EF DE ΟxCOOO451 BE AD ΟxCOOO452 AD BE ΟxCOOO453 DE EF NUMBER OxDEADBEEF 29

Προσπέλαση διαδοχικών θέσεων πινάκων με τροποποίηση καταχωρητή βάσης Τροποποίηση πριν την προσπέλαση LDR R5,[R0,R2, LSL #2]! Γίνεται τροποποίηση R0+(R2<<2), μετά ο R0 γίνεται R0+(R2<<2) και μετά θα διευθυνσιοδοτηθεί η κύρια μνήμη. Τροποποίηση ημετά την προσπέλαση LDR R5,[R0],R2,LSL #2 Γίνεται προσπέλαση στην διεύθυνση R0 και μετά ο R0 γίνεται ίσος με R0+(R2<<2) 30

Παραδείγματα φόρτωσης: Load 31

Παραδείγματα αποθήκευσης: Store 32

Εντολές μεταφοράς μπλοκ καταχωρητών <εντολή> <mode> Rb,{<regs>} Μεταφέρουν πολλαπλές λέ τιμές από/προς μνήμη προς/από σύνολο καταχωρητών που δηλώνονται μέσα σε άγκιστρα χωρισμένοι με κόμμα, ή συνδέονται με παύλα (συνεχόμενοι). Rb: περιέχει την αρχική διεύθυνση της κύριας μνήμης. Mode: Increment Before (IB), Increment After (IA), Decrement Before (DB), Decrement After (DA) 33

Παραδείγματα 34

Μεταφορά καταχωρητή σε καταχωρητή MOV Rd,<operand> <operand>: καταχωρητής ή τιμή 8 bit με ολίσθηση Δεν είναι δυνατή η άμεση φόρτωση καταχωρητή με οποιαδήποτε τιμή Μεταφορές ειδικού τύπου όπως στο συνεπεξεργαστή ή από τον CPSR 35

Παραδείγματα 36

Ενότητα 3 37

Παραδείγματα: Αριθμητικές & Λογικές Πράξεις 38

Παραδείγματα Πράξεων: Συγκρίσεις CMP R2,R4 ; @ R2 R4 (FLAGS AFFECTED) CMP R3,0x8000 ; @ R3 0x8000 (FLAGS AFFECTED) CMN R1,R2 ; @ R1 ( R2) (FLAGS NOT AFFECTED) TEQS R1,R4 ; @ R1 ΧOR R4, R1 = (?) R4 (Zero Bit AFFECTED) 39

Εντολές Διακλάδωσης Β: Απλή διακλάδωση BL: Διακλάδωση με αποθήκευση διεύθυνσης επιστροφής από τον R15 στο R14 (για κλήση υπορουτίνας) BX, BLX: όμοια με B, BL αντίστοιχα αλλά και αλλαγή συνόλου εντολών (από ARM σε Thumb) Παραδείγματα: Β Loop ; Άλμα στην ετικέτα Loop BLEQ Loop ; Άλμα στην ετικέτα Loop αν Ζ=1 41

Ενότητα 4 42

Σύνταξη Εντολών [ετικέτα:] <κενο> εντολή <κενό> δεδομένα @ σχόλια Directives:.abort Σταματά τη μετάφραση.align Τοποθέτηση δεδομένων σε στοιχισμένες θέσεις.arm Έναρξη 32 bit κώδικα (arm).asciz Αρχή ακολουθίας αλφαριθμητικών χαρακτήρων.byte Αρχή ακολουθίας bytes.datad t Ακολουθούν δεδομέναδ.equ Αντιστοίχηση τιμής σε σύμβολο.global Δηλώνει ένα σύμβολο ως σφαιρικό.hwordh d Τοποθετεί ίhlf halfwords.if Ο κώδικας που ακολουθεί εκτελείται αν ισχύει η συνθήκη του.include Εισάγει τον κώδικα άλλου αρχείου στην τρέχουσα θέση.text Ακολουθεί κώδικας.word Τοποθετεί words 43

Παραδείγματα directives.align 4 @Τα δεδομένα δ που ακολουθούν να είναι στοιχισμένα σε διευθύνσεις που είναι πολλαπλάσια του 4 Label:.asciz Test @ Οι χαρακτήρες της λέξης Test θα αποθηκευθούν σε διαδοχικές θέσεις μετά τη διεύθυνση της Label Label:.byte 0x10, 0x20, 0x30, 0x33 @οι 4 τιμές μεγέθους byte θα αποθηκευθούν σε διαδοχικές θέσεις μετά τη διεύθυνση Label.equ Mac,#0x1234 @ όπου συναντάται η λέξη Mac θα αντικαθίσταται από την άμεση τιμή 0x1234.global main @ η ετικέτα main θα μπορεί να προσπελαστεί από άλλα προγράμματα.hword 0x2010, 0x3330 @ όμοια με.byte παραπάνω.word 0x33302010 @ όμοια με.byte /.hword παραπάνω 44

Ενότητα 5 46

Ρυθμίσεις Εγκατάσταση Εργαλείων Εγκατάσταση GNU εργαλείων: Προεπιλεγμένος κατάλογος C:\Cygnus ΕΡΓΑΛΕΙΑ: Εκτέλεση Αρχείου: gccarm331.exe ΠΕΡΙΒΑΛΛΟΝ ΕΞΟΜΟΙΩΤΗ: mdk311.exe, το οποίο ο ο θα εγκαταστήσει όλο το περιβάλλον του εξομοιωτή, για διάφορους υποστηριζόμενους επεξεργαστές και μικροελεγκτές. 47

Δημιουργία Project Project New uvision i project όνομα Επιλογή επεξεργαστή από Project Select Device for target Target 1 Παρότι θα έπρεπε να επιλεγεί Atmel AT91SAM9261 όπως συνέβαινε με την έκδοση uvision4 επιλέξτε καταρχήν μοντέλο με κάποιον παλιότερο επεξεργαστικό πυρήνα από τον ARM926EJ S γιατί η παραπάνω έκδοση του GCC δεν αναγνωρίζει την κατάληξη EJ S. π.χ. διαλέξτε κάποιο μοντέλο με πυρήνα ARM7TDMI 48

Επιλογή Device: Target 1 49

Ρυθμίσεις Εξομοιωτή 1. Project Management Components, C Environment and Books 2. Μετάβαση σε καρτέλα Folders/Extensions GNU tool prefix: arm uclibc Cygnus Folder: C:\Cygnus\ 3. Project Options for Target 1 Assembler 1. Misc Controls: mcpu=arm926ej (αυτό ό το option θα δηλώσει τον σωστό επεξεργαστικό πυρήνα και θα παρακάμψει το ARM7TDMI που διαλέξαμε αναγκαστικά νωρίτερα) 50

Επιλογή Καταλόγων: 51

Ρυθμίσεις Assembler 52

Σύνδεση Αρχείου με το Project Επιλέγουμε File New Επιλέγουμε File Save As Όνομα αρχείου με κατάληξη Filename.s Εγγραφή κώδικα στο νέο αρχείο. Στο project workspace με δεξί κλικ επιλέγουμε Add Files to Group και επιλέγουμε το αρχείο που ήδη φτιάξαμε. Μετάφραση κώδικα με Project Build Target. 53

Εκτέλεση Αρχείου Κώδικα: 54

Προσοχή κατά την εξομοίωση με Keil Αν στον κώδικά μας χρησιμοποιείται στοίβα ή κλήση υπορουτινών ο δείκτης στοίβας (SP R13) θα πρέπει να οριστεί στην κορυφή της περιοχής στοίβας Επειδή ζητήσαμε άλλο μοντέλο επεξεργαστή από το αναπτυξιακό του εργαστηρίου δεν συμφωνούν απόλυτα οι διευθύνσεις εσωτερικής μνήμης. Αυτό θα μπορούσε να διορθωθεί από την επόμενη καρτέλα αλλά δεν είναι απαραίτητο μιας και τις διευθύνσεις που χρησιμοποιούμε τις δηλώνουμε με ονόματα (labels l κι όχι με νούμερα) ) στο.data dt segment. 55

Εκτέλεση κώδικα στο περιβάλλον του αναπτυξιακού AT91 Συγγραφή αρχείου assembly με τη βοήθεια του edit (πχ, edit test.s) Εναλλακτικά μπορεί να χρησιμοποιηθεί κάποιο έτοιμο αρχείο αποθηκευμένο σε ένα flash stick: mount /dev/sda1 /mnt 57

Μετάφραση κώδικα assembly make as test.s test Εκκίνηση GNU debugger: gdb test Αν η gdb παρουσιάζεται ως άγνωστη εντολή cd /storage/.gnu chmod 777 gdb Κλήση της ως /storage/.gnu/gdb test 58

Εντολές GDB: Συχνή Χρήση break main @ breakpoint at label main break Check @ breakpoint at label Check run @ run until next breakpoint s @ execute next instruction (same as step) s 5 @ execute next 5 instructions n @ execute next instruction, if it is a call @ don t step into the routine Αποφύγετε τη χρήση της n c @ continue execution after breakpoint (same as cont) 59

Εντολές GDB: Συχνή Χρήση break *0x80c0 @ break at address 0x80c0 info break @ show breakpoints delete 2 @ delete 2 nd breakpoint clear 12 @ clear breakpoint at line 12 of code 60

Περιεχόμενα μνήμης/καταχωρητών x/nfu @ n number, f format, u size x/4xb 0x10544 @ show 4 bytes starting at 10544 in hex fmt x/8tw (&Values+2) @ show 8 words in binary fmt starting at address of Values+2 x/dw &Values @ show in decimal the word at address of label Values 61

Περιεχόμενα μνήμης/καταχωρητών p/f address p/x *((char*) &Values+2) Show in hex, the byte value of address &Values+2 p/x *((short*) &Values Show in hex the half word value of addr &Values p/x *((long*) *) &Values Show in hex the long word value of addr &Values p/x $r2 @ show the value of R2 p/t $cpsr @ show the binary value of CPSR p/x $sp @ show the value of SP (don t use $R13 instead of SP) registers @ show all register values 62

Άλλες εντολές του GDB list @ show 10 lines around current line list 15,18 @ show lines 15 18 disassemble (main+20) @ shows 20 instructions starting ti from main. 63

Ενότητα 6 64

Αναφορές: Χ. Βέργος, Ν. Κωσταράς, «Εγχειρίδιο Χρήσης ΑΤ91», Εκδόσεις Πανεπιστημίου Πατρών, 2009. KEIL, Microcontroller Development Tools, 2010: Available at : www.keil.com * Ευχαριστίες στο διδάσκοντα Ν. Πετρέλλη για τις χρήσιμες παρατηρήσεις, συμβουλές και για την παραχώρηση υλικού. 65