Α Εξάμηνο. Νικόλαος Σκλάβος. nsklavos ΑΤ ceid DΟΤ upatras DΟΤ gr 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Μελέτη Επεξεργαστή ARM και Σχεδίαση Περιφερειακών ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

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

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

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

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

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

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

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

Σελίδα 1 από 12. Απαντήσεις στο φυλλάδιο 55. Ερώτηση 1 η : Ένα υπολογιστικό σύστηµα αποτελείται από:

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

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

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

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

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

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

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

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

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

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

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

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

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

Μνήμη Διευθύνσεις Δείκτες. Προγραμματισμός II 1

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

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα εκτέλεσης εργαστηριακής άσκησης 4: Ρουτίνες καθυστέρησης. [Συγγραφή ρουτίνας καθυστέρησης]

Transcript:

Α Εξάμηνο Νικόλαος Σκλάβος e-mail : nsklavos ΑΤ ceid DΟΤ upatras DΟΤ gr 1

Διάρθρωση Παρουσίασης 1. ΑΤ91: Περιγραφή, Λειτουργία, Χαρακτηριστικά 2. Εντολές 3. Αριθμητικές-Λογικές Πράξεις 4. ΑΤ91: Assembly 5. Εξομοιωτής Keil 6. Αναφορές 2

Ενότητα 1 3

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

Ιδιαίτερα χαρακτηριστικά του ARM9EJ-S Reduced 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

Εκτέλεση εντολής υπό συνθήκη CS/HS CC/LO EQ NE VS VC MI PL GE GT HI LE LT LS 20

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

Ολίσθηση προς τα αριστερά κατά 2 θέσεις 1 1 0 1 1 Carry Bit CPSR 0 1 1 0 0 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) ú 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]! ú Γίνεται τροποποίηση (R2<<2), μετά ο R0 γίνεται R0+ (R2<<2) και μετά θα διευθυνσιοδοτηθεί η κύρια μνήμη. Τροποποίηση μετά την προσπέλαση ú LDR R5,[R0],R2,LSL #2 ú Γίνεται προσπέλαση στην διεύθυνση R0 και μετά ο R0 γίνεται ίσος με R0+(R2<<2) 30

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

Παραδείγματα αποθήκευσης: Store - STR Το περιεχόμενο του καταχωρητή R1 είναι Ox8OOO. 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

Παραδείγματα Αριθμητικών-Λογικών Πράξεων MUL R1,R2,R5 ; R1ß32 LSBs of R2*R5 MLA R1,R1,R4,R6; R1ß32LSBs of R6+R1*R4 SMULL R0,R1,R4,R6; R1: R0ßR4*R6 UMLAL R1,R2,R4,R6; R2: R1ßR4*R6(R1+R2*2 32 ) 40

Εντολές Διακλάδωσης Β: Απλή διακλάδωση 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.data Ακολουθούν δεδομένα.equ Αντιστοίχηση τιμής σε σύμβολο.global Δηλώνει ένα σύμβολο ως σφαιρικό.hword Τοποθετεί 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

Παραδείγματα directives.equ CFG,1.if CFG MOV R0,#0x30.else MOV R0,#0x10.endif.include sfina.asm 45

Ενότητα 5 46

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

Δημιουργία Project ProjectàNew uvision 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, 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 κι όχι με νούμερα) στο.data segment. 55

Ρυθμίσεις... 56

Εκτέλεση κώδικα στο περιβάλλον του αναπτυξιακού 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 from main. 63

Ενότητα 6 64

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