modified project to support Qt Creator inferior debugging through BDM.

This commit is contained in:
Markus Fröschle
2014-05-11 06:40:48 +00:00
parent c628705dd3
commit f73b3e9684
7 changed files with 393 additions and 381 deletions

View File

@@ -1,5 +1,6 @@
#set disassemble-next-line on #set disassemble-next-line on
define tr define tr
!killall m68k-bdm-gdbserver
target remote | m68k-bdm-gdbserver pipe /dev/bdmcf3 target remote | m68k-bdm-gdbserver pipe /dev/bdmcf3
#target remote | m68k-bdm-gdbserver pipe /dev/tblcf3 #target remote | m68k-bdm-gdbserver pipe /dev/tblcf3
#target dbug /dev/ttyS0 #target dbug /dev/ttyS0

View File

@@ -228,3 +228,4 @@ COPYING
COPYING.LESSER COPYING.LESSER
dump.bdm dump.bdm
mcf5474.gdb mcf5474.gdb
Makefile

View File

@@ -39,6 +39,7 @@ CFLAGS=-mcpu=5474 \
-Wa,--register-prefix-optional -Wa,--register-prefix-optional
CFLAGS_OPTIMIZED = -mcpu=5474 \ CFLAGS_OPTIMIZED = -mcpu=5474 \
-Wall \ -Wall \
-g3 \
-O2 \ -O2 \
-fomit-frame-pointer \ -fomit-frame-pointer \
-ffreestanding \ -ffreestanding \

View File

@@ -61,6 +61,10 @@ define ib
setup-dram setup-dram
end end
define run
continue
end
tr tr
ib ib
load load firebee/ram.elf

View File

@@ -509,7 +509,7 @@ irq6: // MFP interrupt from FPGA
movem.l (sp),d0-d1/a0-a1 // restore registers saved above movem.l (sp),d0-d1/a0-a1 // restore registers saved above
lea 4 * 4(sp),sp // adjust stack lea 4 * 4(sp),sp // adjust stack
bra irq6_os // call OS handler beq irq6_os // call OS handler
rte rte
irq6_os: // call native OS irq6 handler irq6_os: // call native OS irq6 handler

View File

@@ -204,20 +204,20 @@ static int num_locked_mmu_maps = sizeof(locked_map) / sizeof(struct mmu_mapping)
static struct mmu_mapping memory_map[] = static struct mmu_mapping memory_map[] =
{ {
/* map system vectors supervisor-protected */ /* map OS system vectors supervisor-protected */
{ {
0, 0,
0, 0,
0x800, 0x800,
MMU_PAGE_SIZE_1K, MMU_PAGE_SIZE_1K,
{ CACHE_WRITETHROUGH, SV_USER, 0, ACCESS_READ | ACCESS_WRITE | ACCESS_EXECUTE }, { CACHE_WRITETHROUGH, SV_PROTECT, 0, ACCESS_READ | ACCESS_WRITE | ACCESS_EXECUTE },
}, },
{ {
0x800, 0x800,
0x800, 0x800,
0x800, 0x800,
MMU_PAGE_SIZE_1K, MMU_PAGE_SIZE_1K,
{ CACHE_WRITETHROUGH, SV_USER, 0, ACCESS_READ | ACCESS_WRITE | ACCESS_EXECUTE }, { CACHE_WRITETHROUGH, SV_PROTECT, 0, ACCESS_READ | ACCESS_WRITE | ACCESS_EXECUTE },
}, },
{ {
/* when the first 4k are filled with 1k pages, we can switch to 8k pages */ /* when the first 4k are filled with 1k pages, we can switch to 8k pages */
@@ -434,7 +434,11 @@ bool access_exception(uint32_t pc, uint32_t format_status)
case 0x8020000: /* TLB miss on data write */ case 0x8020000: /* TLB miss on data write */
case 0xc020000: /* TLB miss on data read or read-modify-write */ case 0xc020000: /* TLB miss on data read or read-modify-write */
fault_address = MCF_MMU_MMUAR; fault_address = MCF_MMU_MMUAR;
dbg("access fault - TLB miss at %p. Fault status = 0x0%x\r\n", pc, fault_status); /*
* the following line must stay commented or we risk a double fault (debugging
* output requiring itself a page mapping):
*/
// dbg("access fault - TLB miss at %p. Fault status = 0x0%x\r\n", pc, fault_status);
break; break;
default: default:

View File

@@ -1093,6 +1093,7 @@ void initialize_hardware(void)
/* the following only makes sense _after_ DDRAM has been initialized */ /* the following only makes sense _after_ DDRAM has been initialized */
clear_bss_segment(); clear_bss_segment();
xprintf(".bss segment cleared\r\n");
if (BAS_LMA != BAS_IN_RAM) if (BAS_LMA != BAS_IN_RAM)
{ {