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. SpringMVC06——数据绑定——2021-05-09

    数据绑定介绍 在执行程序时,SpringMVC会根据客户端请求参数的不同, 将请求信息中的信息以一定的方式转换并绑定到控制器类的方法参数中. 在数据绑定过程中,SpringMVC框架会通过数据绑定组件 ...

  2. [转帖]为非root用户添加NOPASSWD权限

    https://www.jianshu.com/p/d1e71bda4b34 查看树莓派默认是怎么为pi用户免去密码 所有配置文件都在 /etc 目录下,免去密码配置文件也不例外.在/etc/sudo ...

  3. [转帖]深入了解 gRPC:协议

    https://cn.pingcap.com/blog/grpc 经过很长一段时间的开发,TiDB 终于发了 RC3.RC3 版本对于 TiKV 来说最重要的功能就是支持了 gRPC,也就意味着后面大 ...

  4. [转帖]PostgreSQL数据加载工具之pg_bulkload

    https://www.jianshu.com/p/b576207f2f3c 1. pg_bulkload介绍 PostgreSQL提供了一个copy命令的便利数据加载工具,copy命令源于Postg ...

  5. [转帖]ESXi下查看CPU 频率

    https://www.jianshu.com/p/8943a4223ed7 查看CPU的固定频率 [root@localhost:/bin] esxcli hardware  cpu list|gr ...

  6. 【转帖】Linux多链路聚合技术

    https://www.jianshu.com/p/dd8587ecf54f 一般而言,在单体结构的操作系统中,一块物理磁盘会接在总线设备上,并经由总线分配 PCI-Bus 号,这个时候一个 bus  ...

  7. [转帖]服务器稳定性测试-LTP压力测试方法及工具下载

    简介 LTP(LinuxTest Project)是SGI.IBM.OSDL和Bull合作的项目,目的是为开源社区提供一个测试套件,用来验证Linux系统可靠性.健壮性和稳定性.LTP测试套件是测试L ...

  8. [转帖]010 Linux 文本统计与去重 (wc 和 uniq)

    https://my.oschina.net/u/3113381/blog/5427461 wc 命令一般是作为组合命令的一员与其他命令一同起到统计的作用.而一般情况下使用 wc -l 命令较多. u ...

  9. mysql 获取 今天是今年的第几天, 以及 还有多少天元旦的方法

    1. 获取今天是这一年的第几天 select dayofyear(curdate()); 或者是 select dayofyear(now()); 2. 获取还有多少天元旦的方法 select dat ...

  10. CPU 大拿的作品

    http://nieyong.github.io/wiki_cpu/index.html 改天学习写一下.