OpenCores
URL https://opencores.org/ocsvn/Aquarius/Aquarius/trunk

Subversion Repositories Aquarius

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /Aquarius/trunk/application/shc_monitor_release_v1
    from Rev 12 to Rev 2
    Reverse comparison

Rev 12 → Rev 2

/main.srec File deleted
/main.map File deleted
/startup/sh.x File deleted
/startup/crt0.S File deleted
/dump File deleted
dump Property changes : Deleted: svn:executable ## -1 +0,0 ## -* \ No newline at end of property Index: main.s =================================================================== --- main.s (revision 12) +++ main.s (nonexistent) @@ -1,638 +0,0 @@ - .file "main.c" -gcc2_compiled.: -.section .rodata - .align 2 -.LC0: - .string "" - .text - .align 2 - .global _main_sh - .type _main_sh,@function -_main_sh: - mov.l r8,@-r15 - mov.l r14,@-r15 - sts.l pr,@-r15 - add #-28,r15 - mov r15,r14 - mov r14,r1 - mov.l .L10,r2 - mov r14,r1 - mov #17,r3 - mov r15,r7 - mov r1,r4 - mov r2,r5 - mov r3,r6 - mov.l .L11,r8 - jsr @r8 - nop - mov.l r14,@(20,r14) - mov r15,r1 - mov.l .L12,r8 - jsr @r8 - nop - mov r15,r1 - mov.l .L13,r8 - jsr @r8 - nop - mov r15,r1 - mov.w .L14,r2 - mov #0,r4 - mov r2,r5 - mov.l .L15,r8 - jsr @r8 - nop -.L3: - mov.l @(20,r14),r1 - mov.b @r1,r2 - extu.b r2,r1 - tst r1,r1 - bf .L5 - bra .L4 - nop - .align 2 -.L5: - mov r15,r1 - mov.l .L13,r8 - jsr @r8 - nop - mov r15,r2 - mov r14,r1 - add #20,r1 - mov.l @r1,r2 - mov.b @r2,r7 - extu.b r7,r3 - add #1,r2 - mov.l r2,@r1 - mov #1,r4 - mov r3,r5 - mov.l .L15,r8 - jsr @r8 - nop - bra .L3 - nop - .align 2 -.L4: - mov r14,r1 - mov r14,r2 - add #24,r2 - mov #0,r1 - mov.b r1,@r2 -.L6: - bra .L8 - nop - bra .L7 - nop - .align 2 -.L8: - mov r14,r1 - mov r14,r2 - add #24,r2 - mov.b @r2,r1 - extu.b r1,r2 - mov r2,r1 - shlr2 r1 - shlr2 r1 - extu.b r1,r2 - tst r2,r2 - bf .L9 - mov r15,r1 - mov.l .L13,r8 - jsr @r8 - nop - mov r15,r1 - mov.w .L16,r2 - mov #0,r4 - mov r2,r5 - mov.l .L15,r8 - jsr @r8 - nop -.L9: - mov r15,r1 - mov.l .L13,r8 - jsr @r8 - nop - mov r15,r1 - mov r14,r2 - mov r14,r1 - add #24,r1 - mov.b @r1,r2 - mov r2,r3 - add #1,r3 - mov.b r3,@r1 - extu.b r2,r1 - mov #1,r4 - mov r1,r5 - mov.l .L15,r8 - jsr @r8 - nop - bra .L6 - nop - .align 2 -.L7: -.L2: - add #28,r14 - mov r14,r15 - lds.l @r15+,pr - mov.l @r15+,r14 - mov.l @r15+,r8 - rts - nop - .align 1 -.L14: - .short 128 -.L16: - .short 192 -.L17: - .align 2 -.L10: - .long .LC0 -.L11: - .long _memcpy -.L12: - .long _lcdinit -.L13: - .long _lcdready -.L15: - .long _lcdwr -.Lfe1: - .size _main_sh,.Lfe1-_main_sh - .align 2 - .global _lcdready - .type _lcdready,@function -_lcdready: - mov.l r8,@-r15 - mov.l r14,@-r15 - sts.l pr,@-r15 - mov r15,r14 -.L19: - mov r15,r1 - mov #0,r4 - mov.l .L22,r8 - jsr @r8 - nop - mov.w .L23,r1 - and r0,r1 - extu.b r1,r2 - tst r2,r2 - bf .L21 - bra .L20 - nop - .align 2 -.L21: - bra .L19 - nop - .align 2 -.L20: -.L18: - mov r14,r15 - lds.l @r15+,pr - mov.l @r15+,r14 - mov.l @r15+,r8 - rts - nop - .align 1 -.L23: - .short 128 -.L24: - .align 2 -.L22: - .long _lcdrd -.Lfe2: - .size _lcdready,.Lfe2-_lcdready - .align 2 - .global _lcdrd - .type _lcdrd,@function -_lcdrd: - mov.l r14,@-r15 - add #-12,r15 - mov r15,r14 - mov.l r4,@r14 - mov.l .L34,r1 - mov r14,r3 - mov r14,r2 - add #3,r2 - mov r1,r3 - add #2,r1 - mov.b @r2,r3 - mov #1,r2 - and r3,r2 - mov.b @r1,r3 - mov.w .L35,r7 - and r3,r7 - mov r7,r3 - or r2,r3 - mov.b r3,@r1 - mov.l .L34,r1 - mov r1,r2 - add #2,r1 - mov.b @r1,r2 - mov #2,r3 - or r2,r3 - mov.b r3,@r1 - mov.l .L34,r1 - mov r1,r2 - add #2,r1 - mov.b @r1,r2 - mov.w .L36,r3 - and r2,r3 - mov.b r3,@r1 - mov r14,r2 - mov r14,r1 - add #8,r1 - mov.l .L34,r2 - mov.b @r2,r3 - mov.b r3,@r1 - mov r14,r2 - mov r14,r1 - add #8,r1 - mov.l .L34,r2 - mov.b @r2,r3 - mov.b r3,@r1 - mov r14,r2 - mov r14,r1 - add #8,r1 - mov.l .L34,r2 - mov.b @r2,r3 - mov.b r3,@r1 - mov.l .L34,r1 - mov r1,r2 - add #2,r1 - mov.b @r1,r2 - mov #4,r3 - or r2,r3 - mov.b r3,@r1 - mov #0,r1 - mov.l r1,@(4,r14) -.L26: - mov.l @(4,r14),r1 - mov #25,r2 - cmp/gt r2,r1 - bf .L29 - bra .L27 - nop - .align 2 -.L29: - mov r14,r2 - mov r14,r1 - add #8,r1 - mov.l .L34,r2 - mov.b @r2,r3 - mov.b r3,@r1 -.L28: - mov.l @(4,r14),r1 - mov r1,r2 - add #1,r2 - mov.l r2,@(4,r14) - bra .L26 - nop - .align 2 -.L27: - mov r14,r2 - mov r14,r1 - add #9,r1 - mov.l .L34,r3 - mov r3,r2 - add #3,r3 - mov.b @r3,r2 - mov.b r2,@r1 - mov.l .L34,r1 - mov r1,r2 - add #2,r1 - mov.b @r1,r2 - mov.w .L36,r3 - and r2,r3 - mov.b r3,@r1 - mov #0,r1 - mov.l r1,@(4,r14) -.L30: - mov.l @(4,r14),r1 - mov #25,r2 - cmp/gt r2,r1 - bf .L33 - bra .L31 - nop - .align 2 -.L33: - mov r14,r2 - mov r14,r1 - add #8,r1 - mov.l .L34,r2 - mov.b @r2,r3 - mov.b r3,@r1 -.L32: - mov.l @(4,r14),r1 - mov r1,r2 - add #1,r2 - mov.l r2,@(4,r14) - bra .L30 - nop - .align 2 -.L31: - mov r14,r1 - mov r14,r2 - add #9,r2 - mov.b @r2,r3 - extu.b r3,r1 - mov r1,r0 - bra .L25 - nop - .align 2 -.L25: - add #12,r14 - mov r14,r15 - mov.l @r15+,r14 - rts - nop - .align 1 -.L35: - .short 254 -.L36: - .short 251 -.L37: - .align 2 -.L34: - .long -1412628480 -.Lfe3: - .size _lcdrd,.Lfe3-_lcdrd - .align 2 - .global _lcdwr - .type _lcdwr,@function -_lcdwr: - mov.l r14,@-r15 - add #-16,r15 - mov r15,r14 - mov.l r4,@r14 - mov r5,r1 - mov r14,r2 - mov r14,r3 - add #4,r3 - mov.b r1,@r3 - mov.l .L47,r1 - mov r1,r2 - add #3,r1 - mov r14,r2 - mov r14,r3 - add #4,r3 - mov.b @r3,r2 - mov.b r2,@r1 - mov.l .L47,r1 - mov r14,r3 - mov r14,r2 - add #3,r2 - mov r1,r3 - add #2,r1 - mov.b @r2,r3 - mov #1,r2 - and r3,r2 - mov.b @r1,r3 - mov.w .L48,r7 - and r3,r7 - mov r7,r3 - or r2,r3 - mov.b r3,@r1 - mov.l .L47,r1 - mov r1,r2 - add #2,r1 - mov.b @r1,r2 - mov.w .L49,r3 - and r2,r3 - mov.b r3,@r1 - mov.l .L47,r1 - mov r1,r2 - add #2,r1 - mov.b @r1,r2 - mov.w .L50,r3 - and r2,r3 - mov.b r3,@r1 - mov r14,r2 - mov r14,r1 - add #12,r1 - mov.l .L47,r2 - mov.b @r2,r3 - mov.b r3,@r1 - mov r14,r2 - mov r14,r1 - add #12,r1 - mov.l .L47,r2 - mov.b @r2,r3 - mov.b r3,@r1 - mov r14,r2 - mov r14,r1 - add #12,r1 - mov.l .L47,r2 - mov.b @r2,r3 - mov.b r3,@r1 - mov.l .L47,r1 - mov r1,r2 - add #2,r1 - mov.b @r1,r2 - mov #4,r3 - or r2,r3 - mov.b r3,@r1 - mov #0,r1 - mov.l r1,@(8,r14) -.L39: - mov.l @(8,r14),r1 - mov #25,r2 - cmp/gt r2,r1 - bf .L42 - bra .L40 - nop - .align 2 -.L42: - mov r14,r2 - mov r14,r1 - add #12,r1 - mov.l .L47,r2 - mov.b @r2,r3 - mov.b r3,@r1 -.L41: - mov.l @(8,r14),r1 - mov r1,r2 - add #1,r2 - mov.l r2,@(8,r14) - bra .L39 - nop - .align 2 -.L40: - mov.l .L47,r1 - mov r1,r2 - add #2,r1 - mov.b @r1,r2 - mov.w .L50,r3 - and r2,r3 - mov.b r3,@r1 - mov #0,r1 - mov.l r1,@(8,r14) -.L43: - mov.l @(8,r14),r1 - mov #25,r2 - cmp/gt r2,r1 - bf .L46 - bra .L44 - nop - .align 2 -.L46: - mov r14,r2 - mov r14,r1 - add #12,r1 - mov.l .L47,r2 - mov.b @r2,r3 - mov.b r3,@r1 -.L45: - mov.l @(8,r14),r1 - mov r1,r2 - add #1,r2 - mov.l r2,@(8,r14) - bra .L43 - nop - .align 2 -.L44: -.L38: - add #16,r14 - mov r14,r15 - mov.l @r15+,r14 - rts - nop - .align 1 -.L48: - .short 254 -.L49: - .short 253 -.L50: - .short 251 -.L51: - .align 2 -.L47: - .long -1412628480 -.Lfe4: - .size _lcdwr,.Lfe4-_lcdwr - .align 2 - .global _lcdinit - .type _lcdinit,@function -_lcdinit: - mov.l r8,@-r15 - mov.l r14,@-r15 - sts.l pr,@-r15 - add #-4,r15 - mov r15,r14 - mov r15,r1 - mov #0,r4 - mov #48,r5 - mov.l .L61,r8 - jsr @r8 - nop - mov #0,r1 - mov.l r1,@r14 -.L53: - mov.l @r14,r1 - mov.l .L62,r2 - cmp/gt r2,r1 - bf .L55 - bra .L54 - nop - .align 2 -.L56: -.L55: - mov.l @r14,r1 - mov r1,r2 - add #1,r2 - mov.l r2,@r14 - bra .L53 - nop - .align 2 -.L54: - mov r15,r1 - mov #0,r4 - mov #48,r5 - mov.l .L61,r8 - jsr @r8 - nop - mov #0,r1 - mov.l r1,@r14 -.L57: - mov.l @r14,r1 - mov.w .L63,r2 - cmp/gt r2,r1 - bf .L59 - bra .L58 - nop - .align 2 -.L60: -.L59: - mov.l @r14,r1 - mov r1,r2 - add #1,r2 - mov.l r2,@r14 - bra .L57 - nop - .align 2 -.L58: - mov r15,r1 - mov #0,r4 - mov #48,r5 - mov.l .L61,r8 - jsr @r8 - nop - mov r15,r1 - mov.l .L64,r8 - jsr @r8 - nop - mov r15,r1 - mov #0,r4 - mov #56,r5 - mov.l .L61,r8 - jsr @r8 - nop - mov r15,r1 - mov.l .L64,r8 - jsr @r8 - nop - mov r15,r1 - mov #0,r4 - mov #12,r5 - mov.l .L61,r8 - jsr @r8 - nop - mov r15,r1 - mov.l .L64,r8 - jsr @r8 - nop - mov r15,r1 - mov #0,r4 - mov #1,r5 - mov.l .L61,r8 - jsr @r8 - nop - mov r15,r1 - mov.l .L64,r8 - jsr @r8 - nop - mov r15,r1 - mov #0,r4 - mov #6,r5 - mov.l .L61,r8 - jsr @r8 - nop -.L52: - add #4,r14 - mov r14,r15 - lds.l @r15+,pr - mov.l @r15+,r14 - mov.l @r15+,r8 - rts - nop - .align 1 -.L63: - .short 4999 -.L65: - .align 2 -.L61: - .long _lcdwr -.L62: - .long 204999 -.L64: - .long _lcdready -.Lfe5: - .size _lcdinit,.Lfe5-_lcdinit - .ident "GCC: (GNU) 2.95.3 20010315 (release)" Index: main.c =================================================================== --- main.c (revision 12) +++ main.c (nonexistent) @@ -1,1140 +0,0 @@ -//=============================== -// Monitor Program -//------------------------------- -// for VirtexE Evaluation Board -// May.1 2003 Ver.1 -//=============================== - -//====================================================== -// Address Map -//====================================================== -// address sz wt wd device -// 00000000-00001FFF 8K 0 32 ROM (code) -// 00002000-00003DFF 6K 0 32 RAM (data) -// 00003E00-00003FFF 512 0 32 RAM (stack) -// -// 00000000-0000FFFF 64K 0 32 RAM (shadow every 16KB) -// 00010000-0001FFFF 64K 3 32 RAM (shadow every 16KB) -// 00020000-0002FFFF 64K 0 16 RAM (shadow every 16KB) -// 00030000-0003FFFF 64K 3 16 RAM (shadow every 16KB) -// 00040000-ABCCFFFF (shadow RAM) -// ABCD0000-ABCD00FF 256 3 32 PIO (shadow every 4B) -// ABCD0100-ABCD01FF 256 3 32 UART(shadow every 4B) -// ABCD0200-ABCD02FF 256 3 32 SYS (shadow every 8B) -// ABCD0300-FFFBFFFF (shadow RAM) -// FFFC0000-FFFCFFFF 64K 0 32 RAM (shadow every 16KB) -// FFFD0000-FFFDFFFF 64K 3 32 RAM (shadow every 16KB) -// FFFE0000-FFFEFFFF 64K 0 16 RAM (shadow every 16KB) -// FFFF0000-FFFFFFFF 64K 3 16 RAM (shadow every 16KB) -// -//====================================================== -// PORT OUTPUT -//====================================================== -// ABCD0000 : reserved -// 31 30 29 28 27 26 25 24 -// 7 6 5 4 3 2 1 0 -// ----------------------------------------------- -// | | | | | | | | | -// -----------------------------------------------; -// -// ABCD0001 : KEYYO (Key SCAN Y-axis out) -// 23 22 21 20 19 18 17 16 -// 7 6 5 4 3 2 1 0 -// ----------------------------------------------- -// | | | | KY4 | KY3 | KY2 | KY1 | KY0 | -// ----------------------------------------------- -// -// ABCD0002 : LCDCON (LCD Control Signal) -// 15 14 13 12 11 10 9 8 -// 7 6 5 4 3 2 1 0 -// ----------------------------------------------- -// | | | | | | E | R/W | RS | -// ----------------------------------------------- -// -// ABCD0003 : LCDOUT (Write Data to LCD) -// 7 6 5 4 3 2 1 0 -// 7 6 5 4 3 2 1 0 -// ----------------------------------------------- -// | DW7 | DW6 | DW5 | DW4 | DW3 | DW2 | DW1 | DW0 | -// ----------------------------------------------- -// -//====================================================== -// PORT INPUT -//====================================================== -// ABCD0000 : reserved -// 31 30 29 28 27 26 25 24 -// 7 6 5 4 3 2 1 0 -// ----------------------------------------------- -// | | | | | | | | | -// -----------------------------------------------; -// -// ABCD0001 : KEYXI (Key SCAN X-axis in) -// 23 22 21 20 19 18 17 16 -// 7 6 5 4 3 2 1 0 -// ----------------------------------------------- -// | | | | KX4 | KX3 | KX2 | KX1 | KX0 | -// ----------------------------------------------- -// -// ABCD0002 : reserved -// 15 14 13 12 11 10 9 8 -// 7 6 5 4 3 2 1 0 -// ----------------------------------------------- -// | | | | | | | | | -// ----------------------------------------------- -// -// ABCD0003 : LCDIN (Read Data from LCD) -// 7 6 5 4 3 2 1 0 -// 7 6 5 4 3 2 1 0 -// ----------------------------------------------- -// | DR7 | DR6 | DR5 | DR4 | DR3 | DR2 | DR1 | DR0 | -// ----------------------------------------------- -// -//====================================================== -// UART: SASC (www.opencores.com) -// Simple Asynchronous Serial Communication Device -//====================================================== -// ABCD0100 : UARTBG0 Baud Rate Generator Div0 (R/W) -// 31 30 29 28 27 26 25 24 -// 7 6 5 4 3 2 1 0 -// ----------------------------------------------- -// | B07 | B06 | B05 | B04 | B03 | B02 | B01 | B00 | -// ----------------------------------------------- -// -// ABCD0101 : UARTBG1 Baud Rate Generator Div1 (R/W) -// 23 22 21 20 19 18 17 16 -// 7 6 5 4 3 2 1 0 -// ----------------------------------------------- -// | B17 | B16 | B15 | B14 | B13 | B12 | B11 | B10 | -// ----------------------------------------------- -// -// ABCD0102 : UARTCON (TXF=full_o, RXE=empty_o) (R only) -// 15 14 13 12 11 10 9 8 -// 7 6 5 4 3 2 1 0 -// ----------------------------------------------- -// | | | | | | | TXF | RXE | -// ----------------------------------------------- -// -// ABCD0103 : UARTTXD(W only)/UARTRXD(R only) -// 7 6 5 4 3 2 1 0 -// 7 6 5 4 3 2 1 0 -// ----------------------------------------------- -// | TR7 | TR6 | TR5 | TR4 | TR3 | TR2 | TR1 | TR0 | -// ----------------------------------------------- -// -//====================================================== -// System Controller -// Interrupt and Exception Controller -//====================================================== -// ABCD0200 : INTCTL Interrupt Control (32bit R/W only) -// 31 30 29 28 27 26 25 24 -// ----------------------------------------------- -// |E_NMI|E_IRQ|E_CER|E_DER|E_MRS| |TMRON|BRKON| -// ----------------------------------------------- -// 23 22 21 20 19 18 17 16 -// ----------------------------------------------- -// |ILVL3|ILVL2|ILVL1|ILVL0|IVEC7|IVEC6|IVEC5|IVEC4| -// ----------------------------------------------- -// 15 14 13 12 11 10 9 8 -// ----------------------------------------------- -// |IVEC3|IVEC2|IVEC1|IVEC0|TMR11|TMR10|TMR09|TMR08| -// ----------------------------------------------- -// 7 6 5 4 3 2 1 0 -// ----------------------------------------------- -// |TMR07|TMR06|TMR05|TMR04|TMR03|TMR02|TMR01|TMR00| -// ----------------------------------------------- -// bit31: E_NMI Emulate NMI Interrupt (W only) -// bit30: E_IRQ Emulate IRQ Interrupt (W only) -// bit29: E_CER Emulate CPU Address Error (W only) -// bit28: E_DER Emulate DMA Address Error (W only) -// bit27: E_MRS Emulate Manual Reset (W only) -// bit26: reserved -// bit25: TMRON INTTMR OFF/ON (0:OFF, 1:ON) -// bit24: BRKON Address Break(NMI) OFF/ON (0:OFF, 1:ON) -// bit23: ILVL3 IRQ ILevel 3 -// bit22: ILVL2 IRQ ILevel 2 -// bit21: ILVL1 IRQ ILevel 1 -// bit20: ILVL0 IRQ ILevel 0 -// bit19: IVEC7 IRQ Vector 7 -// bit18: IVEC6 IRQ Vector 6 -// bit17: IVEC5 IRQ Vector 5 -// bit16: IVEC4 IRQ Vector 4 -// bit15: IVEC3 IRQ Vector 3 -// bit14: IVEC2 IRQ Vector 2 -// bit13: IVEC1 IRQ Vector 1 -// bit12: IVEC0 IRQ Vector 0 -// bit11: TMR11 (12 bit interval timer to generate IRQ) -// ... -// bit 0: TMR00 (12 bit interval timer to generate IRQ) -// -// ABCD0204 : BRKADR Break Address (16bit R/W only) -// 15 14 13 12 11 10 9 8 -// ----------------------------------------------- -// |ADR15|ADR14|ADR13|ADR12|ADR11|ADR10|ADR09|ADR08| -// ----------------------------------------------- -// 7 6 5 4 3 2 1 0 -// ----------------------------------------------- -// |ADR07|ADR06|ADR05|ADR04|ADR03|ADR02|ADR01|ADR00| -// ----------------------------------------------- -// bit15: ADR15 Break Address15 -// ... -// bit00: ADR00 Break Address00 -// - -#include "common.h" - -//================= -// Define Functions -//================= -void utility(void); -unsigned char command(unsigned long *data); -unsigned long get_sformat(void); -unsigned char get_byte_rx_echo(void); -unsigned char hex2asc(unsigned char hex); -unsigned char asc2hex(unsigned char asc); - -void waitNms(unsigned char n); -unsigned char key_scan(); -unsigned char key_wait_on(void); -void key_wait_off(void); - -void uart_tx(unsigned char data); -unsigned char uart_rx(void); -unsigned char uart_rx_echo(void); -void uart_rx_flush(void); -void uart_set_baudrate(void); - -void lcd_disp_long(unsigned long data); -void lcd_cursor(unsigned char con); -void lcd_erase(unsigned char pos); -void lcd_message(unsigned char pos, unsigned char *pstr); -void lcd_disp(unsigned char chr); -void lcd_pos(unsigned char pos); -void lcd_ready(void); -unsigned char lcd_rd(int); -void lcd_wr(int, unsigned char); -void lcd_init(void); - -//============ -// IRQ Handler -//============ -void irq_handler(void) -{ - unsigned char mes_irq[] = "IRQ: Push to RTE"; - - lcd_message(16, mes_irq); - key_wait_off(); - key_wait_on(); - key_wait_off(); -} - -//============ -// NMI Handler -//============ -void nmi_handler(void) -{ - unsigned char mes_nmi[] = "NMI/BRK:Goto Mon"; - - SYS.INTCTL = SYS.INTCTL & 0xfeffffff; // BRK off - - lcd_message(16, mes_nmi); - key_wait_off(); - key_wait_on(); - key_wait_off(); -} - -//============= -// TRAP Handler -//============= -void trap_handler(void) -{ - unsigned char mes_trap[] = "TRAP:Push to RTE"; - - lcd_message(16, mes_trap); - key_wait_off(); - key_wait_on(); - key_wait_off(); -} - -//==================== -// Illegal Instruction -//==================== -void illegal(void) -{ - unsigned char mes_ilgl[] = "Illegal:Goto Mon"; - - lcd_message(16, mes_ilgl); - key_wait_off(); - key_wait_on(); - key_wait_off(); -} - -//============== -// Address Error -//============== -void error(void) -{ - unsigned char mes_error[]= "AdrsErr:Goto Mon"; - - lcd_message(16, mes_error); - key_wait_off(); - key_wait_on(); - key_wait_off(); -} - -//============= -// Main Routine -//============= -void main_sh(void) -{ - unsigned char mes_welcome[] = "SH-2 Monitor v.1"; - unsigned char mes_copyright[] = "(C) 2003 T.Aitch"; - unsigned char mes_memory[] = "Memory--"; - unsigned char mes_run[] = "Run---Good Luck!"; - - unsigned char key; - unsigned long adrs; - unsigned long data; - unsigned long data_edit; - - void (* userfunc)(void); - long i; - - //----------- - // Initialize - //----------- - lcd_init(); - uart_set_baudrate(); - uart_rx_flush(); - key_wait_off(); - - //---------------- - // Welcome Message - //---------------- - lcd_message( 0, mes_welcome); - lcd_message(16, mes_copyright); - for (i = 0 ; i < 2000000 ; i++); - - //---------- - // Clear LCD - //---------- - key_wait_off(); - lcd_erase(0); - lcd_erase(16); - - //---------------- - // Main Event Loop - //---------------- - adrs = 0x00000000; - - while(1) - { - adrs = adrs & 0xfffffffc; - data = * (unsigned long *) adrs; - lcd_pos(0); - lcd_disp_long(adrs); - lcd_disp_long(data); - - lcd_message(16, mes_memory); - - data_edit = data; - key = command(&data_edit); - - switch(key) - { - case KEYUTL: utility(); - break; - case KEYRUN: lcd_message(16, mes_run); - key_wait_off(); - adrs = adrs & 0xfffffffe; - userfunc = (void (*)) adrs; - (* userfunc)(); - break; - case KEYGET: adrs = get_sformat(); - break; - case KEYPUT: break; - case KEYADR: adrs = data_edit; - break; - case KEYINC: adrs = adrs + 4; - break; - case KEYDEC: adrs = adrs - 4; - break; - case KEYDAT: * (unsigned long *) adrs = data_edit; - adrs = adrs + 4; - break; - default: break; - } - } -} - -//**************************************************** -//* * -//* Service Utilities * -//* * -//**************************************************** - -//==================== -// "Utility" Functions -//-------------------- -// Input : none -// Output : none -//==================== -void utility(void) -{ - unsigned char mes_util[] = "BRK-Func Select?"; - unsigned char mes_menu[] = "1:REG 2:BRK SET"; - unsigned char mes_break[] = "Set Break Point."; - unsigned char mes_adrs[] = "Address?"; - unsigned char mes_brkok[] = "Break Accepted. "; - unsigned char mes_brkng[] = "Break Canceled. "; - unsigned char mes_SR[] = "SR :"; - unsigned char mes_PC[] = "PC :"; - unsigned char mes_SP[] = "SP(R15):"; - unsigned char mes_PR[] = "PR :"; - unsigned char mes_R0[] = "R0 :"; - unsigned char mes_R1[] = "R1 :"; - unsigned char mes_R2[] = "R2 :"; - unsigned char mes_R3[] = "R3 :"; - unsigned char mes_R4[] = "R4 :"; - unsigned char mes_R5[] = "R5 :"; - unsigned char mes_R6[] = "R6 :"; - unsigned char mes_R7[] = "R7 :"; - unsigned char mes_R8[] = "R8 :"; - unsigned char mes_R9[] = "R9 :"; - unsigned char mes_R10[] = "R10 :"; - unsigned char mes_R11[] = "R11 :"; - unsigned char mes_R12[] = "R12 :"; - unsigned char mes_R13[] = "R13 :"; - unsigned char mes_R14[] = "R14 :"; - unsigned char mes_R15[] = "R15 :"; - unsigned char mes_MACH[] = "MACH :"; - unsigned char mes_MACL[] = "MACL :"; - unsigned char mes_GBR[] = "GBR :"; - unsigned char mes_VBR[] = "VBR :"; - unsigned char key; - unsigned long adrs; - - lcd_message(0, mes_util); - lcd_message(16, mes_menu); - key_wait_off(); - - key = key_wait_on(); - if (key == KEY1) // Register Watcher - { - key_wait_off(); - lcd_message(0, mes_SR); lcd_disp_long(REG.SR); - lcd_message(16, mes_PC); lcd_disp_long(REG.PC); - key_wait_on(); - key_wait_off(); - lcd_message(0, mes_SP); lcd_disp_long(REG.SP); - lcd_message(16, mes_PR); lcd_disp_long(REG.PR); - key_wait_on(); - key_wait_off(); - lcd_message(0, mes_R0); lcd_disp_long(REG.R0); - lcd_message(16, mes_R1); lcd_disp_long(REG.R1); - key_wait_on(); - key_wait_off(); - lcd_message(0, mes_R2); lcd_disp_long(REG.R2); - lcd_message(16, mes_R3); lcd_disp_long(REG.R3); - key_wait_on(); - key_wait_off(); - lcd_message(0, mes_R4); lcd_disp_long(REG.R4); - lcd_message(16, mes_R5); lcd_disp_long(REG.R5); - key_wait_on(); - key_wait_off(); - lcd_message(0, mes_R6); lcd_disp_long(REG.R6); - lcd_message(16, mes_R7); lcd_disp_long(REG.R7); - key_wait_on(); - key_wait_off(); - lcd_message(0, mes_R8); lcd_disp_long(REG.R8); - lcd_message(16, mes_R9); lcd_disp_long(REG.R9); - key_wait_on(); - key_wait_off(); - lcd_message(0, mes_R10); lcd_disp_long(REG.R10); - lcd_message(16, mes_R11); lcd_disp_long(REG.R11); - key_wait_on(); - key_wait_off(); - lcd_message(0, mes_R12); lcd_disp_long(REG.R12); - lcd_message(16, mes_R13); lcd_disp_long(REG.R13); - key_wait_on(); - key_wait_off(); - lcd_message(0, mes_R14); lcd_disp_long(REG.R14); - lcd_message(16, mes_R15); lcd_disp_long(REG.R15); - key_wait_on(); - key_wait_off(); - lcd_message(0, mes_MACH); lcd_disp_long(REG.MACH); - lcd_message(16, mes_MACL); lcd_disp_long(REG.MACL); - key_wait_on(); - key_wait_off(); - lcd_message(0, mes_GBR); lcd_disp_long(REG.GBR); - lcd_message(16, mes_VBR); lcd_disp_long(REG.VBR); - key_wait_on(); - key_wait_off(); - } - else if (key == KEY2) // Break Setting - { - lcd_message(0, mes_break); - lcd_message(16, mes_adrs); - adrs = SYS.BRKADR; - key = command(&adrs); - if (key == KEYDAT) - { - lcd_message(0, mes_brkok); - key_wait_off(); - SYS.BRKADR = adrs; - SYS.INTCTL = SYS.INTCTL | 0x01000000; // BRK on - } - else - { - lcd_message(0, mes_brkng); - key_wait_off(); - SYS.INTCTL = SYS.INTCTL & 0xfeffffff; // BRK off - } - } -} - -//========================================= -// Command Handler -//----------------------------------------- -// Input : data = display long data -// Output : command = input command -// data = input long data -//========================================= -unsigned char command(unsigned long *data) -{ - unsigned char key; - int i; - - lcd_pos(24); - lcd_disp_long(*data); - - lcd_cursor(1); - i = 0; - - do - { - if (i == 0) lcd_pos(24); - - key_wait_off(); - key = key_wait_on(); - if (key <= KEYF) - { - lcd_disp(hex2asc(key)); - *data = (*data & ~((0x0000000F) << ((7-i) * 4))) | (key << ((7-i) * 4)); - } - - i = (i + 1) % 8; - } while (key <= KEYF); - - lcd_cursor(0); - return(key); -} - -//================================================= -// Get S-Format -//------------------------------------------------- -// Input : none -// Output : get_sformat = address of top-record -//================================================= -unsigned long get_sformat(void) -{ - unsigned char mes_get[] = "Get S-Format(S3)"; - unsigned char mes_send[] = "please send....."; - unsigned char mes_receive[] = "-----OK!"; - unsigned char mes_get_error[] = "ERR:Bad S-Format"; - - int topflag; - int endflag; - unsigned char rc; - unsigned char rxdata; - unsigned long adrs; - unsigned long adrs_record; - unsigned long adrs_top = 0; - int count; - unsigned char checksum; - int error; - int i; - - error = 0; - topflag = 1; - endflag = 0; - - uart_rx_flush(); - lcd_message( 0, mes_get); - lcd_message(16, mes_send); - - while(endflag == 0) - { - // - // Wait 'S' character - // - while (uart_rx_echo() != 'S'); - // - // Check Record Type - // - switch(rc = uart_rx_echo()) - { - case '3': //-------- Record of 4 byte length address - case '7': //-------- End of Record - // - // Get Record Length - // - rxdata = get_byte_rx_echo(); - checksum = rxdata; - count = rxdata - 5; - // - // Get Record Address - // - adrs = 0; - for (i = 0 ; i < 4 ; i++) - { - rxdata = get_byte_rx_echo(); - checksum = checksum + rxdata; - adrs = (adrs << 8) + (unsigned long) rxdata; - } - adrs_record = adrs; - if (topflag) - { - adrs_top = adrs; - topflag = 0; - } - // - // Get Record Data and Save to memory - // - while(count > 0) - { - rxdata = get_byte_rx_echo(); - checksum = checksum + rxdata; - * (unsigned char *) adrs = rxdata; - adrs = adrs + 1; - count = count - 1; - } - // - // Check checksum - // - rxdata = get_byte_rx_echo(); - checksum = (~checksum) & 0x0ff; - error = (checksum != rxdata); - // - // Continue ? or Finish ? - // - if (rc == '3') // S3 format - break; - else // S7 format - { - endflag = 1; - break; - } - // - // ignore another Record - // - default : continue; - } - if (error) - { - lcd_message(16, mes_get_error); - rc = key_wait_on(); - break; - } - else - { - lcd_pos(16); - lcd_disp_long(adrs_record); - lcd_message(24, mes_receive); - } - } - return(adrs_top); -} - -//============================================== -// Get Byte from Rx with echo -//---------------------------------------------- -// Input : none -// Output : get_byte_rx_echo = received byte -//============================================== -unsigned char get_byte_rx_echo(void) -{ - unsigned char hex; - - hex = asc2hex(uart_rx_echo()); - hex = (hex << 4) + asc2hex(uart_rx_echo()); - - return(hex); -} - -//============================= -// Convert Hex(nibble) to Ascii -//----------------------------- -// Input : hex (0x00-0x0F) -// Output : hex2asc -//============================= -unsigned char hex2asc(unsigned char hex) -{ - hex = hex & 0x0f; - if (hex <= 0x09) - return(hex + '0'); - else - return(hex - 0x0a + 'A'); -} - -//============================= -// Convert Ascii to Hex(nibble) -//----------------------------- -// Input : asc(0-9, A-F) -// Output : asc2hex -//============================= -unsigned char asc2hex(unsigned char asc) -{ - if (asc <= '9') - return((asc - '0') & 0x0f); - else - return((asc - 'A' + 0x0a) & 0x0f); -} - -//**************************************************** -//* * -//* Key Utilities * -//* * -//**************************************************** - -//=================================== -// Wait until Key On -//----------------------------------- -// Input : none -// Output : key = pushed key code -//=================================== -unsigned char key_wait_on(void) -{ - unsigned char key; - - while((key = key_scan()) == KEYNONE) waitNms(8); - - return(key); -} - -//=================== -// Wait until Key Off -//------------------- -// Input : none -// Output : none -//=================== -void key_wait_off(void) -{ - while(key_scan() != KEYNONE) waitNms(8); -} - -//=================================== -// Key Scan -//----------------------------------- -// Input : none -// Output : key = pushed key code -//=================================== -unsigned char key_scan() -{ - unsigned char keyx4; - unsigned char keyx3; - unsigned char keyx2; - unsigned char keyx1; - unsigned char keyx0; - - PORTO.KEYYO.BYTE = 0xef; // KEYY4 - waitNms(1); - keyx4 = PORTI.KEYXI.BYTE & 0x1f; - - PORTO.KEYYO.BYTE = 0xf7; // KEYY3 - waitNms(1); - keyx3 = PORTI.KEYXI.BYTE & 0x1f; - - PORTO.KEYYO.BYTE = 0xfb; // KEYY2 - waitNms(1); - keyx2 = PORTI.KEYXI.BYTE & 0x1f; - - PORTO.KEYYO.BYTE = 0xfd; // KEYY1 - waitNms(1); - keyx1 = PORTI.KEYXI.BYTE & 0x1f; - - PORTO.KEYYO.BYTE = 0xfe; // KEYY0 - waitNms(1); - keyx0 = PORTI.KEYXI.BYTE & 0x1f; - - switch(keyx4) - { - case 0x17 : return(KEYPUT); - case 0x1b : return(KEYGET); - case 0x1d : return(KEYRUN); - case 0x1e : return(KEYUTL); - } - switch(keyx3) - { - case 0x0f : return(KEYADR); - case 0x17 : return(KEYF); - case 0x1b : return(KEYE); - case 0x1d : return(KEYD); - case 0x1e : return(KEYC); - } - switch(keyx2) - { - case 0x0f : return(KEYINC); - case 0x17 : return(KEYB); - case 0x1b : return(KEYA); - case 0x1d : return(KEY9); - case 0x1e : return(KEY8); - } - switch(keyx1) - { - case 0x0f : return(KEYDEC); - case 0x17 : return(KEY7); - case 0x1b : return(KEY6); - case 0x1d : return(KEY5); - case 0x1e : return(KEY4); - } - switch(keyx0) - { - case 0x0f : return(KEYDAT); - case 0x17 : return(KEY3); - case 0x1b : return(KEY2); - case 0x1d : return(KEY1); - case 0x1e : return(KEY0); - } - return(KEYNONE); -} - -//================== -// Wait n ms -//------------------ -// Input : n ms -// Output : none -//================== -void waitNms(unsigned char n) -{ - int i, j; - unsigned char dummy; - - for (i = 0 ; i < n ; i++) - { - // 1ms = 20000 * 50ns (20MHz) - for (j = 0 ; i <= 10000 ; i++) dummy = PORTI.RESERVED_0; - } -} - -//**************************************************** -//* * -//* UART Utilities * -//* * -//**************************************************** - -//============================== -// Send Tx -// ----------------------------- -// Input : data = send data -// Output : none -//============================== -void uart_tx(unsigned char data) -{ - while(UART.UARTCON.BIT.TXF); - UART.BYTE.TX = data; -} - -//==================================== -// Receive RX -// ----------------------------------- -// Input : none -// Output : uart_rx = receive data -//==================================== -unsigned char uart_rx(void) -{ - while(UART.UARTCON.BIT.RXE); - return(UART.BYTE.RX); -} - -//========================================= -// Receive RX with echo to TX -// ---------------------------------------- -// Input : none -// Output : uart_rx_echo = receive data -//========================================= -unsigned char uart_rx_echo(void) -{ - unsigned char data; - - while(UART.UARTCON.BIT.RXE); - data = UART.BYTE.RX; - - while(UART.UARTCON.BIT.TXF); - UART.BYTE.TX = data; - - return(data); -} - -//================== -// Flush RXD FIFO -//------------------ -// Input : none -// Output : none -//================== -void uart_rx_flush(void) -{ - unsigned char dummy; - - while(UART.UARTCON.BIT.RXE == 0) dummy = UART.BYTE.RX; -} - -//============================== -// Set Baud Rate 9600bps -//------------------------------ -// 9600*4=38.4KHz -// 20MHz/38.4KHz=520.8=20*26 -// (BRG0 + 2) = 20, BRG0=18 =0x12 -// (BRG1 + 1) = 26, BRG1=25 =0x19 -// -// 4800*4=19.2KHz -// 20MHz/19.2KHz=1041.7=20*52 -// (BRG0 + 2) = 20, BRG0=18 =0x12 -// (BRG1 + 1) = 52, BRG1=51 =0x33 -// -// 2400*4=9.6KHz -// 20MHz/9.6KHz=2083.3=20*104 -// (BRG0 + 2) = 20, BRG0=18 =0x12 -// (BRG1 + 1) =104, BRG1=103=0x67 -// -// 1200*4=4.8KHz -// 20MHz/4.8KHz=4166.7=20*208 -// (BRG0 + 2) = 20, BRG0=18 =0x12 -// (BRG1 + 1) =208, BRG1=207=0xcf -// -// Input : none -// Output : none -//============================== -void uart_set_baudrate(void) -{ - int i; - unsigned char dummy; - - UART.UARTBG0 = 18; - UART.UARTBG1 = 207; - - for (i = 0; i < 65536; i++) dummy = PORTI.RESERVED_0; -} - -//**************************************************** -//* * -//* LCD Utilities * -//* * -//**************************************************** - -//====================================== -// LCD Display Long Hex data (8 digit) -//-------------------------------------- -// Input : data = display long data -// Output : none -//====================================== -void lcd_disp_long(unsigned long data) -{ - int i; - unsigned char digit; - - for (i = 7 ; i >= 0 ; i--) - { - digit = (unsigned char) (data / (1 << i * 4)) % 0x10; - lcd_disp(hex2asc(digit)); - } -} - -//================================ -// Cursor On/Off -//-------------------------------- -// Input : cur = off(0)/on(1) -// Output : none -//================================ -void lcd_cursor(unsigned char con) -{ - lcd_ready(); - if (con) - lcd_wr(INST, 0x0d); - else - lcd_wr(INST, 0x0c); -} - - -//=============================== -// Erase 1 line from the position -//------------------------------- -// Input : pos = position -// 1st line = 00-15 -// 2nd line = 16-31 -// Ouput : none -//=============================== -void lcd_erase(unsigned char pos) -{ - int i; - - lcd_pos(pos); - for (i = 0; i < 16; i++) lcd_disp(' '); -} - -//======================================== -// Print a Message from Current Position -//---------------------------------------- -// Input : pstr = message top address -// Outpur : none -//======================================== -void lcd_message(unsigned char pos, unsigned char *pstr) -{ - unsigned char *pmessage; - - lcd_pos(pos); - pmessage = pstr; - while (*pmessage) lcd_disp(*pmessage++); -} - -//========================================== -// Display One Character on Current Position -//------------------------------------------ -// Input : chr = display charcter -// Output : none -//========================================== -void lcd_disp(unsigned char chr) -{ - lcd_ready(); - lcd_wr(DATA, chr); -} - -//================================ -// Set LCD Display Position -//-------------------------------- -// Input : pos = position -// 1st line = 00-15 -// 2nd line = 16-31 -// Ouput : none -//================================ -void lcd_pos(unsigned char pos) -{ - unsigned char phypos; - - phypos = pos % 32; - if (phypos >= 16) - phypos = (phypos - 16) + 64; - phypos = phypos | 0x80; - - lcd_ready(); - lcd_wr(INST, phypos); -} - -//===================== -// Wait until LCD ready -//--------------------- -// Input : none -// Output : none -//===================== -void lcd_ready(void) -{ - while ((lcd_rd(INST) & 0x80) == 0x80); -} - -//================================= -// LCD Read -//--------------------------------- -// Input : rs (0=Instr,1=Data) -// Output : lcd_rd (Read Data) -//================================= -unsigned char lcd_rd(int rs) -{ - int i; - unsigned char dummy; - unsigned char data; - - PORTO.LCDCON.BYTE = 0x02 | (rs & 0x01); - - // wait 60ns = 2cyc@20MHz - dummy = PORTI.RESERVED_0; - dummy = PORTI.RESERVED_0; - - - PORTO.LCDCON.BYTE = 0x06 | (rs & 0x01); - - // wait 500ns = 10cyc@20MHz - for (i = 0 ; i <= 10 ; i++) dummy = PORTI.RESERVED_0; - - data = PORTI.LCDIN; - - PORTO.LCDCON.BYTE = 0x02 | (rs & 0x01); - - // wait 500ns = 10cyc@20MHz - for (i = 0 ; i <= 10 ; i++) dummy = PORTI.RESERVED_0; - - return(data); -} - -//================================= -// LCD Write -//--------------------------------- -// Input : rs (0=Instr,1=Data) -// wd (Write Data) -// Output : none -//================================= -void lcd_wr(int rs, unsigned char wd) -{ - int i; - unsigned char dummy; - - PORTO.LCDOUT = wd; - - PORTO.LCDCON.BYTE = 0x00 | (rs & 0x01); - - // wait 60ns = 2cyc@20MHz - dummy = PORTI.RESERVED_0; - dummy = PORTI.RESERVED_0; - - PORTO.LCDCON.BYTE = 0x04 | (rs & 0x01); - - // wait 500ns = 10cyc@20MHz - for (i = 0 ; i <= 10 ; i++) dummy = PORTI.RESERVED_0; - - PORTO.LCDCON.BYTE = 0x00 | (rs & 0x01); - - // wait 500ns = 10cyc@20MHz - for (i = 0 ; i <= 10 ; i++) dummy = PORTI.RESERVED_0; -} - -//================== -// LCD Initialize -//------------------ -// Input : none -// Output : none -//================== -void lcd_init(void) -{ - int i; - unsigned char dummy; - - lcd_wr(INST, 0x30); - - // wait 4100us=82000cyc@20MHz - for (i = 0 ; i < 82000 ; i++) dummy = PORTI.RESERVED_0; - - lcd_wr(INST, 0x30); - - // wait 100us=2000cyc@20MHz - for (i = 0 ; i < 2000 ; i++) dummy = PORTI.RESERVED_0; - - lcd_wr(INST, 0x30); - - // set function (8bit, 2lines) - lcd_ready(); - lcd_wr(INST, 0x38); - - // display (disp on, cursor off, blink off) - lcd_ready(); - lcd_wr(INST, 0x0c); - - // clear - lcd_ready(); - lcd_wr(INST, 0x01); - - // entry mode (increment, no-shift) - lcd_ready(); - lcd_wr(INST, 0x06); -} - -//=============== -// End of Program -//=============== Index: main.elf =================================================================== --- main.elf (revision 12) +++ main.elf (nonexistent) @@ -1,27 +0,0 @@ -ELF*44 (   @@ . ....8....................@ ѿ`@+_п@ //ѿP!qP!q`p!q*!qP!qP!q!"q!2q!Bq!Rq!bq!rq!q!q!q!q!q!q!q`p!q -!q!q!q"!О@ OO#OOO"////////v/f/V/F/6/&//В@ `abcdefghijklmnO&OOO'O+ OO#OOO"////////v/f/V/F/6/&//}@ `abcdefghijklmnO&OOO'O+ H.HH 8@/ -/O" nA d -A e H A H ~oO&n h j//O"nA d -a2!)# -A e H A H ~oO&n h  j/ -/O" nA d -A e H A H ~oO&n h j/ -/O" nA d -A e H A H ~oO&n h j/ -/O" nA d -A e H A H ~oO&n h j/E/E/////O"fnH djz>dH faq(L; H dm}49dH f8A 8A 7A 7L 6H eH e3r2rL 1H H *.iA -H dH d'LK aqH!h'A dbr22,-# 0:F>BA K eL *J A jjza*z (d  lL , -/Մ/؄/////O"f?8nH dk{~dH faq({dfH `p>:f2&H d#887f1H d24f20 H d**0f2&^d#| $0<HT`<Pdx $0<HT`lxH ~f1H dޒ{f20H dאxf2&H d#vJ eJ esK sL  K J ldI J TI L K J TI J eTI L K J TI J TI L K J TI |J TI L K {J TI uJ TI L K kJ TI eJ TI L K [J TI UJ TI L K KJ TI EJ TI x@L K ;J TI 5J TI L K +J TI %J TI L K (lx jLJ TI TJ TI L K JJ TI DJ TI L K + )6J 4J 0Q`b2A d# %J K `a!+J K a!))>|oO&nmlkji h /,//////lCO"A n'A d&C -؋!A #A "A k;6bA dA diyIJ eahdeJ (( ,brBa#aqA!#32A&J -Z $H  >  -%>, 7.C N.V.^8ciou{(&$,<048 ) 3=GQ[ e$o(y,048<@DHLPTX\  '@66@hHQ[_vgnVw$F0vHbd|(d|l<  N! , 34<T0E`R8^j.k\t|, ,   @L4L0P@L!* -t7 >LE JhU_8Lh vLX%> ,@, 4./startup/crt0.S_vector_top_start_stack_gnrl_ilgl_unexpected_slot_ilgl_cpuerr_dmaerr_nmi_trap_irq0_irq1_irq2_irq3_irq4_irq5_irq6_irq7_pillegal_restart_pvector_top_perror_pbreak_reg_top_pnmi_handler_pirq_handler_ptrap_handler_break_reg_top_break_sr_break_pc_break_sp_break_pr_break_r0_break_r1_break_r2_break_r3_break_r4_break_r5_break_r6_break_r7_break_r8_break_r9_break_r10_break_r11_break_r12_break_r13_break_r14_break_r15_break_mach_break_macl_break_gbr_break_vbr_pmain_sh_endless*ABS*main.cgcc2_compiled.libgcc1.SlongwayshortwayvshortwayretL_smallL_evenL_odddstL_al4dstL_al4bothL_2l_loopL_cleanupL_al4both_loopL_al4srcL_odd_loopL_readyL_cleanup_loop_uart_rx_flush___ashlsi3_lcd_init_lcd_pos_etext__idata_end_asc2hex_bss_start_sdata_hex2asc_waitNms_nmi_handler_lcd_cursor_key_wait_on_main_sh_memcpy_utility_uart_set_baudrate_command_lcd_ready_uart_rx___dtors_irq_handler_uart_rx_echo_lcd_wr_lcd_erase_lcd_rd_get_byte_rx_echo_trap_handler___ctors_end___ctors_get_sformat_edata_error_end___udivsi3_key_scan_illegal__idata_start_lcd_disp_long_uart_tx_key_wait_off___dtors_end_lcd_disp_lcd_message \ No newline at end of file Index: Makefile =================================================================== --- Makefile (revision 12) +++ Makefile (nonexistent) @@ -1,76 +0,0 @@ -#======================================== -# SuperH (SH-2) C Compiler Makefile -#---------------------------------------- -# Rev.1 March 21, 2003 by Thorn Aitch -#======================================== - -#------------- -# Command Path -#------------- -CMD_PATH = /usr/local/bin -CC = $(CMD_PATH)/sh-elf-gcc -OBJCOPY = $(CMD_PATH)/sh-elf-objcopy -SIZE = $(CMD_PATH)/sh-elf-size - -#------------- -# Output Files -#------------- -TARGET = main.srec -TARGET_ELF = main.elf -MAP_FILE = $(TARGET_ELF:.elf=.map) - -OUTPUT_FORMAT = srec --srec-forceS3 - -#------------------------- -# Compile and Link Options -#------------------------- -INCLUDES = -I./include -#CFLAGS = -m2 -g -Os $(INCLUDES) -Wall -CFLAGS = -m2 -Os $(INCLUDES) -Wall - -LDSCRIPT = startup/sh.x - -LDFLAGS = -m2 -T $(LDSCRIPT) -O3 -nostartfiles -Wl,-Map,$(MAP_FILE) - -#------------ -# Input Files -#------------ -STARTUP = crt0.S -LIBS = -SRCS = main.c -OBJS = $(STARTUP:.S=.o) $(LIBS:.c=.o) $(SRCS:.c=.o) - -#--------------- -# Make Operation -#--------------- -$(TARGET) : $(TARGET_ELF) - $(OBJCOPY) -v -O $(OUTPUT_FORMAT) $(TARGET_ELF) $(TARGET) - -$(TARGET_ELF) : $(OBJS) - $(CC) $(LDFLAGS) $(OBJS) -o $(TARGET_ELF) - $(SIZE) -Ax $(TARGET_ELF) - -$(OBJS) : Makefile - -clean : - rm -f *.o $(TARGET) $(TARGET_ELF) $(MAP_FILE) - -%.o : %.c - $(CC) -c $(CFLAGS) $< - -%.o : %.S - $(CC) -c $(CFLAGS) $< - -%.o : %.s - $(CC) -c $(CFLAGS) $< - -#------------------- -# Header and Startup -#------------------- -vpath %.h ./include -vpath %.S ./startup - -#------------------ -# Source and Object -#------------------ -main.o : main.c Index: common.h =================================================================== --- common.h (revision 12) +++ common.h (nonexistent) @@ -1,159 +0,0 @@ -//=============================== -// C Source Header -//------------------------------- -// for VirtexE Evaluation Board -// Apr.19 2003 Ver.1 -//=============================== - -//-------------------------- -// Peripheral I/O definition -//-------------------------- -struct st_porto -{ - unsigned char RESERVED_0; - union - { - unsigned char BYTE; - struct - { - unsigned char :3; - unsigned char KY4:1; - unsigned char KY3:1; - unsigned char KY2:1; - unsigned char KY1:1; - unsigned char KY0:1; - } BIT; - } KEYYO; - union - { - unsigned char BYTE; - struct - { - unsigned char :5; - unsigned char E :1; - unsigned char RW:1; - unsigned char RS:1; - } BIT; - } LCDCON; - unsigned char LCDOUT; -}; - -struct st_porti -{ - unsigned char RESERVED_0; - union - { - unsigned char BYTE; - struct - { - unsigned char :3; - unsigned char KX4:1; - unsigned char KX3:1; - unsigned char KX2:1; - unsigned char KX1:1; - unsigned char KX0:1; - } BIT; - } KEYXI; - unsigned char RESERVED_2; - unsigned char LCDIN; -}; - -struct st_uart -{ - unsigned char UARTBG0; - unsigned char UARTBG1; - union - { - unsigned char BYTE; - struct - { - unsigned char :6; - unsigned char TXF:1; - unsigned char RXE:1; - } BIT; - } UARTCON; - union - { - unsigned char TX; - unsigned char RX; - } BYTE; -}; - -struct st_sys -{ - unsigned long INTCTL; - unsigned long BRKADR; -}; - -struct st_reg -{ - unsigned long SR; - unsigned long PC; - unsigned long SP; - unsigned long PR; - unsigned long R0; - unsigned long R1; - unsigned long R2; - unsigned long R3; - unsigned long R4; - unsigned long R5; - unsigned long R6; - unsigned long R7; - unsigned long R8; - unsigned long R9; - unsigned long R10; - unsigned long R11; - unsigned long R12; - unsigned long R13; - unsigned long R14; - unsigned long R15; - unsigned long MACH; - unsigned long MACL; - unsigned long GBR; - unsigned long VBR; -}; - -#define PORTO (*(volatile struct st_porto *)0xabcd0000) -#define PORTI (*(volatile struct st_porti *)0xabcd0000) -#define UART (*(volatile struct st_uart *)0xabcd0100) -#define SYS (*(volatile struct st_sys *)0xabcd0200) -#define REG (*(volatile struct st_reg *)0x00000300) - -//----------- -// LCD Access -//----------- -#define INST 0 -#define DATA 1 - -//--------- -// Key Code -//--------- -#define KEY0 0 -#define KEY1 1 -#define KEY2 2 -#define KEY3 3 -#define KEY4 4 -#define KEY5 5 -#define KEY6 6 -#define KEY7 7 -#define KEY8 8 -#define KEY9 9 -#define KEYA 10 -#define KEYB 11 -#define KEYC 12 -#define KEYD 13 -#define KEYE 14 -#define KEYF 15 -#define KEYUTL 16 -#define KEYRUN 17 -#define KEYGET 18 -#define KEYPUT 19 -#define KEYADR 20 -#define KEYINC 21 -#define KEYDEC 22 -#define KEYDAT 23 -#define KEYNONE 255 - - - -

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.