- choose debugger for app (rom, mips or gdb)
- removed dcache_iv_at workaround - constify - testbench denano enable LEDs git-svn-id: http://moon:8086/svn/mips@126 a8ebac50-d88d-4704-bea3-6648445a41b3
This commit is contained in:
+17
-3
@@ -5,6 +5,7 @@
|
|||||||
BOARD ?= ml402
|
BOARD ?= ml402
|
||||||
TLB ?= no
|
TLB ?= no
|
||||||
ENDIANESS ?= eb
|
ENDIANESS ?= eb
|
||||||
|
DEBUGGER ?= mips
|
||||||
|
|
||||||
|
|
||||||
ifeq ($(ENDIANESS),el)
|
ifeq ($(ENDIANESS),el)
|
||||||
@@ -13,7 +14,20 @@ else
|
|||||||
ENDIAN_FLAGS=-EB
|
ENDIAN_FLAGS=-EB
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CFLAGS=$(ENDIAN_FLAGS) -g -msoft-float -O2 -march=r3000 -I. -Iboards/$(BOARD) -D$(BOARD) -DWITH_ROM_GDBSTUB
|
ifeq ($(DEBUGGER),gdb)
|
||||||
|
DBG_FLAGS := -DWITH_GDB_STUB
|
||||||
|
DBG_OBJ := gdb_stub.o
|
||||||
|
endif
|
||||||
|
ifeq ($(DEBUGGER),mips)
|
||||||
|
DBG_FLAGS :=
|
||||||
|
DBG_OBJ := mips_dbg.o mips_dis.o
|
||||||
|
endif
|
||||||
|
ifeq ($(DEBUGGER),rom)
|
||||||
|
DBG_FLAGS := -DWITH_ROM_DEBUGGER
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
CFLAGS=$(ENDIAN_FLAGS) -g -msoft-float -O2 -march=r3000 -I. -Iboards/$(BOARD) -D$(BOARD) $(DBG_FLAGS)
|
||||||
|
|
||||||
ifeq ($(TLB),yes)
|
ifeq ($(TLB),yes)
|
||||||
CFLAGS+=-DSYS_IO_BASE=0xAC000000 -DSDRAM_BASE=0x80000000 -DFLASH_BASE_IO=0xA4000000 -DFLASH_BASE_MEM=0x88000000
|
CFLAGS+=-DSYS_IO_BASE=0xAC000000 -DSDRAM_BASE=0x80000000 -DFLASH_BASE_IO=0xA4000000 -DFLASH_BASE_MEM=0x88000000
|
||||||
@@ -31,8 +45,8 @@ OBJDUMP=mips-elf-objdump
|
|||||||
OBJCOPY=mips-elf-objcopy
|
OBJCOPY=mips-elf-objcopy
|
||||||
FLASHGEN=flashgen
|
FLASHGEN=flashgen
|
||||||
|
|
||||||
OBJS-ml402=$(addprefix $(BUILD_DIR)/, libsys.o xcpt.o syscalls.o cop0.o irq.o mips_dbg.o mips_dis.o mips_ps2.o mips_gfx.o console.o screen.o uart.o board.o gpio.o gdb_stub.o)
|
OBJS-ml402=$(addprefix $(BUILD_DIR)/, libsys.o xcpt.o syscalls.o cop0.o irq.o $(DBG_OBJ) console.o uart.o board.o gpio.o mips_ps2.o mips_gfx.o screen.o)
|
||||||
OBJS-denano=$(addprefix $(BUILD_DIR)/, libsys.o xcpt.o syscalls.o cop0.o irq.o mips_dbg.o mips_dis.o console.o uart.o board.o gpio.o gdb_stub.o)
|
OBJS-denano=$(addprefix $(BUILD_DIR)/, libsys.o xcpt.o syscalls.o cop0.o irq.o $(DBG_OBJ) console.o uart.o board.o gpio.o)
|
||||||
|
|
||||||
all: $(BUILD_DIR) $(BUILD_DIR)/libsys.a
|
all: $(BUILD_DIR) $(BUILD_DIR)/libsys.a
|
||||||
|
|
||||||
|
|||||||
@@ -12,17 +12,29 @@
|
|||||||
#include "../../regdef.h"
|
#include "../../regdef.h"
|
||||||
|
|
||||||
extern uart_if_t uart_if[];
|
extern uart_if_t uart_if[];
|
||||||
extern void handle_exception (unsigned long *registers);
|
|
||||||
|
|
||||||
int gdb_stub(struct xcptcontext * xcp)
|
#ifdef WITH_GDB_STUB
|
||||||
|
extern void handle_exception (unsigned long *registers);
|
||||||
|
#else
|
||||||
|
extern int dbg_handler(struct xcptcontext * xcp);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int dbg_stub(struct xcptcontext * xcp) __attribute__ ((section (".dbg_stub"))) __attribute__ ((used));
|
||||||
|
int dbg_stub(struct xcptcontext * xcp)
|
||||||
{
|
{
|
||||||
|
#ifdef WITH_GDB_STUB
|
||||||
handle_exception((unsigned long *)xcp);
|
handle_exception((unsigned long *)xcp);
|
||||||
return 0;
|
return 0;
|
||||||
|
#else
|
||||||
|
return dbg_handler(xcp);
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
#ifdef WITH_ROM_GDBSTUB
|
|
||||||
|
#ifdef WITH_ROM_DEBUGGER
|
||||||
const fp_xcpt_t dbg_func = (fp_xcpt_t)0xbfc01fc0;
|
const fp_xcpt_t dbg_func = (fp_xcpt_t)0xbfc01fc0;
|
||||||
#else
|
#else
|
||||||
const fp_xcpt_t dbg_func = (fp_xcpt_t)gdb_stub;
|
const fp_xcpt_t dbg_func = (fp_xcpt_t)dbg_stub;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0]))
|
#define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0]))
|
||||||
|
|||||||
@@ -144,7 +144,6 @@ void DCACHE_invalidate_at(uint32_t* pPtr)
|
|||||||
(
|
(
|
||||||
"mtc0 %[pPtr], $31\n"
|
"mtc0 %[pPtr], $31\n"
|
||||||
"cop0 35\n"
|
"cop0 35\n"
|
||||||
"nop" // fix needed: don't work without nop on de-nano
|
|
||||||
:
|
:
|
||||||
: [pPtr] "r" (pPtr)
|
: [pPtr] "r" (pPtr)
|
||||||
);
|
);
|
||||||
|
|||||||
+4
-4
@@ -100,7 +100,7 @@ void cg_writechar(void const *pInst, char c)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cg_set_csr_x(vga_if_t *pIF, uint32_t coord)
|
void cg_set_csr_x(vga_if_t const *pIF, uint32_t coord)
|
||||||
{
|
{
|
||||||
assert (pIF);
|
assert (pIF);
|
||||||
|
|
||||||
@@ -109,7 +109,7 @@ void cg_set_csr_x(vga_if_t *pIF, uint32_t coord)
|
|||||||
*pIF->pCSRX = coord;
|
*pIF->pCSRX = coord;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cg_set_csr_y(vga_if_t *pIF, uint32_t coord)
|
void cg_set_csr_y(vga_if_t const *pIF, uint32_t coord)
|
||||||
{
|
{
|
||||||
assert (pIF);
|
assert (pIF);
|
||||||
|
|
||||||
@@ -118,7 +118,7 @@ void cg_set_csr_y(vga_if_t *pIF, uint32_t coord)
|
|||||||
*pIF->pCSRY = coord;
|
*pIF->pCSRY = coord;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cg_clr_line(vga_if_t *pIF)
|
void cg_clr_line(vga_if_t const *pIF)
|
||||||
{
|
{
|
||||||
assert (pIF);
|
assert (pIF);
|
||||||
|
|
||||||
@@ -126,7 +126,7 @@ void cg_clr_line(vga_if_t *pIF)
|
|||||||
*pIF->pCTRL |= SYS_VGA_BIT_CLRLINE;
|
*pIF->pCTRL |= SYS_VGA_BIT_CLRLINE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cg_clr_screen(vga_if_t *pIF)
|
void cg_clr_screen(vga_if_t const *pIF)
|
||||||
{
|
{
|
||||||
assert (pIF);
|
assert (pIF);
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -26,10 +26,10 @@ typedef struct _svga_if_t
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void cg_set_csr_x(vga_if_t *pIF, uint32_t coord);
|
void cg_set_csr_x(vga_if_t const *pIF, uint32_t coord);
|
||||||
void cg_set_csr_y(vga_if_t *pIF, uint32_t coord);
|
void cg_set_csr_y(vga_if_t const *pIF, uint32_t coord);
|
||||||
void cg_clr_line(vga_if_t *pIF);
|
void cg_clr_line(vga_if_t const *pIF);
|
||||||
void cg_clr_screen(vga_if_t *pIF);
|
void cg_clr_screen(vga_if_t const *pIF);
|
||||||
|
|
||||||
uint32_t Screen_get_resx(void);
|
uint32_t Screen_get_resx(void);
|
||||||
uint32_t Screen_get_resy(void);
|
uint32_t Screen_get_resy(void);
|
||||||
|
|||||||
@@ -833,6 +833,7 @@ int main (void)
|
|||||||
|
|
||||||
g_cnt = 1;
|
g_cnt = 1;
|
||||||
gpio_init(&gpio_if, SYS_GPIO_0_BASE);
|
gpio_init(&gpio_if, SYS_GPIO_0_BASE);
|
||||||
|
gpio_write(&gpio_if, GPIO_0_MASK_LED, GPIO_0_ALIGN_LED, GPIO_DIR_OFFSET, GPIO_0_MASK_LED);
|
||||||
|
|
||||||
*pTim0_cnt = 0;
|
*pTim0_cnt = 0;
|
||||||
*pTim1_cnt = 0;
|
*pTim1_cnt = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user