Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't load, set up breakpoint, reset from GDB + minichlink #201

Open
maxgerhardt opened this issue Jun 30, 2023 · 1 comment
Open

Can't load, set up breakpoint, reset from GDB + minichlink #201

maxgerhardt opened this issue Jun 30, 2023 · 1 comment

Comments

@maxgerhardt
Copy link
Contributor

maxgerhardt commented Jun 30, 2023

Very simple example: Load a blinky.elf file into the chip, make it start from 0 and break in the main() function.
Chip: CH32V003, Debugger: WCH-Link(E), firmware version 2.9 (latest).

I can't get this to work at all. Producure:

  1. Erase chp (minichlink -E)
  2. Unplug and replug minichlink adapter
  3. Start minichlink in GDB mode (minichlink -G)
  4. Tell GDB to connect to the GDB server, load the binary, rest + halt the chip, set up the breakpoint, continue by using
riscv-none-embed-gdb.exe -x my_gdbinit.txt  firmware.elf

with my_gdbinit.txt

target extended-remote :2000
load
monitor reset
break main
continue

Output:

GNU gdb (xPack GNU RISC-V Embedded GCC, 32-bit) 8.3
Copyright (C) 2019 Free Software Foundation, Inc.
[...]

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from C:\Users\Max\Desktop\ch32_dev\platform-ch32v\examples\blinky-none-os\.pio\build\ch32v003f4p6_evt_r0\firmware.elf...
_start () at C:\Users\Max\.platformio\packages\framework-wch-noneos-sdk\Startup\startup_ch32v00x.S:18
18          j       handle_reset
Loading section .init, size 0xa0 lma 0x0
Loading section .text, size 0x570 lma 0xc0
Loading section .data, size 0x18 lma 0x630
Start address 0x0, load size 1576
Transfer rate: 2 KB/sec, 525 bytes/write.
Breakpoint 1 at 0x482: file src\main.c, line 31.
Note: automatically using hardware breakpoints for read-only addresses.
<HANGS FOREVER HERE>

On minichlink side:

>minichlink.exe -G
Found WCH Link
WCH Programmer is LinkE version 2.9
Chip Type: 003
Setup success
Flash Storage: 16 kB
Part UUID    : ab-c8-ab-cd-13-de-bc-49
PFlags       : ff-ff-ff-ff
Part Type (B): 07-13-bb-91
Read protection: disabled
Interface Setup
GDBServer Running
UNKNOWN PACKET: 3 (!#)
23 00 73
Write
LEN: 00000000 176 160 o
Write OK
ESCAPED @ 25 -> * [42]
ESCAPED @ 49 -> } [125]
ESCAPED @ 119 -> # [35]
ESCAPED @ 135 -> # [35]
ESCAPED @ 2b1 -> # [35]
ESCAPED @ 2c3 -> # [35]
ESCAPED @ 2de -> # [35]
ESCAPED @ 30b -> # [35]
ESCAPED @ 32b -> # [35]
ESCAPED @ 33d -> # [35]
ESCAPED @ 373 -> # [35]
ESCAPED @ 38b -> # [35]
ESCAPED @ 3ad -> # [35]
ESCAPED @ 3ae -> $ [36]
ESCAPED @ 3ec -> * [42]
ESCAPED @ 432 -> # [35]
ESCAPED @ 481 -> # [35]
ESCAPED @ 490 -> # [35]
ESCAPED @ 4eb -> # [35]
ESCAPED @ 4ff -> # [35]
ESCAPED @ 51d -> } [125]
ESCAPED @ 55d -> $ [36]
ESCAPED @ 56f -> $ [36]
Write
LEN: 000000c0 1409 1392 Q
Write OK
Write
LEN: 00000630 42 24 �
Write OK

When I Ctrl+C in GDB:

Program received signal SIGTRAP, Trace/breakpoint trap.
HardFault_Handler () at src\main.c:61
61              }
(gdb) where
#0  HardFault_Handler () at src\main.c:61
#1  0x00000212 in handle_reset ()
    at C:\Users\Max\.platformio\packages\framework-wch-noneos-sdk\Startup\startup_ch32v00x.S:170

it just hangs in the hardfault handler there.

Note that when I then exit minichlink and just do minichlink.exe -b to reboot the chip, the LED does blink normally.

So something is wrong with the reset procedure?

Firmware is attached here, blinky on PC1: firmware.zip

@cnlohr
Copy link
Owner

cnlohr commented Jul 30, 2023

Now that I am getting back into the swing of things, I can take another look at this. That said, I really don't ever use/like GDB, so it's been hard getting myself to actually test and make this move forward.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants