1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
Debug Tests
===========
Debugging requires many system components to all work together. The tests here
perform an end-to-end test, communicating with gdb and OpenOCD.
If a simulator or hardware passes all these tests, then you can be pretty
confident that the actual debug interface is functioning correctly.
Requirements
============
The following should be in the user's path:
* riscv64-unknown-elf-gcc (`rvv-0.9.x` branch for riscv-gnu-toolchain should
work if master does not have vector support yet)
* riscv64-unknown-elf-gdb (can be overridden with `--gdb` when running
gdbserver.py manually), which should be the latest from
git://sourceware.org/git/binutils-gdb.git.
* spike (can be overridden with `--sim_cmd` when running gdbserver.py
manually), which should be the latest from
https://github.com/riscv/riscv-isa-sim.git.
* openocd (can be overridden with `--server_cmd` when running gdbserver.py
manually), which should be the latest from
https://github.com/riscv/riscv-openocd.git.
Usage
=====
To run a quick smoke test against spike, run `make`. For a more comprehensive
test against a variety of spike configurations, run `make all`.
To run tests against hardware, or a specific spike configuration, manually
invoke gdbserver.py: `./gdbserver.py targets/<file>.py`
You can run just a single test by specifying any part of its name on the
command line, eg: `./gdbserver.py targets/RISC-V/spike64.py S0` runs
SimpleS0Test. Once that test has failed, you can look at the log file to get
an idea of what might have gone wrong.
For custom targets, you can create a .py file anywhere and pass its path on the
command line. The Targets class in `targets.py` contains documentation on what
every variable means.
Log Files
=========
All output from tests ends up in the `logs/` subdirectory, with one log file
per test. If a test fails, this is where to look.
Debug Tips
==========
You can see what spike is doing by adding `-l` to the spike command, eg.:
`./gdbserver.py --sim_cmd "$RISCV/bin/spike -l" targets/RISC-V/spike32.py Breakpoint`
You can see what OpenOCD is doing by adding `-d` to the OpenOCD command, eg.:
`./gdbserver.py --server_cmd "openocd -d" targets/RISC-V/spike32.py Breakpoint`
You can run gdb under valgrind by passing --gdb, eg.: `./gdbserver.py
--gdb "valgrind riscv64-unknown-elf-gdb" targets/RISC-V/spike64.py
DownloadTest`
|