PowerPoint-presentatie

advertisement
Computertechniek 2 – ARM assembler
Wouter van Ooijen
Mail: [email protected]
Sheets en info:
www.voti.nl/hvu/D3ECPT2
Onderwerp: Programmeren van een Embedded Systeem
Literatuur:
ARM system on chip architecture
S.B. Furber
Addison Wesley Longman
0-201-67519-6
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
1
Computertechniek 2 – ARM assembler
2
instructie aan de hand van sheets
boek als ondersteuning
opgaves, in de les of thuis maken
ARM bordje aanschaffen, wordt in volgend vak
weer gebruikt
 tentamen




Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
Computertechniek 2 – ARM assembler
3
 inleiding embedded/real-time/microcontrollers
 eerste uitleg ARM assembly language
 oefeningen ARM assembler met de simulator
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
Computertechniek 2 – ARM assembler
4
steeds meer transistoren op een chip...
losse transistor
analoge ICs
logica
micro processor
micro controller
programmeerbare
logica
‘super’
microprocessor
klant-specifieke
logica
uC als IP
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
Computertechniek 2 – ARM assembler
5
meestal:
 ‘computer-achtig’ ding
 geschikt voor real-time
 geschikt voor embedded gebruik
 combinatie van processor, ROM, RAM, I/O, ...
 compact
 goedkoop
 zuinig
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
Computertechniek 2 – ARM assembler
 ergens in,
deel van een geheel
 vaste functie,
dus niet vrij programmeerbaar
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
6
Computertechniek 2 – ARM assembler
niet:
 snel
 zo snel mogelijk
 interactief, batch
wel:
 op tijd!
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
7
Computertechniek 2 – ARM assembler
nut
responstijd
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
8
Computertechniek 2 – ARM assembler
ultra-goedkoop
chinees, inclusief de documentatie
lastig verkrijgbaar
general-purpose
PIC, Atmel, 8051, 68HC
high-end
ARM, PowerPC
special purpose
DSP, ethernet, USB, analoog, ...
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
9
Computertechniek 2 – ARM assembler






IP
kale chip
chip in behuizing
module
PCB
box (bv PLC)
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
10
Computertechniek 2 – ARM assembler
bijna altijd cross-development:
 jij werkt op een PC
 daar draait je editor, compiler,
assembler, linker
 loader of programmer om te laden
 luxer: ICE
 primitiever: burn and crash
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
11
Computertechniek 2 – ARM assembler
C (of een andere HLL): grof
 makkelijk en snel
 reduceert de ontwikkelkosten
Assembler: nauwkeurig
 moeilijker, specifiek, meer werk
 reduceert de hardware kosten
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
12
Computertechniek 2 – ARM assembler
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...
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
Computertechniek 2 – ARM assembler
CISC
 doe zo veel mogelijk per instructie
 codeer instructies compact
RISC
 voer zoveel mogelijk instructies uit
 codeer instructies simpel
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
14
Computertechniek 2 – ARM assembler
een assembler fragment
@ delay
@ this is not ARM code!
movlw
0x00
delay_loop:
addlw 0x01
skpz
goto delay_loop
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
15
Computertechniek 2 – ARM assembler








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
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
16
Computertechniek 2 – ARM assembler
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
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
17
Computertechniek 2 – ARM assembler
18
ARM User Programming model
31
0
r0
r1
r2
r3
r4
r5
r6
r7
31
0
r8
r9
r10
r11
r12
r13
r14
r15 (PC)
0
31
CPSR
Status register
NZCV
r13: stack pointer
r14: link register
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
Computertechniek 2 – ARM assembler
Data Movement – load a constant value
LDR destination, =value
• Examples:
– LDR
r0, =#10
– LDR
r1, =#’a’
– LDR
r2, =buffer
Let op: het boek gebruikt ADR R2, buffer
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
19
Computertechniek 2 – ARM assembler
Data Movement – load from a register
MOV destination, source
• Examples:
– MOV
– MOV
– MOV
r0, r1
r1, r2
r2, r3
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
20
Computertechniek 2 – ARM assembler
Data Movement – load from memory
LDR destination, [ source_pointer ]
• Examples:
– LDR
r1, [ r3 ]
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
21
Computertechniek 2 – ARM assembler
Data Movement – save to memory
STR destination, [ destination_pointer ]
• Examples:
– STR
r1, [ r3 ]
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
22
Computertechniek 2 – ARM assembler
23
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
– 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
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
Computertechniek 2 – ARM assembler
Arithmetic Operations
• Operations are:
–
–
–
–
–
–
ADD
ADC
SUB
SBC
RSB
RSC
operand1 + operand2
operand1 + operand2 + carry
operand1 - operand2
operand1 - operand2 + carry -1
operand2 - operand1
operand2 - operand1 + carry - 1
• Syntax:
– <Operation> Rd, Rn, Operand2
• Examples
– ADD r0, r1, r2
– SUBGT r3, r3, #1
– RSBLES r4, r5, #5
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
24
Computertechniek 2 – ARM assembler
25
Logical Operations
• Operations are:
–
–
–
–
AND
EOR
ORR
BIC
operand1 AND operand2
operand1 EOR operand2
operand1 OR operand2
operand1 AND NOT operand2 [ie bit clear]
• Syntax:
– <Operation> Rd, Rn, Operand2
• Examples:
– AND
– BICEQ
– EORS
r0, r1, r2
r2, r3, #7
r1,r3,r0
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
Computertechniek 2 – ARM assembler
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)
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
26
Computertechniek 2 – ARM assembler
.global
main
getal_1
getal_2
getal_3
som
:
:
:
:
.word
.word
.word
.word
11
22
33
99999
main:
@ hier komt uw code:
done:
b done
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
27
Computertechniek 2 – ARM assembler
na downloaden zet onder file > target
settings:
 Target = Simulator
(als je netjes afsluit blijft zou dit moeten blijven staan)
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
28
Computertechniek 2 – ARM assembler
(evt. kan je breakpoints zetten of verwijderen)
 run
als het goed is kom je nu op een breakpoint
aan het begin van main
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
29
Computertechniek 2 – ARM assembler
Loop nu instructie voor instructie door je
programma heen (step)
Let op wat er veranderd in de regsiters en
(uiteindelijk) in het geheugen
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
30
Computertechniek 2 – ARM assembler
Maak de registers en een stuk gehuegen
zichtbaar
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
31
Computertechniek 2 – ARM assembler
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
32
Computertechniek 2 – ARM assembler
- Doe twee stappen,
- kijk in R1 waar in het geheugen getal_1
terecht is gekomen
- Laat je geheugen venster daarheen wijzen
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
33
Computertechniek 2 – ARM assembler
Doen – thuis lezen
lees
3.1 t/m blz 52
3.2 t/m blz 58 halverwege
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
34
Computertechniek 2 – ARM assembler
35
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
LABEL1 en LABEL2 verwisselt.
3.
Schrijf en test een programma dat de waarden in de geheugenlocaties
X en Y optelt, en het resultaat in geheugenlocatie Z zet.
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
Download