Hello,

would there be any interest to include a debug monitor for LEON3/GRLIB 
processors to urjtag? It allows to display various processor registers and 
upload and execute programs. I have developed it similar to the Blackfin module 
in urjtag, and it is of similar size. I have attached the diff statistics and 
the README file. Let me know if there is any interest to merge this into urjtag 
or if I rather should have in a separate repo ...

Jiri.

From ee246a8359d4ab7e43afdf4774333f0a9ed969d2 Mon Sep 17 00:00:00 2001
From: Jiri Gaisler <j...@gaisler.se>
Date: Mon, 9 Dec 2019 14:25:32 +0100
Subject: [PATCH 0/1] *** SUBJECT HERE ***

*** BLURB HERE ***

Jiri Gaisler (1):
  Added grlib subsystem

 urjtag/ChangeLog               |    3 +
 urjtag/MAINTAINERS             |    7 +
 urjtag/configure.ac            |    1 +
 urjtag/doc/README.grlib        |   99 +
 urjtag/include/urjtag/error.h  |    2 +
 urjtag/include/urjtag/grlib.h  |   73 +
 urjtag/src/Makefile.am         |    2 +
 urjtag/src/cmd/Makefile.am     |    3 +-
 urjtag/src/cmd/cmd_grlib.c     |  270 +++
 urjtag/src/global/log-error.c  |    2 +
 urjtag/src/grlib/Makefile.am   |   35 +
 urjtag/src/grlib/devices.h     |  291 +++
 urjtag/src/grlib/elf.c         |  288 +++
 urjtag/src/grlib/elf.h         | 3789 ++++++++++++++++++++++++++++++++
 urjtag/src/grlib/gdb.c         |  570 +++++
 urjtag/src/grlib/grlib.c       |  739 +++++++
 urjtag/src/grlib/grlib_int.h   |  367 ++++
 urjtag/src/grlib/sparc.c       |  138 ++
 urjtag/src/grlib/sparc.h       |  155 ++
 urjtag/src/grlib/sparc_disas.c | 1083 +++++++++
 20 files changed, 7916 insertions(+), 1 deletion(-)
 create mode 100644 urjtag/doc/README.grlib
 create mode 100644 urjtag/include/urjtag/grlib.h
 create mode 100644 urjtag/src/cmd/cmd_grlib.c
 create mode 100644 urjtag/src/grlib/Makefile.am
 create mode 100644 urjtag/src/grlib/devices.h
 create mode 100644 urjtag/src/grlib/elf.c
 create mode 100644 urjtag/src/grlib/elf.h
 create mode 100644 urjtag/src/grlib/gdb.c
 create mode 100644 urjtag/src/grlib/grlib.c
 create mode 100644 urjtag/src/grlib/grlib_int.h
 create mode 100644 urjtag/src/grlib/sparc.c
 create mode 100644 urjtag/src/grlib/sparc.h
 create mode 100644 urjtag/src/grlib/sparc_disas.c

-- 
2.17.1

Overview
--------

The grlib subsystems allows scanning of IP cores in a grlib SOC system,
and executing of programs on a leon3 processor. Communication with the
hardware is done using the grlib AHBJTAG debug interface using any supported
JTAG cable. A suitable command file for the Pender Elextronics XC6SLX75 board
would be:

cable FT2232 vid=0x0403 pid=0x6010  driver=ftdi-mpsse
detect
initbus ahbjtag
grlib scan

The output of urjtag would then be:


Connected to libftdi driver.
IR length: 6
Chain length: 1
Device Id: 00000100000000001110000010010011 (0x0400E093)
  Manufacturer: Xilinx (0x093)
  Part(0):      xc6slx75 (0x400E)
  Stepping:     0
  Filename:     /usr/local/share/urjtag/xilinx/xc6slx75/xc6slx75

 Scanning GRLIB system, build version 4241

 AHB Masters
  LEON3 SPARC V8 Processor           
  LEON3 SPARC V8 Processor           
  LEON3 SPARC V8 Processor           
  AHB Debug UART                     
  JTAG Debug Link                    
  GR Ethernet MAC                    

 AHB Slaves                         Memory Range
  LEON2 Memory Controller           0x00000000 - 0x20000000
  AHB/APB Bridge                    0x80000000 - 0x80100000
  LEON3 Debug Support Unit          0x90000000 - 0xa0000000
  Xilinx MIG DDR2 Controller        0x40000000 - 0x48000000
  AHB/APB Bridge                    0x80100000 - 0x80200000

 APB Slaves
  LEON2 Memory Controller           0x80000000 - 0x80000100
  Generic UART                      0x80000100 - 0x80000200
  Multi-processor Interrupt Ctrl.   0x80000200 - 0x80000300
  Modular Timer Unit                0x80000300 - 0x80000400
  AHB Debug UART                    0x80000700 - 0x80000800
  General Purpose I/O port          0x80000a00 - 0x80000b00
  General Purpose I/O port          0x80000b00 - 0x80000c00
  General Purpose I/O port          0x80000c00 - 0x80000d00
  AHB Status Register               0x80000d00 - 0x80000e00
  GR Ethernet MAC                   0x80000e00 - 0x80000f00
  Xilinx MIG DDR2 Controller        0x80100000 - 0x80100100
  Gaisler RGMII Interface           0x80101000 - 0x80102000

 Detected frequency from GPTIMER: 50.0 MHz
 UART1 @ 0x80000100 enabled at 38400 baud
 128 MByte RAM @ 0x40000000, stack pointer 0x47ffffc0
 LEON3DSU @ 0x90000000, 3 processor(s) detected
jtag> 

The interaction with the SOC is done using the grlib command:

grlib break                     Stop (break) running program
grlib cont                      Resume stopped program
grlib init                      Scan SOC and initialize IP cores
grlib load <file>               Load ELF file to memory
grlib mem [addr] [bytes]        Display memory
grlib run                       Run loaded ELF file
grlib rundb                     Run loaded ELF file, output to urjtag console

A debug session could look like this:

jtag> grlib load dhry.exe
SPARC executable
section: .text at 0x40000000, size 53296 bytes
section: .data at 0x4000d030, size 2764 bytes
 Loaded 56060 bytes (387.6 kbit/s), entry 0x40000000, 
jtag> grlib mem 0x40000000
   address     0x0       0x4       0x8       0xC           ascii
 0x40000000  88100000  0910002D  81C12344  01000000   .......-..#D....
 0x40000010  A1480000  A7500000  10802DC5  AC102001   .H...P....-... .
 0x40000020  91D02000  01000000  01000000  01000000   .. .............
 0x40000030  91D02000  01000000  01000000  01000000   .. .............
jtag>grlib run
<output on board console (e.g. /dev/ttyS0>


Limitations
-----------

* Only IP cores from the GPL version of grlib are detected and supported
* leon3 MMU not supported
* Only memory controller currently supported is MIGDDR2
* No breakpoint/watchpoint support (yet)

_______________________________________________
UrJTAG-development mailing list
UrJTAG-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/urjtag-development

Reply via email to