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.
