Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdChristiana Martens Laatst gewijzigd meer dan 10 jaar geleden
1
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 1 Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail: wouter@voti.nl Sheets en info: www.voti.nl/hvu Onderwerp: Programmeren van een Embedded Systeem Literatuur:ARM system on chip architecture S.B. Furber Addison Wesley Longman 0-201-67519-6
2
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 2 instructie aan de hand van sheets boek als ondersteuning opgaves, in de les of thuis maken ARM V3.2 bordje aanschaffen (€ 60), wordt in volgende vak(ken) weer gebruikt tentamen
3
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 3 inleiding embedded/real-time/microcontrollers eerste uitleg ARM assembly language oefeningen ARM assembler met de simulator
4
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 4 steeds meer transistoren op een chip... losse transistor logica analoge ICs programmeerbare logica klant-specifieke logica micro processor micro controller ‘super’ microprocessor uC als IP
5
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 5 meestal: ‘computer-achtig’ ding geschikt voor real-time geschikt voor embedded gebruik combinatie van processor, ROM, RAM, I/O,... compact goedkoop zuinig
6
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 6 ergens in, deel van een geheel vaste functie, dus niet vrij programmeerbaar
7
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 7 niet: snel zo snel mogelijk interactief, batch wel: op tijd!
8
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 8 responstijd nut
9
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 9 ultra-goedkoop chinees, inclusief de documentatie lastig verkrijgbaar general-purpose PIC, Atmel, 8051, 68HC high-end ARM, PowerPC special purpose DSP, ethernet, USB, analoog,...
10
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 10 IP kale chip chip in behuizing module PCB box (bv PLC)
11
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 11 bijna altijd cross-development: jij werkt op een PC daar draait je editor, compiler, assembler, linker assembler, linker loader of programmer om te laden evt. In-Circuit Debugger luxer: ICE primitiever: burn and crash
12
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 12 C (of een andere HLL): grof makkelijk en snel reduceert de ontwikkelkosten Assembler: nauwkeurig moeilijker, specifiek, meer werk reduceert de hardware kosten
13
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 13 vaak het meeste in C kritische delen soms in assembler kennis van assembler is nuttig voor efficient gebruik van een controller, ook in C ! het zal je maar gebeuren: een bug in je compiler...
14
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 14 CISC doe zo veel mogelijk per instructie codeer instructies compact RISC voer zoveel mogelijk instructies uit codeer instructies simpel
15
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 15 1983 : een opvolger voor the BEEP uit pure noodzaak: RISC, klein Acorn RISC Machine zuinig (veel MIPS per Watt) krachtig beschikbaar als chip, maar ook als IP interne of externe bus MAC
16
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 16 ARM Advanced RISC Machines load store architecture fixed length 32-bit instructions 3-address instruction formats many instructions execute in one cycle instructions are conditionally executed
17
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 17 registers en geheugen R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 = SP R14 = LR R15 = PC registers 0000 0000 0001 0000 0002 0000 0003 0000 0004 0000 0005 0000 0006 0000 0007 0000 0008 0000 0009 ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen ARM processor chip
18
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 18 ARM User Programming model r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 (PC) CPSR 31 0 N Z C V r13: stack pointer r14: link register 31 0 Status register
19
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 19 Data Movement – load a constant value LDR destination, =value Examples: –LDRr0, =10 –LDRr1, =’a’ –LDRr2, =buffer Let op: het boek gebruikt ADR R2, buffer Geen # betekent: er volgt een label Dit is geen ‘echte’ ARM instructie Destination moet een register zijn
20
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 20 LDR R0, =value R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 = SP R14 = LR R15 = PC registers 0000 0000 0001 0000 0002 0000 0003 0000 0004 0000 0005 0000 0006 0000 0007 0000 0008 0000 0009 ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen
21
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 21 Data Movement – load from a register MOV destination, source Examples: –MOVr0, r1 –MOVr1, r2 –MOVr2, r3
22
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 22 MOV R0, R1 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 = SP R14 = LR R15 = PC registers 0000 0000 0001 0000 0002 0000 0003 0000 0004 0000 0005 0000 0006 0000 0007 0000 0008 0000 0009 ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen
23
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 23 Data Movement – load from memory LDR destination, [ source_pointer ] Examples: –LDRr1, [ r3 ]
24
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 24 LDR R0, [ R1 ] R0 R1000 0004 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 = SP R14 = LR R15 = PC registers 0000 0000 0001 0000 0002 0000 0003 0000 0004 0000 0005 0000 0006 0000 0007 0000 0008 0000 0009 ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen
25
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 25 Data Movement – save to memory STR destination, [ destination_pointer ] Examples: –STRr1, [ r3 ]
26
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 26 STR R0, [ R1 ] R0 R1FFFF FFFC R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 = SP R14 = LR R15 = PC registers 0000 0000 0001 0000 0002 0000 0003 0000 0004 0000 0005 0000 0006 0000 0007 0000 0008 0000 0009 ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen
27
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 27 Data processing Instructions Largest group of instructions, all sharing the same instruction format. Contains: –Arithmetic operations –Comparisons (no results - just set condition codes) –Logical operations –Data movement between registers Remember, this is a load / store architecture NOT –These instruction only work on registers, NOT memory. They each perform a specific operation on one or two operands. –First operand always a register - Rn
28
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 28 Arithmetic Operations Operations are: –ADDoperand1 + operand2 –ADCoperand1 + operand2 + carry –SUBoperand1 - operand2 –SBCoperand1 - operand2 + carry -1 –RSBoperand2 - operand1 –RSCoperand2 - operand1 + carry - 1 Syntax: – Rd, Rn, Operand2 Examples –ADD r0, r1, r2 –SUBGT r3, r3, #1 –RSBLES r4, r5, #5
29
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 29 Logical Operations Operations are: –ANDoperand1 AND operand2 –EORoperand1 EOR operand2 –ORRoperand1 OR operand2 –BICoperand1 AND NOT operand2 [ie bit clear] Syntax: – Rd, Rn, Operand2 Examples: –ANDr0, r1, r2 –BICEQr2, r3, #7 –EORSr1,r3,r0
30
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 30 ADD R3, R1, R2 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 = SP R14 = LR R15 = PC registers 0000 0000 0001 0000 0002 0000 0003 0000 0004 0000 0005 0000 0006 0000 0007 0000 0008 0000 0009 ……. FFFF FFFB FFFF FFFC FFFF FFFD FFFF FFFE FFFF geheugen +
31
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 31 copieer de files uit empty.zip in een lege directory let op: geen spaties in de pathname dubbel-klik op de.ppr file edit je main.s build (ctrl-F9) start debugger (F9)
32
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 32.global main LABEL1:.word 10 LABEL2:.word 11 X:.word 12 Y:.word 13 Z:.word 14.align @ begin main main: @ hier komt je code @ einde main klaar: b klaar
33
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 33 na starten van de debugger zet je onder file > target settings: Target = Simulator (als je netjes afsluit blijft zou dit moeten blijven staan)
34
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 34 (evt. kan je breakpoints zetten of verwijderen) run als het goed is kom je nu op een breakpoint aan het begin van main
35
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 35 Loop nu instructie voor instructie door je programma heen (step) Let op wat er veranderd in de regsiters en (uiteindelijk) in het geheugen
36
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 36 Maak de registers en een stuk geheugen zichtbaar
37
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 37
38
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 38 -Doe twee stappen, -kijk in R1 waar in het geheugen getal_1 terecht is gekomen -Laat je geheugen venster daarheen wijzen
39
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 39 Doen – thuis lezen lees 3.1 t/m blz 52 3.2 t/m blz 58 halverwege
40
2008-2009 VPEMSY1, D3ECPT2, DU1EMSY1 : ARM Assemblerhttp://www.voti.nl/hvu Hogeschool Utrecht / Electrical Engineering & Design 40 Doen - hier oefenen 1.Schrijf en test een programma dat de waarden in R0 en R1 verwisselt. Je hebt een extra register nodig. 2.Schrijf en test een programma dat de waarden in de geheugenlocaties X en Y optelt, en het resultaat in geheugenlocatie Z zet. 3.Schrijf en test een programma dat de waarden in de geheugenlocaties LABEL1 en LABEL2 verwisselt. Let goed op het verschil tussen een label en de inhoud van het geheugen op de plek van dat label.
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.