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