Zamir's Board

Just record myself

View on GitHub
3 April 2023

Using pyOCD on Fedora

by Zamir

Install pyOCD

pip3 install --user pyocd

Config udev rules and MCU pack

Add udev rules for your debugger

Download the cmsis-dap udev rules to /etc/udev/rules.d/ . If it does not contain the USB VID/PID of your debugger, add a line similar to that. For exmaple, for WCH-Link with USB info like “1a86:8012 QinHeng Electronics WCH-Link”

SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="8012", MODE="666", GROUP="plugdev", TAG+="uaccess"

Then, run the following commands to make the rules take effect.

sudo udevadm control --reload-rules 
sudo udevadm trigger

Download the Device Family Pack (DFP)

In my case, I am trying with MM32F3273. First I need to figure out the target name by

pyocd pack  find mm32f32

It will take a while to download all the pack info and provide the search result. Figure out the pack name and install it. In this case, my pack name is MM32F3273G8P.

pyocd pack install MM32F3273G8P

Start using pyOCD

Now we can actually start using pyOCD.

To flash firmware into your board

pyocd flash -t MM32F3273G8P your-firmware.elf

To fire up gdbserver for debugging

pyocd gdbserver -t MM32F3273G8P

And then you can attach gdb to this server

[zsun@nas build]$ gdb your-firmware.elf 
...
(gdb) target extended-remote 127.0.0.1:3333
...
0x08000fce in GPIO_ClearBits ()
(gdb) bt
#0  0x08000fce in GPIO_ClearBits ()
#1  0x0800160a in main ()

To be continued.

tags: