2024-04-29 18:43:47 +08:00
|
|
|
|
# PyOCD 的基本使用
|
|
|
|
|
|
|
|
|
|
## 1. 基本命令
|
|
|
|
|
|
|
|
|
|
- erase
|
2024-04-29 19:22:29 +08:00
|
|
|
|
- load
|
2024-04-29 18:43:47 +08:00
|
|
|
|
- gdbserver
|
2024-04-29 19:22:29 +08:00
|
|
|
|
- list:列出已连接的调试器。
|
2024-04-29 18:43:47 +08:00
|
|
|
|
|
|
|
|
|
## 2. pack 管理
|
|
|
|
|
|
|
|
|
|
PyOCD 可以使用 .pack 文件(CMSIS-Packs),许多芯片尤其是国产芯片,只提供 .pack 文件来支持开发和调试。
|
|
|
|
|
|
|
|
|
|
PyOCD 通过 --pack 指定 .pack 文件。
|
|
|
|
|
|
|
|
|
|
## 3. 指定芯片型号
|
|
|
|
|
|
|
|
|
|
使用 --target 参数指定烧录芯片型号:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
pyocd erase --chip --target stm32f103rc
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
如果需要指定国产新,则需要结合 --pack 参数,例如:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
pyocd erase --chip --target n32l406cb --pack <"/Path/To/Nationstech.N32L40x_DFP.0.9.0.pack">
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 4. 擦除芯片
|
|
|
|
|
|
2024-04-29 19:22:29 +08:00
|
|
|
|
使用 erase 命令擦除芯片,需要指定擦除方法,如:--chip、--sector、--mass。
|
2024-04-29 18:43:47 +08:00
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# 擦除整个芯片
|
|
|
|
|
pyocd erase --chip --target <Target Chip Name> --pack <"/Path/To/Nationstech.N32L40x_DFP.0.9.0.pack">
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 5. 烧写芯片
|
|
|
|
|
|
2024-04-29 19:22:29 +08:00
|
|
|
|
使用 load 命令烧写新,需要指定烧写的起始地址和要烧写的程序。
|
2024-04-29 18:43:47 +08:00
|
|
|
|
|
|
|
|
|
```bash
|
2024-04-29 19:22:29 +08:00
|
|
|
|
pyocd.exe load --trust-crc --base-address <Program Start Address> <"/Path/To/Program.hex"> --target <Target Chip Name> --frequency {Examples: "1000", "2.5khz", "10m"} --erase {auto,chip,sector} --pack <"/Path/To/Nationstech.N32L40x_DFP.0.9.0.pack">
|
2024-04-29 18:43:47 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 6. GDB Server 调试
|
|
|
|
|
|
|
|
|
|
使用 gdbserver 命令启动 gdbserver 服务,然后可以使用 gdb 客户端进行连接调试。
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
pyocd gdbserver --port 50000 --telnet-port 50001 --target <Target Chip Name> --pack <"/Path/To/Nationstech.N32L40x_DFP.0.9.0.pack">
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 7. 外部参考资料
|
|
|
|
|
|
|
|
|
|
1. [PyOCD Command reference](https://pyocd.io/docs/command_reference.html)
|