pyocd


Namepyocd JSON
Version 0.36.0 PyPI version JSON
download
home_pagehttps://github.com/pyocd/pyOCD
SummaryCortex-M debugger for Python
upload_time2023-10-08 20:01:21
maintainerChris Reed
docs_urlNone
author
requires_python>=3.7.0
licenseApache 2.0
keywords embedded debug debugger arm gdb gdbserver flash test
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            pyOCD
=====

[\[pyocd.io\]](https://pyocd.io/) [\[Docs\]](https://pyocd.io/docs) [\[Slack\]](https://join.slack.com/t/pyocd/shared_invite/zt-wmy3zvg5-nRLj1GBWYh708TVfIx9Llg) [\[Mailing list\]](https://groups.google.com/g/pyocd) [\[CI results\]](https://dev.azure.com/pyocd/pyocd/_build?definitionId=1&_a=summary)

<table><tr><td>

### News

- The v0.35 release adds [Open-CMSIS-Pack debug sequence support](https://pyocd.io/docs/open_cmsis_pack_support.html).

See the [wiki news page](https://github.com/pyocd/pyOCD/wiki/News) for all recent news.

</td></tr></table>

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 device](https://www.keil.com/dd2/pack/) on the market is supported.

The `pyocd` 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 or
    [several GUI debugger options](https://pyocd.io/docs/gdb_setup).
- `load`: Program files of various formats into flash or RAM.
- `erase`: Erase part or all of an MCU's flash memory.
- `pack`: Manage [CMSIS Device Family Packs](https://open-cmsis-pack.github.io/Open-CMSIS-Pack-Spec/main/html/index.html)
    that 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 with _any_ 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 through [config files](https://pyocd.io/docs/configuration),
[user scripts](https://pyocd.io/docs/user_scripts), and the Python API.


Requirements
------------

- Python 3.7.0 or later.†
- macOS, Linux, Windows 7 or newer, or FreeBSD
- A recent version of [libusb](https://libusb.info/). See [libusb installation](#libusb-installation) for details.
- Microcontroller with an Arm Cortex-M CPU
- Supported debug probe
  - [CMSIS-DAP](https://arm-software.github.io/CMSIS_5/DAP/html/index.html) v1 (HID) or v2 (WinUSB), including:
    - Atmel EDBG/nEDBG
    - Atmel-ICE
    - Cypress KitProg3 or MiniProg4
    - [DAPLink](https://github.com/ARMmbed/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](https://pemicro.com/) Cyclone and Multilink
  - Raspberry Pi Picoprobe
  - SEGGER J-Link
  - STLinkV2 or STLinkV3, either on-board or the standalone versions

† Version [0.29](https://github.com/pyocd/pyOCD/releases/tag/v0.29.0) is the last version to support Python 2.

Status
------

PyOCD is beta quality.

The Python API is considered stable for version 0.x, but will be changed in version 1.0.


Documentation
-------------

The pyOCD documentation is available on the [pyocd.io website](https://pyocd.io/docs).

In addition to user guides, you can generate reference documentation using Doxygen with the
supplied [config file](docs/Doxyfile).


Installing
----------

**The full installation guide is available [in the documentation](https://pyocd.io/docs/installing).**

For notes about installing and using on non-x86 systems such as Raspberry Pi, see the
[relevant documentation](https://pyocd.io/docs/installing_on_non_x86).

The latest stable version of pyOCD may be installed via [pip](https://pip.pypa.io/en/stable/index.html)
as follows:

```
$ python3 -mpip install -U pyocd
```

_Note: depending on your system, you may need to use `python` instead of `python3`._

The latest pyOCD package is available [on PyPI](https://pypi.python.org/pypi/pyOCD/) as well as
[on GitHub](https://github.com/pyocd/pyOCD/releases).

To install the latest prerelease version from the HEAD of the `develop` branch, you can do
the 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:

1. Under Linux, run with `sudo -H` to 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.
3. Specify the `--user` option to install local to your user account.
4. Run the command in a [virtualenv](https://virtualenv.pypa.io/en/latest/)
   local to a specific project working set.

### udev rules on Linux

On 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 should _never_ run pyOCD as root on any OS.)

To help with this, example udev rules files are included with pyOCD in the
[udev](https://github.com/pyocd/pyOCD/tree/main/udev) folder. The
[readme](https://github.com/pyocd/pyOCD/tree/main/udev/README.md) in this folder has detailed
instructions.

### Target support

See the [target support documentation](https://pyocd.io/docs/target_support) for 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 GDB
---------

See the [GDB setup](https://pyocd.io/docs/gdb_setup) documentation for a guide for setting up
and using pyocd with gdb and IDEs.


Community resources
-------------------

Join the pyOCD community!

[pyocd.io website](https://pyocd.io) \
[Documentation](https://pyocd.io/docs) \
[Issues](https://github.com/pyocd/pyOCD/issues) \
[Discussions](https://github.com/pyocd/pyOCD/discussions) \
[Wiki](https://github.com/pyocd/pyOCD/wiki) \
[Mailing list](https://groups.google.com/g/pyocd) for announcements

In order to foster a healthy and safe environment, we expect contributors and all members of the community to
follow our [Code of Conduct](https://github.com/pyocd/pyOCD/tree/main/CODE_OF_CONDUCT.md).


Contributions
-------------

We 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 on
[Slack](https://join.slack.com/t/pyocd/shared_invite/zt-zqjv6zr5-ZfGAXl_mFCGGmFlB_8riHA) or [GitHub
discussions](https://github.com/pyocd/pyOCD/discussions) and 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 the [contribution guidelines](https://github.com/pyocd/pyOCD/tree/main/CONTRIBUTING.md) for detailed requirements. The [developers'
Guide](https://pyocd.io/docs/developers_guide) has instructions on how to set up a development environment for pyOCD.

New pull requests should be [created](https://github.com/pyocd/pyOCD/pull/new) against the `develop` branch. (You have to change the "base" to `develop`.)


License
-------

PyOCD is licensed with the permissive Apache 2.0 license. See the
[LICENSE](https://github.com/pyocd/pyOCD/tree/main/LICENSE) file for the full text of the license. All
documentation and the website are licensed with [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).

Copyright © 2006-2022 PyOCD Authors

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/pyocd/pyOCD",
    "name": "pyocd",
    "maintainer": "Chris Reed",
    "docs_url": null,
    "requires_python": ">=3.7.0",
    "maintainer_email": "chris.reed@arm.com",
    "keywords": "embedded,debug,debugger,arm,gdb,gdbserver,flash,test",
    "author": "",
    "author_email": "",
    "download_url": "https://files.pythonhosted.org/packages/48/d5/125c9087c9184dbd895b76414de1f83756439834d9be9e794b6e52b6517b/pyocd-0.36.0.tar.gz",
    "platform": null,
    "description": "pyOCD\n=====\n\n[\\[pyocd.io\\]](https://pyocd.io/) [\\[Docs\\]](https://pyocd.io/docs) [\\[Slack\\]](https://join.slack.com/t/pyocd/shared_invite/zt-wmy3zvg5-nRLj1GBWYh708TVfIx9Llg) [\\[Mailing list\\]](https://groups.google.com/g/pyocd) [\\[CI results\\]](https://dev.azure.com/pyocd/pyocd/_build?definitionId=1&_a=summary)\n\n<table><tr><td>\n\n### News\n\n- The v0.35 release adds [Open-CMSIS-Pack debug sequence support](https://pyocd.io/docs/open_cmsis_pack_support.html).\n\nSee the [wiki news page](https://github.com/pyocd/pyOCD/wiki/News) for all recent news.\n\n</td></tr></table>\n\npyOCD is an open source Python based tool and package for programming and debugging Arm Cortex-M microcontrollers\nwith a wide range of debug probes. It is fully cross-platform, with support for Linux, macOS, Windows, and FreeBSD.\n\nA command line tool is provided that covers most use cases, or you can make use of the Python\nAPI to facilitate custom target control. A common use for the Python API is to run and control CI\ntests.\n\nSupport for more than 70 popular MCUs is built-in. In addition, through the use of CMSIS Device\nFamily Packs, [nearly every Cortex-M device](https://www.keil.com/dd2/pack/) on the market is supported.\n\nThe `pyocd` command line tool gives you total control over your device with these subcommands:\n\n- `gdbserver`: GDB remote server allows you to debug using gdb via either the console or\n    [several GUI debugger options](https://pyocd.io/docs/gdb_setup).\n- `load`: Program files of various formats into flash or RAM.\n- `erase`: Erase part or all of an MCU's flash memory.\n- `pack`: Manage [CMSIS Device Family Packs](https://open-cmsis-pack.github.io/Open-CMSIS-Pack-Spec/main/html/index.html)\n    that provide additional target device support.\n- `commander`: Interactive REPL control and inspection of the MCU.\n- `server`: Share a debug probe with a TCP/IP server.\n- `reset`: Hardware or software reset of a device.\n- `rtt`: Stream Segger RTT IO with _any_ debug probe.\n- `list`: Show connected devices.\n\nThe API and tools provide these features:\n\n-  halt, step, resume control\n-  read/write memory\n-  read/write core registers\n-  set/remove hardware and software breakpoints\n-  set/remove watchpoints\n-  write to flash memory\n-  load binary, hex, or ELF files into flash\n-  reset control\n-  access CoreSight DP and APs\n-  SWO and SWV\n-  and more!\n\nConfiguration and customization is supported through [config files](https://pyocd.io/docs/configuration),\n[user scripts](https://pyocd.io/docs/user_scripts), and the Python API.\n\n\nRequirements\n------------\n\n- Python 3.7.0 or later.\u2020\n- macOS, Linux, Windows 7 or newer, or FreeBSD\n- A recent version of [libusb](https://libusb.info/). See [libusb installation](#libusb-installation) for details.\n- Microcontroller with an Arm Cortex-M CPU\n- Supported debug probe\n  - [CMSIS-DAP](https://arm-software.github.io/CMSIS_5/DAP/html/index.html) v1 (HID) or v2 (WinUSB), including:\n    - Atmel EDBG/nEDBG\n    - Atmel-ICE\n    - Cypress KitProg3 or MiniProg4\n    - [DAPLink](https://github.com/ARMmbed/DAPLink) based debug probe, either on-board or standalone\n    - Keil ULINKplus\n    - NXP LPC-LinkII\n    - NXP MCU-Link\n    - WCH-Link (1a86:8011, 2a86:8011 and others)\n  - [PE Micro](https://pemicro.com/) Cyclone and Multilink\n  - Raspberry Pi Picoprobe\n  - SEGGER J-Link\n  - STLinkV2 or STLinkV3, either on-board or the standalone versions\n\n\u2020 Version [0.29](https://github.com/pyocd/pyOCD/releases/tag/v0.29.0) is the last version to support Python 2.\n\nStatus\n------\n\nPyOCD is beta quality.\n\nThe Python API is considered stable for version 0.x, but will be changed in version 1.0.\n\n\nDocumentation\n-------------\n\nThe pyOCD documentation is available on the [pyocd.io website](https://pyocd.io/docs).\n\nIn addition to user guides, you can generate reference documentation using Doxygen with the\nsupplied [config file](docs/Doxyfile).\n\n\nInstalling\n----------\n\n**The full installation guide is available [in the documentation](https://pyocd.io/docs/installing).**\n\nFor notes about installing and using on non-x86 systems such as Raspberry Pi, see the\n[relevant documentation](https://pyocd.io/docs/installing_on_non_x86).\n\nThe latest stable version of pyOCD may be installed via [pip](https://pip.pypa.io/en/stable/index.html)\nas follows:\n\n```\n$ python3 -mpip install -U pyocd\n```\n\n_Note: depending on your system, you may need to use `python` instead of `python3`._\n\nThe latest pyOCD package is available [on PyPI](https://pypi.python.org/pypi/pyOCD/) as well as\n[on GitHub](https://github.com/pyocd/pyOCD/releases).\n\nTo install the latest prerelease version from the HEAD of the `develop` branch, you can do\nthe following:\n\n```\n$ python3 -mpip install --pre -U git+https://github.com/pyocd/pyOCD.git@develop\n```\n\nYou can also install directly from the source by cloning the git repository and running:\n\n```\n$ python3 pip install .\n```\n\nNote that, depending on your operating system, you may run into permissions issues running these commands.\nYou have a few options here:\n\n1. Under Linux, run with `sudo -H` to install pyOCD and dependencies globally. On macOS, installing with sudo\n    should never be required, although sometimes permissions can become modified such that installing without\n    using sudo fails.\n3. Specify the `--user` option to install local to your user account.\n4. Run the command in a [virtualenv](https://virtualenv.pypa.io/en/latest/)\n   local to a specific project working set.\n\n### udev rules on Linux\n\nOn Linux, particularly Ubuntu 16.04+, you must configure udev rules to allow pyOCD to access debug\nprobes from user space. Otherwise you will need to run pyOCD as root, using sudo, which is very\nhighly discouraged. (You should _never_ run pyOCD as root on any OS.)\n\nTo help with this, example udev rules files are included with pyOCD in the\n[udev](https://github.com/pyocd/pyOCD/tree/main/udev) folder. The\n[readme](https://github.com/pyocd/pyOCD/tree/main/udev/README.md) in this folder has detailed\ninstructions.\n\n### Target support\n\nSee the [target support documentation](https://pyocd.io/docs/target_support) for information on how to check if\nthe MCU(s) you are using have built-in support, and how to install support for additional MCUs via\nCMSIS-Packs.\n\n\nUsing GDB\n---------\n\nSee the [GDB setup](https://pyocd.io/docs/gdb_setup) documentation for a guide for setting up\nand using pyocd with gdb and IDEs.\n\n\nCommunity resources\n-------------------\n\nJoin the pyOCD community!\n\n[pyocd.io website](https://pyocd.io) \\\n[Documentation](https://pyocd.io/docs) \\\n[Issues](https://github.com/pyocd/pyOCD/issues) \\\n[Discussions](https://github.com/pyocd/pyOCD/discussions) \\\n[Wiki](https://github.com/pyocd/pyOCD/wiki) \\\n[Mailing list](https://groups.google.com/g/pyocd) for announcements\n\nIn order to foster a healthy and safe environment, we expect contributors and all members of the community to\nfollow our [Code of Conduct](https://github.com/pyocd/pyOCD/tree/main/CODE_OF_CONDUCT.md).\n\n\nContributions\n-------------\n\nWe welcome contributions in any area, even if you just create an issue. If you would like to get involved but\naren't sure what to start with, just ask on\n[Slack](https://join.slack.com/t/pyocd/shared_invite/zt-zqjv6zr5-ZfGAXl_mFCGGmFlB_8riHA) or [GitHub\ndiscussions](https://github.com/pyocd/pyOCD/discussions) and we'll be happy to help you. Or you can look for\nan open issue. Any work on major changes should be discussed with the maintainers to make everyone is aligned.\n\nPlease see the [contribution guidelines](https://github.com/pyocd/pyOCD/tree/main/CONTRIBUTING.md) for detailed requirements. The [developers'\nGuide](https://pyocd.io/docs/developers_guide) has instructions on how to set up a development environment for pyOCD.\n\nNew pull requests should be [created](https://github.com/pyocd/pyOCD/pull/new) against the `develop` branch. (You have to change the \"base\" to `develop`.)\n\n\nLicense\n-------\n\nPyOCD is licensed with the permissive Apache 2.0 license. See the\n[LICENSE](https://github.com/pyocd/pyOCD/tree/main/LICENSE) file for the full text of the license. All\ndocumentation and the website are licensed with [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).\n\nCopyright \u00a9 2006-2022 PyOCD Authors\n",
    "bugtrack_url": null,
    "license": "Apache 2.0",
    "summary": "Cortex-M debugger for Python",
    "version": "0.36.0",
    "project_urls": {
        "Discussions": "https://github.com/pyocd/pyOCD/discussions",
        "Documentation": "https://pyocd.io//docs",
        "Homepage": "https://github.com/pyocd/pyOCD",
        "Issues": "https://github.com/pyocd/pyOCD/issues",
        "Releases": "https://github.com/pyocd/pyOCD/releases",
        "Source": "https://github.com/pyocd/pyOCD",
        "Website": "https://pyocd.io/"
    },
    "split_keywords": [
        "embedded",
        "debug",
        "debugger",
        "arm",
        "gdb",
        "gdbserver",
        "flash",
        "test"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "949b9ee42675ecc933f1ac6a2b518bdc8d3b77eb8eef49e5e342c88562ab8533",
                "md5": "462436d80f18b891f84fb4ead34b4295",
                "sha256": "422ec017f1c0be2fe8f7d43e7e73dfe8fdb413d53685a24d68d09c7d95ac11b3"
            },
            "downloads": -1,
            "filename": "pyocd-0.36.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "462436d80f18b891f84fb4ead34b4295",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7.0",
            "size": 13988568,
            "upload_time": "2023-10-08T20:01:13",
            "upload_time_iso_8601": "2023-10-08T20:01:13.202836Z",
            "url": "https://files.pythonhosted.org/packages/94/9b/9ee42675ecc933f1ac6a2b518bdc8d3b77eb8eef49e5e342c88562ab8533/pyocd-0.36.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "48d5125c9087c9184dbd895b76414de1f83756439834d9be9e794b6e52b6517b",
                "md5": "b62535d429aa5865dd5878dce6522e2c",
                "sha256": "937782acc9daff054d50fb7c6f788cd94a84f80f0b85f25aacab99dc98228648"
            },
            "downloads": -1,
            "filename": "pyocd-0.36.0.tar.gz",
            "has_sig": false,
            "md5_digest": "b62535d429aa5865dd5878dce6522e2c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7.0",
            "size": 15571415,
            "upload_time": "2023-10-08T20:01:21",
            "upload_time_iso_8601": "2023-10-08T20:01:21.304722Z",
            "url": "https://files.pythonhosted.org/packages/48/d5/125c9087c9184dbd895b76414de1f83756439834d9be9e794b6e52b6517b/pyocd-0.36.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-10-08 20:01:21",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "pyocd",
    "github_project": "pyOCD",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "lcname": "pyocd"
}
        
Elapsed time: 0.12849s