- Notifications
You must be signed in to change notification settings - Fork498
Open source Python library for programming and debugging Arm Cortex-M microcontrollers
License
pyocd/pyOCD
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
[pyocd.io][Docs][Slack][Mailing list][CI results]
See thewiki news page for all recent news. |
pyOCD is an open source Python based tool and package for programming and debugging Arm Cortex-M microcontrollerswith 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 PythonAPI to facilitate custom target control. A common use for the Python API is to run and control CItests.
Support for more than 70 popular MCUs is built-in. In addition, through the use of CMSIS DeviceFamily Packs,nearly every Cortex-M device on the market is supported.
Thepyocd
command 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 withany debug probe.list
: Show connected devices.
The API and tools provide these features:
- halt, step, resume control
- read/write memory
- read/write core registers
- set/remove hardware and software breakpoints
- set/remove watchpoints
- write to flash memory
- load binary, hex, or ELF files into flash
- reset control
- access CoreSight DP and APs
- SWO and SWV
- and more!
Configuration and customization is supported throughconfig files,user scripts, and the Python API.
- Python 3.7.0 or later.†
- macOS, Linux, Windows 7 or newer, or FreeBSD
- A recent version oflibusb. Seelibusb installation for details.
- Microcontroller with an Arm Cortex-M CPU
- Supported debug probe
- CMSIS-DAP v1 (HID) or v2 (WinUSB), including:
- Atmel EDBG/nEDBG
- Atmel-ICE
- Cypress KitProg3 or MiniProg4
- DAPLink based debug probe, either on-board or standalone
- Keil ULINKplus
- NXP LPC-LinkII
- NXP MCU-Link
- WCH-Link (1a86:8011, 2a86:8011 and others)
- PE Micro Cyclone and Multilink
- Raspberry Pi Picoprobe
- SEGGER J-Link
- STLinkV2 or STLinkV3, either on-board or the standalone versions
- CMSIS-DAP v1 (HID) or v2 (WinUSB), including:
† Version0.29 is the last version to support Python 2.
PyOCD is beta quality.
The Python API is considered stable for version 0.x, but will be changed in version 1.0.
The pyOCD documentation is available on thepyocd.io website.
In addition to user guides, you can generate reference documentation using Doxygen with thesuppliedconfig file.
The 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 pyocd
Note: depending on your system, you may need to usepython
instead ofpython3
.
The latest pyOCD package is availableon PyPI as well ason GitHub.
To install the latest prerelease version from the HEAD of thedevelop
branch, you can dothe following:
$ python3 -mpip install --pre -U git+https://github.com/pyocd/pyOCD.git@develop
You 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 with
sudo -H
to install pyOCD and dependencies globally. On macOS, installing with sudoshould never be required, although sometimes permissions can become modified such that installing withoutusing sudo fails. - Specify the
--user
option to install local to your user account. - Run the command in avirtualenvlocal to a specific project working set.
On Linux, particularly Ubuntu 16.04+, you must configure udev rules to allow pyOCD to access debugprobes from user space. Otherwise you will need to run pyOCD as root, using sudo, which is veryhighly discouraged. (You shouldnever run pyOCD as root on any OS.)
To help with this, example udev rules files are included with pyOCD in theudev folder. Thereadme in this folder has detailedinstructions.
See thetarget support documentation for information on how to check ifthe MCU(s) you are using have built-in support, and how to install support for additional MCUs viaCMSIS-Packs.
See theGDB setup documentation for a guide for setting upand using pyocd with gdb and IDEs.
Join the pyOCD community!
pyocd.io website
Documentation
Issues
Discussions
Wiki
Mailing list for announcements
In order to foster a healthy and safe environment, we expect contributors and all members of the community tofollow ourCode of Conduct.
We welcome contributions in any area, even if you just create an issue. If you would like to get involved butaren't sure what to start with, just ask onSlack orGitHubdiscussions and we'll be happy to help you. Or you can look foran open issue. Any work on major changes should be discussed with the maintainers to make everyone is aligned.
Please see thecontribution guidelines for detailed requirements. Thedevelopers'Guide has instructions on how to set up a development environment for pyOCD.
New pull requests should becreated against thedevelop
branch. (You have to change the "base" todevelop
.)
PyOCD is licensed with the permissive Apache 2.0 license. See theLICENSE file for the full text of the license. Alldocumentation and the website are licensed withCC BY 4.0.
Copyright © 2006-2022 PyOCD Authors
About
Open source Python library for programming and debugging Arm Cortex-M microcontrollers