xdebug

next generation of mdebug (work in progress)
git clone http://frotz.net/git/xdebug.git
Log | Files | Refs | README

xtest.c (2360B)


      1 // Copyright 2023, Brian Swetland <swetland@frotz.net>
      2 // Licensed under the Apache License, Version 2.0.
      3 
      4 #include <stdio.h>
      5 #include <stdlib.h>
      6 #include <unistd.h>
      7 #include <string.h>
      8 #include <stdarg.h>
      9 
     10 #include "xdebug.h"
     11 #include "transport.h"
     12 #include "arm-debug.h"
     13 #include "cmsis-dap-protocol.h"
     14 
     15 void MSG(uint32_t flags, const char* fmt, ...) {
     16 	va_list ap;
     17 	va_start(ap, fmt);
     18 	vfprintf(stderr, fmt, ap);
     19 	va_end(ap);
     20 }
     21 
     22 void dump(uint32_t* w, int count) {
     23 	int n = 0;
     24 	while (count > 0) {
     25 		INFO(" %08x", *w++);
     26 		count--;
     27 		n++;
     28 		if (n == 4) {
     29 			INFO("\n");
     30 			n = 0;
     31 		}
     32 	}
     33 	if (n) INFO("\n");
     34 }
     35 
     36 int main(int argc, char **argv) {
     37 	uint32_t n = 0;
     38 
     39 	dctx_t* dc;
     40 	if (dc_create(&dc, 0, 0) < 0) {
     41 		return -1;
     42 	}
     43 
     44 	dc_set_clock(dc, 4000000);
     45 
     46 	dc_attach(dc, 0, 0, &n);
     47 
     48 #if 1
     49 	// dump some info
     50 	dc_dp_rd(dc, DP_DPIDR, &n);
     51 	INFO("DP.DPIDR    %08x\n", n);
     52 	dc_dp_rd(dc, DP_TARGETID, &n);
     53 	INFO("DP.TARGETID %08x\n", n);
     54 	dc_dp_rd(dc, DP_DLPIDR, &n);
     55 	INFO("DP.DLPIDR   %08x\n", n);
     56 	dc_ap_rd(dc, MAP_IDR, &n);
     57 	INFO("MAP.IDR     %08x\n", n);
     58 	dc_ap_rd(dc, MAP_CSW, &n);
     59 	INFO("MAP.CSW     %08x\n", n);
     60 	dc_ap_rd(dc, MAP_CFG, &n);
     61 	INFO("MAP.CFG     %08x\n", n);
     62 	dc_ap_rd(dc, MAP_CFG1, &n);
     63 	INFO("MAP.CFG1    %08x\n", n);
     64 	dc_ap_rd(dc, MAP_BASE, &n);
     65 	INFO("MAP.BASE    %08x\n", n);
     66 #endif
     67 
     68 #if 0
     69 	dc_mem_rd32(dc, 0, &n);
     70 	INFO("%08x: %08x\n", 0, n);
     71 
     72 	dc_mem_rd32(dc, 0xc0000000, &n);
     73 	INFO("%08x: %08x\n", 0, n);
     74 
     75 	dc_mem_rd32(dc, 0, &n);
     76 	INFO("%08x: %08x\n", 0, n);
     77 
     78 	unsigned addr = 0x00000000;
     79 	for (unsigned a = addr; a < addr + 32; a += 4) {
     80 		dc_mem_rd32(dc, a, &n);
     81 		INFO("%08x: %08x\n", a, n);
     82 	}
     83 #endif
     84 
     85 #if 0
     86 	int r = dc_core_halt(dc);
     87 	INFO("halt ? %d\n", r);
     88 	r = dc_core_reg_rd(dc, 0, &n);
     89 	INFO("r0 %x ? %d\n", n, r);
     90 	r = dc_core_reg_wr(dc, 0, 0xe0a0b0c0);
     91 	INFO("wr ? %d\n", r);
     92 	r = dc_core_reg_rd(dc, 15, &n);
     93 	INFO("r15 %x ? %d\n", n, r);
     94 	r = dc_core_reg_rd(dc, 0, &n);
     95 	INFO("r0 %x ? %d\n", n, r);
     96 	r = dc_core_resume(dc);
     97 	INFO("resume ? %d\n", r);
     98 	r = dc_core_reg_rd(dc, 0, &n);
     99 	INFO("r0 %x ? %d\n", n, r);
    100 	r = dc_core_reg_rd(dc, 15, &n);
    101 	INFO("r15 %x ? %d\n", n, r);
    102 #endif
    103 
    104 #if 0
    105 	uint32_t w[1024];
    106 	int r = dc_mem_rd_words(dc, 0x00000000, 1024, w);
    107 	if (r == 0) {
    108 		dump(w, 1024);
    109 	}
    110 	for (unsigned n = 0; n < 250; n++) {
    111 		uint32_t w[1024];
    112 		dc_mem_rd_words(dc, 0x00000000, 1024, w);
    113 	}
    114 #endif	
    115 	return 0;
    116 }
    117