Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail: Sheets en info: Onderwerp: Programmeren van een Embedded Systeem Literatuur:ARM system on chip architecture S.B. Furber Addison Wesley Longman
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 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
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 3 inleiding embedded/real-time/microcontrollers eerste uitleg ARM assembly language oefeningen ARM assembler met de simulator
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 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
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 5 meestal: ‘computer-achtig’ ding geschikt voor real-time geschikt voor embedded gebruik combinatie van processor, ROM, RAM, I/O,... compact goedkoop zuinig
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 6 ergens in, deel van een geheel vaste functie, dus niet vrij programmeerbaar
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 7 niet: snel zo snel mogelijk interactief, batch wel: op tijd!
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 8 responstijd nut
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 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,...
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 10 IP kale chip chip in behuizing module PCB box (bv PLC)
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 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 luxer: ICE primitiever: burn and crash
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 12 C (of een andere HLL): grof makkelijk en snel reduceert de ontwikkelkosten Assembler: nauwkeurig moeilijker, specifiek, meer werk reduceert de hardware kosten
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 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...
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 14 CISC doe zo veel mogelijk per instructie codeer instructies compact RISC voer zoveel mogelijk instructies uit codeer instructies simpel
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology this is not ARM code! movlw0x00 delay_loop: addlw0x01 skpz goto delay_loop een assembler fragment
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 16 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
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 17 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
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 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
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 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
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 20 Data Movement – load from a register MOV destination, source Examples: –MOVr0, r1 –MOVr1, r2 –MOVr2, r3
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 21 Data Movement – load from memory LDR destination, [ source_pointer ] Examples: –LDRr1, [ r3 ]
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 22 Data Movement – save to memory STR destination, [ destination_pointer ] Examples: –STRr1, [ r3 ]
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 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 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
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 24 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
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 25 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
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 26 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)
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 27. global main getal_1 :.word 11 getal_2 :.word 22 getal_3 :.word 33 som :.word hier komt uw code: done: b done
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 28 na downloaden zet onder file > target settings: Target = Simulator (als je netjes afsluit blijft zou dit moeten blijven staan)
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 29 (evt. kan je breakpoints zetten of verwijderen) run als het goed is kom je nu op een breakpoint aan het begin van main
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 30 Loop nu instructie voor instructie door je programma heen (step) Let op wat er veranderd in de regsiters en (uiteindelijk) in het geheugen
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 31 Maak de registers en een stuk gehuegen zichtbaar
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 32
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 33 -Doe twee stappen, -kijk in R1 waar in het geheugen getal_1 terecht is gekomen -Laat je geheugen venster daarheen wijzen
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 34 Doen – thuis lezen lees 3.1 t/m blz t/m blz 58 halverwege
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 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.