Package: pyocd
pyOCD[pyocd.io][Docs][Slack][Mailing list][CI results]NewsThe v0.35 release addsOpen-CMSIS-Pack debug sequence support.See thewiki news pagefor all recent news.pyOCD is an open source Python based tool and package for programming and debugging Arm Cortex-M microcontrollers
with a wide range of debug probes. It is fully cross-platform, with support for Linux, macOS, Windows, and FreeBSD.A command line tool is provided that covers most use cases, or you can make use of the Python
API to facilitate custom target control. A common use for the Python API is to run and control CI
tests.Support for more than 70 popular MCUs is built-in. In addition, through the use of CMSIS Device
Family Packs,nearly every Cortex-M deviceon the market is supported.Thepyocdcommand line tool gives you total control over your device with these subcommands:gdbserver: GDB remote server allows you to debug using gdb via either the console orseveral GUI debugger options.load: Program files of various formats into flash or RAM.erase: Erase part or all of an MCU's flash memory.pack: ManageCMSIS Device Family Packsthat provide additional target device support.commander: Interactive REPL control and inspection of the MCU.server: Share a debug probe with a TCP/IP server.reset: Hardware or software reset of a device.rtt: Stream Segger RTT IO withanydebug probe.list: Show connected devices.The API and tools provide these features:halt, step, resume controlread/write memoryread/write core registersset/remove hardware and software breakpointsset/remove watchpointswrite to flash memoryload binary, hex, or ELF files into flashreset controlaccess CoreSight DP and APsSWO and SWVand more!Configuration and customization is supported throughconfig files,user scripts, and the Python API.RequirementsPython 3.7.0 or later.†macOS, Linux, Windows 7 or newer, or FreeBSDA recent version oflibusb. Seelibusb installationfor details.Microcontroller with an Arm Cortex-M CPUSupported debug probeCMSIS-DAPv1 (HID) or v2 (WinUSB), including:Atmel EDBG/nEDBGAtmel-ICECypress KitProg3 or MiniProg4DAPLinkbased debug probe, either on-board or standaloneKeil ULINKplusNXP LPC-LinkIINXP MCU-LinkWCH-Link (1a86:8011, 2a86:8011 and others)PE MicroCyclone and MultilinkRaspberry Pi PicoprobeSEGGER J-LinkSTLinkV2 or STLinkV3, either on-board or the standalone versions† Version0.29is the last version to support Python 2.StatusPyOCD is beta quality.The Python API is considered stable for version 0.x, but will be changed in version 1.0.DocumentationThe pyOCD documentation is available on thepyocd.io website.In addition to user guides, you can generate reference documentation using Doxygen with the
suppliedconfig file.InstallingThe full installation guide is availablein the documentation.For notes about installing and using on non-x86 systems such as Raspberry Pi, see therelevant documentation.The latest stable version of pyOCD may be installed viapipas follows:$ python3 -mpip install -U pyocdNote: depending on your system, you may need to usepythoninstead ofpython3.The latest pyOCD package is availableon PyPIas well ason GitHub.To install the latest prerelease version from the HEAD of thedevelopbranch, you can do
the following:$ python3 -mpip install --pre -U git+https://github.com/pyocd/pyOCD.git@developYou can also install directly from the source by cloning the git repository and running:$ python3 pip install .Note that, depending on your operating system, you may run into permissions issues running these commands.
You have a few options here:Under Linux, run withsudo -Hto install pyOCD and dependencies globally. On macOS, installing with sudo
should never be required, although sometimes permissions can become modified such that installing without
using sudo fails.Specify the--useroption to install local to your user account.Run the command in avirtualenvlocal to a specific project working set.udev rules on LinuxOn Linux, particularly Ubuntu 16.04+, you must configure udev rules to allow pyOCD to access debug
probes from user space. Otherwise you will need to run pyOCD as root, using sudo, which is very
highly discouraged. (You shouldneverrun pyOCD as root on any OS.)To help with this, example udev rules files are included with pyOCD in theudevfolder. Thereadmein this folder has detailed
instructions.Target supportSee thetarget support documentationfor information on how to check if
the MCU(s) you are using have built-in support, and how to install support for additional MCUs via
CMSIS-Packs.Using GDBSee theGDB setupdocumentation for a guide for setting up
and using pyocd with gdb and IDEs.Community resourcesJoin the pyOCD community!pyocd.io websiteDocumentationIssuesDiscussionsWikiMailing listfor announcementsIn order to foster a healthy and safe environment, we expect contributors and all members of the community to
follow ourCode of Conduct.ContributionsWe welcome contributions in any area, even if you just create an issue. If you would like to get involved but
aren't sure what to start with, just ask onSlackorGitHub
discussionsand we'll be happy to help you. Or you can look for
an open issue. Any work on major changes should be discussed with the maintainers to make everyone is aligned.Please see thecontribution guidelinesfor detailed requirements. Thedevelopers'
Guidehas instructions on how to set up a development environment for pyOCD.New pull requests should becreatedagainst thedevelopbranch. (You have to change the "base" todevelop.)LicensePyOCD is licensed with the permissive Apache 2.0 license. See theLICENSEfile for the full text of the license. All
documentation and the website are licensed withCC BY 4.0.Copyright © 2006-2022 PyOCD Authors