Installation

Ubuntu20.04

For Ubuntu20.04 the version in apt repository is 0.13.1+dfsg-1, which is too low to recognize J-Link probe

$ apt-cache show python3-pyocd
Package: python3-pyocd
Architecture: all
Version: 0.13.1+dfsg-1
Priority: optional

When you run pyocd-tool list it won't detect the jlink probe

Remove

sudo apt remove python3-pyocd

Then install from pip

pip install pyocd

This will work (it's a J-Link clone)

~$ pyocd list
# Probe/Board Unique ID Target
----------------------------------------------------
0 Segger J-Link (unknown) 123456 n/a

Ubuntu 22.04

This is instantly available but not recommended

sudo pip install pyocd
# or with a mirror
sudo pip install pyocd -i https://mirrors.ustc.edu.cn/pypi/web/simple/
# This will install pyocd (currently pyocd-0.34.2) into:
/usr/local/bin/pyocd
/usr/local/bin/pyocd-gdbserver
/usr/local/lib/python3.10/dist-packages/pyocd-0.34.2.dist-info/*
/usr/local/lib/python3.10/dist-packages/pyocd/*

This is recommended but not instantly available (you need logout & login)

pip uninstall pyocd
# This will install pyocd into:
/home/milton/.local/bin/pyocd
/home/milton/.local/bin/pyocd-gdbserver
/home/milton/.local/lib/python3.10/site-packages/pyocd-0.34.2.dist-info/*
/home/milton/.local/lib/python3.10/site-packages/pyocd/*

You don't need to add .local/bin to the PATH because .profile already takes care of it, but it won't take effect until your next login

Basic Commands

# Show helps
pyocd --help
pyocd list --help
pyocd pack --help # List information about probes
pyocd list
# List available targets
pyocd list -t # Manage CMSIS-Packs for target support, clean packs
pyocd pack -c
# List install packs
pyocd pack -s
# Update pack index
pyocd pack -u
# Show pack info according to IC type
pyocd pack -f stm32f103
# Install pack for specified IC type
pyocd pack -i stm32f103 # Reset a target device.
pyocd reset
# Run debug probe server.
pyocd server

Add New Targets

According to Target Support, pyocd list -t will list built-in targets, if you want to add new targets, you should run the following commands

# Clean packs
pyocd pack -c
# List install packs
pyocd pack -s
# Update pack index
pyocd pack -u
# Show pack info according to IC type
pyocd pack -f stm32f103
# Install pack for specified IC type
pyocd pack -i stm32f103

The above command pyocd pack -u will download all .pdsc files into $HOME/.local/share/cmsis-pack-manager/, and generate aliases.json and index.json. But this command may not succeeded -- it's very slow and full of connection errors and format errors.

If you just want specified target types, and you happen to have the pack files, you can manually add the target support by creating a configuration file.

create a file named pyocd.yaml with the following content

pack:
- ./Misc/ArteryTek.AT32F403A_407_DFP.2.1.3.pack
- [relative or absolute paths to other pack files]

Then run pyocd from the same folder, it will take this file as configuration and treat these pack files as installed,

$ pyocd list -t
Name Vendor Part Number Families Source
-----------------------------------------------------------------------------------------------------------------------
_at32f403acct7 ArteryTek -AT32F403ACCT7 AT32F40x Series, AT32F403A pack
_at32f403accu7 ArteryTek -AT32F403ACCU7 AT32F40x Series, AT32F403A pack
_at32f403acet7 ArteryTek -AT32F403ACET7 AT32F40x Series, AT32F403A pack
...
_at32f407vet7 ArteryTek -AT32F407VET7 AT32F40x Series, AT32F407 pack
_at32f407vgt7 ArteryTek -AT32F407VGT7 AT32F40x Series, AT32F407 pack
cc3220sf Texas Instruments CC3220SF builtin
cortex_m Generic CoreSightTarget builtin

You can rename this configuration file and place it to other path, and specify this configuration with --config

$ pyocd list -t --config ./Misc/pyocd_renamed.yaml
Name Vendor Part Number Families Source
-----------------------------------------------------------------------------------------------------------------------
_at32f403acct7 ArteryTek -AT32F403ACCT7 AT32F40x Series, AT32F403A pack
_at32f403accu7 ArteryTek -AT32F403ACCU7 AT32F40x Series, AT32F403A pack
_at32f403acet7 ArteryTek -AT32F403ACET7 AT32F40x Series, AT32F403A pack
_at32f403aceu7 ArteryTek -AT32F403ACEU7 AT32F40x Series, AT32F403A pack
...
_at32f407vet7 ArteryTek -AT32F407VET7 AT32F40x Series, AT32F407 pack
_at32f407vgt7 ArteryTek -AT32F407VGT7 AT32F40x Series, AT32F407 pack
cc3220sf Texas Instruments CC3220SF builtin
cortex_m Generic CoreSightTarget builtin
cy8c64_sysap Cypress cy8c64_sysap builtin

Operations

Take AT32F403ACGT7 for example.

Reset

Reset

pyocd reset -t _at32f403acgt7 --config somewhere/pyocd.yaml

Reset and halt

pyocd reset -l -t _at32f403acgt7 --config somewhere/pyocd.yaml

Erase

Erase entire chip, target is _at32f403acgt7

$ pyocd erase -t _at32f403acgt7 -c --config somewhere/pyocd.yaml
0000972 I Erasing chip... [eraser]
0003906 I Chip erase complete [eraser]

Flash(Load)

$ pyocd load -t _at32f403acgt7 ./led_toggle.hex --config somewhere/pyocd.yaml
0000957 I Loading /home/milton/somewhere/led_toggle.hex [load_cmd]
[==================================================] 100%
0001481 I Erased 4096 bytes (2 sectors), programmed 3072 bytes (3 pages), skipped 0 bytes (0 pages) at 5.77 kB/s [loader]

Enter Commander Mode

$ pyocd commander -v -v -t _at32f403acgt7 --config somewhere/pyocd.yaml

This will display the chip details

0000882 D STLink probe 0669FF525252714987194517 firmware version: V2J39M27 [stlink]
...
0000899 D flash algo: [code=0x2e0] [b1=0x2e0,0x6e0] [b2=0x6e0,0xae0] [stack=0x2ae0; 0x2000 b] (ram=0x20000000, 0x4000 b) [flash_algo]
0000901 I Target type is _at32f421c8t7 [board]
0000903 D STLink probe 0669FF525252714987194517 firmware version: V2J39M27 [stlink]
0000904 D Running task load_svd [sequencer]
...
0000940 I DP IDR = 0x2ba01477 (v1 rev2) [dap]
...
0000943 D Using accelerated memory access interface for AHB-AP#0 [ap]
0000943 I AHB-AP#0 IDR = 0x24770011 (AHB-AP var1 rev2) [ap]
0000944 D AHB-AP#0 default HPROT=3 HNONSEC=0 [ap]
0000945 D AHB-AP#0 implemented HPROT=3 HNONSEC=0 [ap]
0000945 D Running task find_components [sequencer]
0000946 D Running task init_ap.0 [sequencer]
0000949 I AHB-AP#0 Class 0x1 ROM table #0 @ 0xe00ff000 (designer=43b:Arm part=4c4) [rom_table]
0000952 I [0]<e000e000:SCS v7-M class=14 designer=43b:Arm part=000> [rom_table]
0000953 I [1]<e0001000:DWT v7-M class=14 designer=43b:Arm part=002> [rom_table]
0000954 I [2]<e0002000:FPB v7-M class=14 designer=43b:Arm part=003> [rom_table]
0000956 I [3]<e0000000:ITM v7-M class=14 designer=43b:Arm part=001> [rom_table]
0000959 I [4]<e0040000:TPIU M4 class=9 designer=43b:Arm part=9a1 devtype=11 archid=0000 devid=ca1:0:0> [rom_table]
0000960 W Invalid coresight component, cidr=0x0 [rom_table]
0000960 I [5]e0041000: cidr=0, pidr=0, component invalid> [rom_table]
0000960 D Running task create_cores [sequencer]
0000960 D Creating SCS component [discovery]
0000961 D selected core #0 [soc_target]
0000962 I CPU core #0 is Cortex-M4 r0p1 [cortex_m]
0000963 D Running task set_default_reset_type [sequencer]
0000963 D Running task create_components [sequencer]
0000963 D Creating DWT component [discovery]
0000964 I 4 hardware watchpoints [dwt]
0000967 D Creating FPB component [discovery]
0000967 I 6 hardware breakpoints, 4 literal comparators [fpb]
0000968 D fpb has been disabled [fpb]
0000972 D Creating ITM component [discovery]
0000974 D Creating TPIU component [discovery]
...
Connected to -AT32F421C8T7 [Running]: 0669FF525252714987194517

Reference

PyOCD Notes的更多相关文章

  1. ASP.NET Core 1.1.0 Release Notes

    ASP.NET Core 1.1.0 Release Notes We are pleased to announce the release of ASP.NET Core 1.1.0! Antif ...

  2. Android Weekly Notes Issue #237

    Android Weekly Issue #237 December 25th, 2016 Android Weekly Issue #237 这是本年的最后一篇issue, 感谢大家. 本期内容包括 ...

  3. Android Weekly Notes Issue #230

    Android Weekly Notes Issue #230 November 6th, 2016 Android Weekly Issue #230. Android Weekly笔记, 本期内容 ...

  4. Android Weekly Notes Issue #229

    Android Weekly Issue #229 October 30th, 2016 Android Weekly Issue #229 Android Weekly笔记, 本期内容包括: 性能库 ...

  5. Android Weekly Notes Issue #227

    Android Weekly Issue #227 October 16th, 2016 Android Weekly Issue #227. 本期内容包括: Google的Mobile Vision ...

  6. Android Weekly Notes Issue #221

    Android Weekly Issue #221 September 4th, 2016 Android Weekly Issue #221 ARTICLES & TUTORIALS And ...

  7. Android Weekly Notes Issue #219

    Android Weekly Issue #219 August 21st, 2016 Android Weekly Issue #219 ARTICLES & TUTORIALS Andro ...

  8. MAGIC XPA最新版本Magic xpa 2.4c Release Notes

    New Features, Feature Enhancements and Behavior ChangesSubforms – Behavior Change for Unsupported Ta ...

  9. Magic xpa 2.5发布 Magic xpa 2.5 Release Notes

    Magic xpa 2.5發佈 Magic xpa 2.5 Release Notes Magic xpa 2.5 Release NotesNew Features, Feature Enhance ...

  10. Git for Windows v2.11.0 Release Notes

    homepage faq contribute bugs questions Git for Windows v2.11.0 Release Notes Latest update: December ...

随机推荐

  1. Java开发者的Golang进修指南:从0->1带你实现协程池

    在Java编程中,为了降低开销和优化程序的效率,我们常常使用线程池来管理线程的创建和销毁,并尽量复用已创建的对象.这样做不仅可以提高程序的运行效率,还能减少垃圾回收器对对象的回收次数. 在Golang ...

  2. 完美:C# Blazor中显示Markdown并添加代码高亮

    昨天发了一篇介绍这个库:C# Blazor中显示Markdown文件,介绍怎么在Blazor中显示Markdown内容的文章,文章内的代码是没有高亮的,思来相去,还是要做好,于是百度到这篇文章.NET ...

  3. css - 使用 " dl、dt、dd " 描述列表的形式 , 实现 【图片加下方文字】 的快速布局

    上效果图 : 上代码 : <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  4. [转帖]sql_exporter的使用

    https://www.jianshu.com/p/df4b7a7cfc0d 一.背景 有些时候,我们想看每天系统的登录人数.或者系统中订单的数据,比如:成功的订单.异常的订单等等.这些数据都在我们的 ...

  5. [转帖]SpringBoot项目banner.txt生成教程

    文章目录 近期在做毕业设计,后端框架用到了SpringBoot,可以自己个性化设置banner.txt 地址:https://www.bootschool.net/ascii 可以直接下载,然后直接将 ...

  6. [转帖]最全MySQL锁讲解:页锁、共享锁、行锁、表锁、悲观锁、乐观锁

    我们在操作数据库的时候,可能会由于并发问题而引起的数据的不一致性(数据冲突),如何保证数据并发访问的一致性.有效性,是所有数据库必须解决的一个问题,锁的冲突也是影响数据库并发访问性能的一个重要因素,从 ...

  7. [转帖]Oracle 通过 Exadata 云基础设施 X9M 提供卓越的数据库性能和规模

    https://www.modb.pro/db/397202 32个节点的RAC 服务器 每个服务器 两个 64核心的AMD CPU 四个线程干管理 252个线程进行数据库处理 252*32=8064 ...

  8. 最简单的以CentOS为base images 安装 Nodejs等操作的方法

    镜像内安装NodeJS的简单方法 公司内有产品需要安装nodejs以便进行相关操作,Linux和Windows时没有问题,但是如果是镜像的话可能会稍微复杂一点, 这里简单进行一下总结, 以便备忘. 1 ...

  9. vue中使用Object.assign导致视图不响应

    可以正常响应的 <template> <div> <ul> <li class="li-item" v-for="(item,i ...

  10. iframe 框架技术

    隐性转发 <!doctype html> <html lang="zh_CN"> <head> <meta charset="u ...