wat gaan we doen?
DESCRIPTION
Wat gaan we doen?. herhaling ARM assembler instructies nieuwe ARM assembler instructie variaties het bordje en het gebruik ervan oefening. Herhaling. LDR R0, =value@ load fixed value MOV R0, R1@ reg-reg copy LDR R0, [ R1 ]@ read from memory STR R0, [ R1 ]@ write to memory - PowerPoint PPT PresentationTRANSCRIPT
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
1Computertechniek 2 – ARM assembler
herhaling ARM assembler instructies nieuwe ARM assembler instructie
variaties het bordje en het gebruik ervan oefening
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
2Computertechniek 2 – ARM assembler
LDR R0, =value @ load fixed valueMOV R0, R1 @ reg-reg copyLDR R0, [ R1 ] @ read from memorySTR R0, [ R1 ] @ write to memoryADD R0, R1, R2 @ R0 = R1 + R2ADD R0, R1, #15@ R0 = R1 + 15B label @ spring naar labelBL subroutine @ spring naar
subroutine
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
3Computertechniek 2 – ARM assembler
ADD R0, R1, R2 @ tel opADDS R0, R1, R2 @ en zet
statusADDEQ R0, R1, R2 @ doe
alleen als ‘EQ’ADDSEQ R0, R1, R2 @
combinatie
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
4Computertechniek 2 – ARM assembler
Variaties op LDR R0, [ R1 ]:
LDR R0, [ R1 ] @ word (32 bit)LDRH R0, [ R1 ] @ half-word (16 bit)LDRB R0, [ R1 ] @ byte (8 bit)
- H of B komt achteraan, dus: LDREQB - Let op de alignment van het geheugen adres!- Kan ook met STR
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
5Computertechniek 2 – ARM assembler
sluit een bordje aan (parallel + USB) installeer de files uit flip.zip
in een lege directory let op: geen spaties in de
pathname dubbel-klik op de .ppr file build start debugger
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
6Computertechniek 2 – ARM assembler
zet onder file > target settings:Target = Remote/TCPHostname = 127.0.0.1Port = 8888
(als je netjes afsluit blijft zou dit moeten blijven staan)
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
7Computertechniek 2 – ARM assembler
Als je dit krijgt moet je onder control panel > system > hardware > device manager (select view > show hidden devices) > non plug-and-pray devices > MAC_MOT > driver instellen op status = started, type = automatic
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
8Computertechniek 2 – ARM assembler
Als je dit krijgt heb je debugger/loader niet afgesloten
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
9Computertechniek 2 – ARM assembler
Voor als het even echt niet meer werkt: als je de debugger hebt afgesloten
moeten al die DOS schermen ook weg zijn (evt met de hand sluiten)
De editor sluiten en weer opstartende USB en Paralelle kabels er even
uithalen om het bordje te resetten, USB eerst weer aansluiten, dan parallel.
PC uitzetten en weer aanzetten
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
10Computertechniek 2 – ARM assembler
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
11Computertechniek 2 – ARM assembler
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
12Computertechniek 2 – ARM assembler
• ARK_LEDs_writeschrijft de laagste 8 bits van R0 naar de
LEDs, bitje == 1 LEDje is aan
• ARK_wait_uswacht R0 microseconds (micro = 10-6)
Beiden volgen de APCS!
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
13Computertechniek 2 – ARM assembler
APCS = ARM Procedure Call Standard
R0 - R3: function arguments
R0 : function result (if applicable)
R4 - R8 : local scratch (preserved)
R9 - R15 : specific use (avoid)
R0 - R3 are *not* preserved (caller-saved)
R4 - R8 *must* be preserved
(boek p175-180)
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
14Computertechniek 2 – ARM assembler
#include "ark.h" .global main
ARMmain: mov r0, r1
loop: ldr r0, =0x55 bl ARK_LEDs_write
ldr r0, =( 500 * 1000 ) bl ARK_wait_us
ldr r0, =0xAA bl ARK_LEDs_write
ldr r0, =( 500 * 1000 ) bl ARK_wait_us
b loop
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
15Computertechniek 2 – ARM assembler
Opdrachten:
Build en run het ‘flip’ programma op je bordje. Maak vervolgens zelf een programma dat op de LEDs een ‘KITT’ display laat zien. Maak hiervan twee versies:
1. Een Belgische versie: een reeks calls met de waarden (patronen) die je wilt laten zien.Dit is een uitbreiding van flip.S in de zelfde stijl.
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
16Computertechniek 2 – ARM assembler
Opdrachten (vervolg):
2. Maak vervolgens een ‘tabel-in-het-geheugen’ versie: zet in het geheugen een reeks “.hword N” waarden, met als N de opeenvolgende patronen. Gebruik een waarde die niet kan, bv “-1” als afsluiter. Je programma begint aan het begin van de reeks, leest telkens een waarde, toon die waarde, en wacht even, maar als het de afsluiter tegenkomt begin je weer opnieuw aan het begin van de reeks.
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology
17Computertechniek 2 – ARM assembler
Opdrachten (vervolg):
Verwijder flip.S (of jouw versie daarvan) uit het project en voeg kitt.c toe. Dit is een C versie van het kitt display. Pas dit programma aan zodat het ledje snel naar links gaat en dan langzaam naar rechts.