Hallo ! dem menue.hex habe ich schon modifiziert. Das ist im *.jed File mit drin. ------------------------------------------------------------------------ -- Ich mache da was mit dem MachXO Wishbone interface. Kopplung: Lesen mit UART, via WBONE[INTERFACE] lesen @TIMER-ticks ------------------------------------------------------------------------ -- PC V24-> -- WBONE MCU <--> Embed(UART#0 --->Timer#1) ------------------------------------------------------------------------ -- Ich suche den asm File für das Lattice MachXO Control Developer KIT. Dieser asm File erzeugt den "prom_init.hex". Besonders die IRQ Routine ist nicht so einfach . ??? in der Doku. drin. ######################################################################## # Frage: Hat einer ein prom_init.asm, bzw. prom_init.s schon mal mit der dev.Chain für den Mico8 übersetz. ######################################################################## # Die asm.files für das neue MachXO2 Board passen nicht so gut. Da ist der Wisbone UART nicht auf Addesse 0 Vom IRQ Handling ? ist nix dabei. UART 'IRQ ######################################################################## # Wishbone Prozess-Interface habe ich am laufen. Halt nur mit dem gelieferten prom_init.hex. Aber ich will das eigene prom_init.hex. machen. Anhang zip ist der Code dump vom Orginal prom_init.hex Gruss Holger.
http://pbuchegger.at Für die Tools via asm + Mico8 als Batchlorarbeit ################################################ Embed Mico8 MachX0 LCMXO2280C ################################################ dat_o_reg4 ist an WBone via Case und flags gekoppelt <= shaddow_seconds_reg; /* Freeze */ <= minutes_reg; <= hours_reg;
1 | |
2 | always@(posedge clk_ii or posedge rst_i) begin |
3 | if (rst_i) begin |
4 | dat_o_reg4 <= 0; |
5 | end |
6 | else begin /* strobe */ |
7 | if (!wb_we_i && wb_stb_i && wb_cyc_i ) begin //wb_we_Low $00_/WRITE R0 ! |
8 | case ( wb_adr_i ) // via Reg: $02 R4 !, $01 R4 ! , $00 FU-WBONE_ADDR OK? |
9 | 'h0: dat_o_reg4 <= shaddow_seconds_reg; /* Freeze */ |
10 | 'h1: dat_o_reg4 <= minutes_reg; |
11 | 'h2: dat_o_reg4 <= hours_reg; |
12 | default: dat_o_reg4 <= shaddow_seconds_reg; |
13 | endcase |
14 | end |
15 | end |
16 | end |
################################################# co.asm ist für die neue Lattice MachXO2 Gruss Holger.
;UART REGISTERS .equ REG_UART_DATA, 0x00 .equ REG_UART_IER, 0x01 ; 0001 .equ REG_UART_LCR, 0x03 ; 0011 .equ REG_UART_LSR, 0x05 ; 1001 .equ U_LSR_MSK, 0x02 ; 0000:0011 .equ UART, 0x00 ; 0000 0000 0000 0000 [0000 0000] - 0000 1111 1111 1111 [1111 1111] (0x000000-0x0FFFFF) .equ TIMER, 0x01 ; 1011 0000 0000 0000 [0000 0000] - 1011 1111 1111 1111 [1111 1111] (0xB00000-0xBFFFFF) .equ EBR, 0xE0 ; 1110 0000 0000 0000 [0000 0000] - 1110 1111 1111 1111 [1111 1111] (0xE00000-0xEFFFFF) ; To do: include util.inc ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;; *** Utility Functions *** ;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; small_delay: movi r1, 0x00 movi r2, 0x00 delay_loop: addi r1, 0x01 addic r2, 0x00 cmpi r2, 0x01 bnz delay_loop ret delay: movi r1, 0x00 movi r2, 0x00 movi r3, 0x00 dly_loop: addi r1,0x01 addic r2, 0x00 addic r3, 0x00 cmpi r3, 0x20 bnz dly_loop ret sel_uart: ; ( -- ) movi r15, UART ; store r15 UART ! ret sel_uart_with_r0_zero: ; ( -- ) call sel_uart movi r0, 0x00 ; IER### ret ; ######################### init_uart: ; ( -- ) call sel_uart_with_r0zero ; export r0, REG_UART_IER ; !$0 TO UART-IRQ_EN_REG movi r0, 0x03 ; 0000:0011 r0=$#03# export r0, REG_UART_LCR ; ret ; ######################### ; ######################### wait_for_uart_txrdy: ; ( -- ) call sel_uart uart_txrdy_loop: import r1, REG_UART_LSR andi r1, U_LSR_MSK ; $20 --0010:0000 Mask out all but THR Empty status bit cmpi r1, U_LSR_MSK ; bnz uart_txrdy_loop ; ret ; ########################### ; ######################### send_uart_data: ; ( via r9 -- ) call sel_uart call wait_for_uart_txrdy export r9, REG_UART_DATA return ; ########################### ; retruss Holger. ;================ ; ROUTINES ; the user input (a character from the hyperterminal) ; is matched to a function get_char: call sel_uart ; import r5, REG_UART_DATA ; Read from UART cmpi r5, 'm' bz init_menu cmpi r5, 't' callz read_uptime waiting_for_input: movi r15,UART import r0, REG_UART_LSR andi r0, 0x01 cmpi r0, 0x01 callz get_char b waiting_for_input ; ENDE INCLUDE_PRMITIVES INIT UART GET PUT
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.