Skip to content

BMDA + picoprobe have a lot of connectivity problems #2173

@positron96

Description

@positron96

Hello.

I have bmda v2.0.0 on Windows 10, connected to picoprobe (on a RPi2040-Zero board), connected to a target (py32f003).

While the setup detects by target successfully, its ability to flash is very unreliable. So far only when the chip is blank the flash succeeds, while producing a lot of errors in bmda output (several screens of dap_write_single failed (fault = 2), see below). When the chip is not erased, the flashing fails with roughly this output:

gdb output:
Target voltage: Unknown
Available Targets:
No. Att Driver
 1      PY32Fxxx M0+
0x080011ea in etl::variant<etl::monostate, unsigned char, etl::to_arithmetic_status>::~variant() ()
Loading section .isr_vector, size 0xc0 lma 0x8000000
Error writing data to flash
Loading section .text, size 0x318c lma 0x80000c0
Section .isr_vector, range 0x80000000
target memory fault, section .rodata, range 0x800324c -- 0x80035b0
 -Can't kill process
- Can't detach process.
x80000c0: MIS-MATCHED!
Section .text, range 0x80000c0 -- 0x800324c: MIS-MATCHED!
Kill the program being debugged? (y or n) [answered Y; input not from terminal]
bmda output:
D:\Cloud\Programming\BlackMagicProbe>blackmagic-bmda.exe
Listening on TCP port: 2000
Access resulted in fault
dap_read_single failed (fault = 4)
Access resulted in fault
dap_read_single failed (fault = 4)
Access resulted in fault
dap_read_single failed (fault = 4)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
Access resulted in no response
Recovering and re-trying access
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
Access resulted in no response
Recovering and re-trying access
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_read_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
dap_write_single failed (fault = 2)
Access has invalid ack 8
Access resulted in no response
Recovering and re-trying access
TARGET LOST.

I tried to use PyOCD with same picoprobe and target (no changes in hardware), it worked without any issues. I also used it to erase the chip to then try to flash with bmda.

I also have a blackmagic probe on a chinese stlink, using it with hosted bmda also works, so I don't think it is a problem with target MCU.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions