De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  programma draaien vanuit ROM.

Verwante presentaties


Presentatie over: "Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  programma draaien vanuit ROM."— Transcript van de presentatie:

1 Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  programma draaien vanuit ROM  gebruik van de UART  gebruik van de LSP  oefeningen

2 Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 2 char buffer[ 200 ]; const char msg = ”Hello world\n”; int crystal = 12 * 1000 * 1000; void f( void ){ int i; for( i = 0; msg[ i ] != ’\0’; i++ ){ ARK_CHAR_LCD_char_write( msg[ i ] ); }  RWZ : bss  RO : rodata  RWI : data  RO : text (code)  RW : op de stack (hier niet gebruikt: heap)

3 Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 3 Geheugen segmenten: Code (text) Globale RO data met initiele waarde (rodata) Globale RW data met initiele waarde (data) Globale RW data zonder initiele waarde (bss) Stack (lokale data) Heap

4 Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 4 Als je uit RAM runt maakt het allemaal niet veel uit: alle RAM is RW, dus er gaat niets mis. Als je uit ROM (flash) runt moet je oppassen dat alles wat je wil kunnen schrijven in BSS (initieel 0) of DATA staat (specifieke initieele waarde). Code en RO is minder critisch (text of rodata) C doet dit automatisch, in assembler moet je het zelf doen!

5 Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 5 Assembler sectie macro’s in ark.h:  code moet in.text  geinitialiseerde schrijfbare data moet in.data  ongeinitialiseerde data hoort in.bss CODE.text.arm.align DATA.data.align BSS.bss.align

6 Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 6 ROM / RAM selectie: In Project.h staat een regel #define ARK_TARGET ARK_TARGET_RAM Die kan je veranderen in #define ARK_TARGET ARK_TARGET_ROM

7 Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 7 Downloaden naar ROM (zie webpagina):  Philips Flash utility: GUI interface  lpc21isp : dos command line Als de chip opstart kijkt hij naar een pin om te kiezen tussen de rom (flash) bootloader en de applicatie. De beide programma’s kunnen de handshake lijnen gebruiken om de chip te resetten en de bootloader te activeren. Nadeel: een andere windows programma zal dit niet weten…. Jumpers SL7, SL8, SL9, SL10 moeten gesloten zijn voor bootloaden, SL7, SL8 open als je ’normale’ programma’s op de PC wil gebruiken.

8 Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 8 -Zet instellingen (com poort, baudrate, DTR/RTS, execute) -Selecteer de file (wordt na wijziging automatisch herladen) -Upload to Flash

9 Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 9 Lpc21isp : DOS-binnen-windows command line interface lpc21isp –control Project.hex com1 19200 12000 -control: gebruik de handshake lijnen Project.hex: de code die geladen moet worden com1: compoort die gebruikt moet worden 19200: baudrate (38400 werkt ook nog) 12000: kristal frequentie in kHz

10 Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 10 lpc21isp –control -term Project.hex com1 19200 12000 -term : start na het downloaden een ”terminal” Let op: die terminal gebruikt de zelfde baudrate als het downloaden.

11 Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 11 UART Library (assembler) - 1 U0_base, U1_base subroutine ARK_UART_init R0 = UART, R1 = baudrate subroutine ARK_UART_char_write R0 = UART, R1 = char to be written subroutine ARK_UART_string_write R0 = UART, R1 = pointer to ASCIZ string to be written

12 Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 12 UART Library (assembler) - 2 Subroutine ARK_UART_char_read R0 = UART, R0 out = char that was read Subroutine ARK_UART_char_can_be_written R0 = UART, R0 out = 0 for NO, <>0 for YES Subroutine ARK_UART_char_available R0 = UART, R0 out = 0 for NO, <>0 for YES

13 Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 13 main_asm_hello.S #include "ark.h".global main ARM message1:.ASCIZ "Hello world!\n" message2:.ASCIZ "how do you do?\n" message3:.ASCIZ "\n\n".align print: stmfd sp!, { lr } mov r1, r0 ldr r0, =U0_base bl ARK_UART_string_write ldr r0, =( 1000 * 1000 ) ldmfd sp!, { lr } b ARK_wait_us main: ldr r0, =U0_base ldr r1, =19200 bl ARK_UART_init loop: ldr r0, =message1 bl print ldr r0, =message2 bl print ldr r0, =message3 bl print b loop

14 Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 14 UART Library (C) UART_struct *U0_base, *U1_base; void ARK_UART_init( UART_struct *UART, unsigned int baudrate ) void ARK_UART_char_write( UART_struct *UART, char chr ) void ARK_UART_string_write( UART_struct *UART, char *s ) char ARK_UART_char_read( UART_struct *UART ) unsigned char ARK_UART_char_can_be_written( UART_struct *UART ) unsigned char ARK_UART_char_available( UART_struct *UART )

15 Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 15 main_c_serial_echo.c #include "ark.h" int main( int agc, char *argv[] ){ UART_struct * p = U0_base; char c; char h = 1; ARK_UART_init( p, 19200 ); for(;;){ c = ARK_UART_char_read( p ); if( c == '0' ){ h = 0; } if( c == '1' ){ h = 1; } if( h && ( c >= 'a' ) && (c <= 'z' )){ c = ( c - 'a' ) + 'A'; } ARK_UART_char_write( p, c ); } return 0; }

16 Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 16 LSP ‘Library’ #define ARK_BOARD_LSP_PIN 8 void ARK_audio_sw_squarewave_out( int pin, int cycle, int duration ) subroutine: ARK_audio_sw_squarewave_out R0 = pin, R1 = µs per cycle, R2 = µs total

17 Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 17 main_c_beep.c #include "ark.h" int main( int agc, char *argv[] ){ int i; ARK_LEDs_write( 1 ); for( i = 0; i < 4; i++ ){ ARK_audio_sw_squarewave_out( ARK_BOARD_LSP_PIN, 500, 200 * 1000 ); ARK_wait_us( 200 * 1000 ); } ARK_LEDs_write( 3 ); return 0; }

18 Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 18 Muziek Octaaf = verdubbeling van de frequentie ‘centrale A’ = 440 Hz Octaaf is verdeeld in 12 gelijke stappen Dus stap^12 = 2  stap = 12 √ 2 Klopt niet helemaal (‘gelijkzwevend’) Niet uitrekenen, gewoon een tabel gebruiken (zelf samenstellen of googelen)

19 Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 19 noten : naam (= toon hoogte)

20 Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 20 noten : duur

21 Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 21 nootnaam  frequentie

22 Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 22

23 Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 23 Opdracht 1: Mariner Een favoriet gedicht van mij is ”The Rime of the Ancient Mariner”. Schrijf een programma dat serieel communiceert met de PC. Telkens als ik op e PC een toest indruk schrijft het programma de volgende regel van het gedicht naar de PC (eerste 12 regels is genoeg). Het programma moet in ROM geplaatst worden. Taal (C of assembler) is naar eigen keuze.

24 Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 24 Opdracht 2: melodietje Schrijf een programma dat een melodietje naar keuze laat horen op de speaker (het gaat om het principe, een noot of 10 is genoeg, maar dan wel goed!). Het programma moet in ROM geplaatst worden. Taal (C of assembler) is naar eigen keuze. tips: http://www.kennisnet.nl/po/leerkracht/vakken/muziek/kinderliedjes/ neem een liedje zonder kruisen (#’s) of mollen (b’s), bv “dag Sinterklaasje”


Download ppt "Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  programma draaien vanuit ROM."

Verwante presentaties


Ads door Google