Εισαγωγή στο AT91 Νίκος Πετρέλλης, ΠΔ407/80. Αρχιτεκτονική του ARM926EJ-S.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Βασικές έννοιες αλγορίθμων
Advertisements

5 Οργάνωση υπολογιστών Εισαγωγή στην Επιστήμη των Υπολογιστών ã Εκδόσεις Κλειδάριθμος.
Τύποι δεδομένων και τελεστές,
Εισαγωγή στις Τεχνολογίες της Πληροφορικής και των Επικοινωνιών
Δομή Μαθήματος Υπεύθυνος: Δρ Ν. Πετρέλλης, ΠΔ407
Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή
Κ. Διαμαντάρας Α. Βαφειάδης Τμήμα Πληροφορικής ΑΤΕΙ Θεσσαλονίικης 2011 Pipelining – Βασικές αρχές.
Προγραμματισμός Η/Υ Πανεπιστήμιο Αιγαίου
Δομή του TRN KME Μνήμη Διάδρομος Διευθύνσεων Διάδρομος Δεδομένων
Το υλικο του Υπολογιστη
Αρχιτεκτονική Υπολογιστών Γλώσσες Μηχανής
Σχεδίαση μονάδας ελέγχου επεξεργαστή Αρχιτεκτονική Υπολογιστών 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκτάριος Κοζύρης
Ημιαγωγοί – Τρανζίστορ – Πύλες - Εξαρτήματα
ΘΕΩΡΙΑ ΔΙΑΛΕΞΗ 4 Αριθμητικές εκφράσεις και πράξεις Εντολές ανάθεσης
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Η Αρχιτεκτονική των Επεξεργαστών Ψ.Ε.Σ Τμήμα Επιστήμη και Τεχνολογίας Τηλεπικοινωνιών.
Εισαγωγή στο AT91 Νίκος Πετρέλλης, ΠΔ407/80.
Εντολές PIC16F rrf <όνομα καταχωρητή>,a a=f ή a=w
William Stallings Computer Organization and Architecture 7 th Edition Κεφάλαιο 16 Λειτουργία Μονάδας Ελέγχου.
ΤΕΛΕΣΤΕΣ - ΕΚΦΡΑΣΕΙΣ ΜΑΘΗΜΑ 4.
1 Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τέταρτο Pipelining –
ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΩΝ & ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΩΝ
Τα θέματα μας σήμερα Ηλεκτρονικοί υπολογιστές Υλικό και λογισμικό
Τι είναι μία ομάδα / σύνολο εντολών (Instruction Set);
ΑΡΧΙΤΕΚΤΟΝΙΚΗ & ΟΡΓΑΝΩΣΗ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 1 Εισαγωγή
Οργάνωση και Αρχιτεκτονική Υπολογιστών Βασικές αρχές Αρχιτεκτονικής
Ο ΗΛΕΚΤΡΟΝΙΚΟΣ ΥΠΟΛΟΓΙΣΤΗΣ
ΠΑΡΑΔΟΣΕΙΣ ΜΑΘΗΜΑΤΟΣ «ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ 1» ΕΣΩΤΕΡΙΚΗΑΡΧΙΤΕΚΤΟΝΙΚΗ ΚΑΙ ΛΕΙΤΟΥΡΓΙΕΣ 8085 ΟΚΤΩΒΡΙΟΣ 2005.
Α ΡΧΙΤΕΚΤΟΝΙΚΗ Μ ΙΚΡΟΫΠΟΛΟΓΙΣΤΩΝ Υποκεφάλαιο 1.2 (Η κεντρική μονάδα επεξεργασίας CPU08)
Εισαγωγή στις Νέες Τεχνολογίες και Εργαστηριακές Εφαρμογές, Το εσωτερικό ενός υ π ολογιστή Κεφάλαιο 3.
Διαφάνειες παρουσίασης #2
ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΗΣ.
Βασικά στοιχεία της Java
1 Αρχιτεκτονική υπολογιστών Ενότητα 9 : Ομάδες Εντολών: Ιδιότητες και Λειτουργίες Φώτης Βαρζιώτης Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Κρυφή μνήμη (cache memory) (1/2) Εισαγωγή στην Πληροφορκή1 Η κρυφή μνήμη είναι μία πολύ γρήγορη μνήμη – πιο γρήγορη από την κύρια μνήμη – αλλά πιο αργή.
Η Κεντρική Μονάδα Συστήματος Εισαγωγή στην Πληροφορκή 1 Η κεντρική μονάδα του συστήματος (base unit ή system unit) αποτελεί τον πυρήνα ενός υπολογιστή.
Επιλογη υλικου Η/Υ Cpu /επεξεργαστης RAM/μνημη GPU/καρτα γραφικων Οθονη HDD/Σκληρος δισκος.
ΠΑΡΑΔΕΙΓΜΑ: ΤΑ ΕΠΙΠΕΔΑ ΥΛΙΚΟΥ – ΛΟΓΙΣΜΙΚΟΥ ΣΕ ΕΝΑΝ ΥΠΟΛΟΓΙΣΤΗ.
ΕΙΣΑΓΩΓΗ μέρος 2 ΜΙΚΡΟΕΛΕΓΚΤΕΣ - ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ Π. ΚΩΣΤΑΡΑΚΗΣ Β. ΧΡΙΣΤΟΦΙΛΑΚΗΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ.
Τ.Ε.Ι. Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονική Υπολογιστών 10 ο Μάθημα.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αρχιτεκτονική Η/Υ ΙΙ Ενότητα #1: Δομή Η/Υ – Μνήμη – Βασικά περιφερειακά κυκλώματα Νικόλαος Χ. Πετρέλλης Σχολή.
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
Το εσωτερικό ενός υπολογιστή
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
Δεδομένα, μεταβλητές, υπολογισμοί
Γιώργος Δημητρίου Μάθημα 11-12: Σύνθετες Πράξεις
στην Επιστήμη των Υπολογιστών Κωδικός Διαφανειών: MKT110
Ενότητα 1: Εισαγωγή στην Αρχιτεκτονική -Ι Ιωάννης Έλληνας Τμήμα Η/ΥΣ
Ενότητα 3 : Αναπαράσταση αριθμών στο δυαδικό σύστημα
MIPS: Σύνολο εντολών, γλώσσα μηχανής & μεθοδολογία σχεδίασης
Τ.Ε.Ι. Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονική Υπολογιστών
ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΚΕΡΑΙΩΝ
Τ.Ε.Ι. Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονική Υπολογιστών
1. Καταχωρητής εργασίας W
Η ΑΡΙΘΜΙΤΙΚΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ
Τ.Ε.Ι. Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονική Υπολογιστών
1 Οργάνωση και Αρχιτεκτονική Υπολογιστών A. Βαφειάδης Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Α.Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση.
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
Μανασσάκης Βασίλης Καθηγητής Πληροφορικής
Τελεστές και ή όχι Για την εκτέλεση αριθμητικών πράξεων
Θέματα Φεβρουαρίου
ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ
Υλικό Υπολογιστών (Hardware)
Ενσωματωμένα Συστήματα
Το εσωτερικό ενός υπολογιστή
ΗΜΥ 210: Λογικός Σχεδιασμός
Βασικές έννοιες (Μάθημα 2) Τίτλος: Η Συσκευή
Τύποι δεδομένων και τελεστές,
Δυναμικός Κατακερματισμός
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
Μεταγράφημα παρουσίασης:

Εισαγωγή στο AT91 Νίκος Πετρέλλης, ΠΔ407/80

Αρχιτεκτονική του ARM926EJ-S

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

Ιδιαίτερα χαρακτηριστικά του ARM9EJ-S RISC επεξεργαστής ARM/Thumb σύνολο εντολών Πολλαπλασιαστής βελτιωμένης αρχιτεκτονικής Jazelle: Εκτέλεση Java bytecodes

Καταστάσεις Λειτουργίας User – Εκτέλεση προγραμμάτων FIQ – μετά από Fast Interrupt IRQ – μετά από Interrupt Supervisor – Αυξημένα Δικαιώματα Abort – Λάθος προσπέλαση μνήμης Undefined – Εκτέλεση άγνωστης εντολής System – Αυξημένα δικαιώματα

Καταχωρητές

Καταχωρητής Κατάστασης

Σωρός R13 – Stack pointer Μειώνεται κατά 4 κατά την πρόσθεση μιας λέξης 32-bit Αυξάνεται κατά 4 κατά την απομάκρυνση μιας λέξης 32-bit

Κατηγορίες Εντολών Μεταφορά δεδομένων Αριθμητικές πράξεις Λογικές πράξεις Διακλαδώσεις Συστήματος

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

Ολίσθηση αριστερά κατά 3 θέσεις Κρατούμενο Χάνονται 0

Κυκλική Ολίσθηση δεξιά (περιστροφή) Carry

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

Εντολές Ολίσθησης Αριστερή ολίσθηση κατά ν θέσεις= πολλαπλασιασμός με 2 ν Αν χάνονται ψηφία: αριθμός*2 ν %2 32 Δεξιά ολίσθηση κατά ν θέσεις = διαίρεση με 2 ν Αριστερή ολίσθηση κατά 1=ADCS Rx,Rx,Rx

Εντολές Μεταφοράς LDR: R  M STR: R  M MOV: R  R MVN: R  NOT(R) SWP: R  M LDM: regs  mem block STM: regs  mem block MRS: CPSR  R MSR: CPSR  R MRC: Cop  R MCR: Cop  R

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

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

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

Παραδείγματα εντολών φόρτωσης/αποθήκευσης LDR R0,[R1] LDR R0,[R1,R5] LDR R0,[R1,#10] LDR R0,[R1,R5,LSL #2] LDR R0,[R1,R5,LSL #4]! LDR R0,[R1],#12 STR R0,[R1] STR R0,[R1,#20]

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

Παραδείγματα LDMIB R1,{R0,R2-R5} LDMDA R1,{R0,R2-R5} LDMDA R1!,{R1,R2-R5} –Μετά την τελευταία μεταφορά ο R1 θα αποθηκεύσει την τελευταία διεύθυνση που προσπέλασε STMIA R1,{R0,R2-R5} STMDB R1,{R0,R2-R5} Χρήση για αποθήκευση περιβάλλοντος –STMDA ακολουθούμενη από LDMIB –STMIA ακολουθούμενη από LDMDB

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

Παραδείγματα MOV R1,R2 MOV R1,R2,LSL #5 MOVS R1,R2,LSL #5 MOV R1,#0x35 MVN R1,#0x35

Αριθμητικές – Λογικές Πράξεις ADC AND CLZ CMP ORR RSC SUB TST MUL SMULL UMULL ADD BIC CMN EOR RSB SBC TEQ MLA SMLAL UMLAL

Παραδείγματα Αριθμητικών- Λογικών Πράξεων ADD R1,R1,#0x10 ; R1  R1+0x10 SUB R5,R1,R2,LSL #2 ; R5  R1-R2*4 RSB R5,R1,R2,LSL #2 ; R5  R2*4-R1 ADC R5,R1,R2 ; R5  R1+R2+CARRY AND R1,R1,#0x10 ; R1  R1 & 0x10 CMP R2,R4 ; R2-R4 (FLAGS AFFECTED) CMP R3,0x8000 ; R3-0x8000 ( -”-) CMN R1,R2 ; R1-(-R2) (FLAGS NOT AFFECTED) TEQS R1,R4 ; R1 xor R4 (Z AFFECTED)

Παραδείγματα Αριθμητικών- Λογικών Πράξεων 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 )

ΔΙΑΚΛΑΔΩΣΕΙΣ Β: Απλή διακλάδωση BL: Διακλάδωση με αποθήκευση διεύθυνσης επιστροφής στο R14 (για κλήση υπορουτίνας BX, BLX: όμοια με B, BL αλλά αλλάζουν κατάσταση από ARM σε Thumb κ.αντ. Παράδειγμα: –Β Loop; Άλμα στην ετικέτα Loop –BLEQ Loop; Άλμα στο Loop αν Ζ=1

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

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

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

Εγκατάσταση Keil Εξομοιωτή Εκτέλεση των αρχείων –gccarm331.exe (gnu tools) –Download τελευταίας έκδοσης Keil uVision4 (freeware όμως παύει να δουλεύει όταν βγει επόμενη έκδοση!) Δημιουργία project –Project  New uVision project  όνομα –Επιλογή επεξεργαστή από Project  Select Device for target ‘Target 1’ –Παρότι θα έπρεπε να επιλεγεί Atmel  AT91SAM9261 όπως συνέβαινε με την έκδοση uVision4 επιλέξτε καταρχήν μοντέλο με κάποιον παλιότερο επεξεργαστικό πυρήνα από τον ARM926EJ-S γιατί η παραπάνω έκδοση του GCC δεν αναγνωρίζει την κατάληξη EJ-S. Πχ διαλέξτε κάποιο μοντέλο με πυρήνα ARM7TDMI

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

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

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

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

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

Πιο συχνά χρησιμοποιούμενες εντολές gdb break breakpoint at label main break breakpoint at label Check run until next breakpoint execute next instruction (same as step) s execute next 5 instructions execute next instruction, if it is a don’t step into the routine –Αποφύγετε τη χρήση της n continue execution after breakpoint (same as cont)

Πιο συχνά χρησιμοποιούμενες εντολές gdb break break at address 0x80c0 break 12 bytes after main info show breakpoints delete delete 2 nd breakpoint clear clear breakpoint at line 12 of code

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

Περιεχόμενα μνήμης/καταχωρητών 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 show the value of R2 p/t show the binary value of CPSR p/x show the value of SP (don’t use $R13 instead of SP) show all register values

Άλλες εντολές του gdb show 10 lines around current line list show lines disassemble shows 20 instructions starting from main.