rp2040-pio-emulator


Namerp2040-pio-emulator JSON
Version 0.83.0 PyPI version JSON
download
home_pagehttps://github.com/NathanY3G/rp2040-pio-emulator
SummaryRP2040 emulator for the testing and debugging of PIO programs
upload_time2024-01-21 10:30:31
maintainer
docs_urlNone
authorNathan Young
requires_python>=3.10.13,<4.0.0
licenseApache-2.0
keywords rp2040 raspberry-pi-pico testing tdd debugging
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Emulator for the PIO Blocks within the RP2040 Microcontroller (Python Edition)

![Build Status](https://github.com/NathanY3G/rp2040-pio-emulator/actions/workflows/package-ci.yml/badge.svg) ![Coverage](./docs/images/coverage-badge.svg) [![PyPI](https://img.shields.io/pypi/v/rp2040-pio-emulator?color=informational)](https://pypi.org/project/rp2040-pio-emulator/)

## Introduction
An emulator for the Programmable Input/Output (PIO) blocks that are present
within the Raspberry Pi Foundation's RP2040 Microcontroller. It is designed
to assist in the analysis of PIO programs and to help you by:

* Enabling unit tests to be written.
* Answering questions such as: How many clock cycles are being consumed?
* Supporting the visualization of GPIO outputs over time.
* Providing alternatives to debugging on real hardware, which can be time consuming.

## Quick Start
Below is a slight variation of the example used within the [Quick Start Guide](./docs/Quick%20Start%20Guide.md).

```python
from pioemu import emulate

program = [0xE029, 0x0041, 0x2080]  # Count down from 9 using X register

generator = emulate(program, stop_when=lambda _, state: state.x_register < 0)

for before, after in generator:
  print(f"X register: {before.x_register} -> {after.x_register}")
```

## Documentation
A [Tour of pioemu](./docs/Tour%20of%20pioemu.md) provides a more detailed explanation than the
[Quick Start Guide](./docs/Quick%20Start%20Guide.md) offers. In addition, there is a
[FAQ](./docs/FAQ.md) available that might contain an answer to your question. However, if none
of these provides you with the necessary information then please consider creating a
[new issue](https://github.com/NathanY3G/rp2040-pio-emulator/issues) - thanks!

## Additional Examples
Some additional examples include:

1. Visualisation of square wave program using Jupyter Notebooks within the `examples/` directory.

1. TDD example for the Pimoroni Blinkt! within the `examples/` directory.

1. [pico-pio-examples](https://github.com/NathanY3G/pico-pio-examples)

## Supported Instructions

Instruction | Supported                         | Notes
:-----------| :---------------------------------| :----
JMP         | :heavy_check_mark:                | 
WAIT        | :heavy_check_mark: :warning:      | IRQ variant is not supported
IN          | :heavy_check_mark:                |
OUT         | :heavy_check_mark: :construction: | EXEC destination not implemented
PUSH        | :heavy_check_mark:                | 
PULL        | :heavy_check_mark:                | 
MOV         | :heavy_check_mark: :construction: | Some variants and operations not implemented
IRQ         | :heavy_multiplication_x:          |
SET         | :heavy_check_mark:                |

## Known Limitations
This software is under development and currently has limitations - the notable ones are:

1. Not all of the available instructions are supported - please refer to the table above.

1. No support for pin-sets associated with OUT, SET or IN; all pin numbers are with respect to GPIO 0.

1. Pin-sets do not wrap after GPIO 31.

1. No direct support for the concurrent running of multiple PIO programs;
   a single State Machine is emulated and not an entire PIO block.

## Thanks To
* [aaronjamt](https://github.com/aaronjamt) for contributing features and fixes.
* [Josverl](https://github.com/Josverl) for contributing features.
* [winnylourson](https://github.com/winnylourson) for contributing a bug fix.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/NathanY3G/rp2040-pio-emulator",
    "name": "rp2040-pio-emulator",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.10.13,<4.0.0",
    "maintainer_email": "",
    "keywords": "rp2040,raspberry-pi-pico,testing,tdd,debugging",
    "author": "Nathan Young",
    "author_email": "",
    "download_url": "https://files.pythonhosted.org/packages/dc/e5/99dd6dd5f296657e1d995bd425acf882c65ed32e384579ee7a3d24f5d60e/rp2040_pio_emulator-0.83.0.tar.gz",
    "platform": null,
    "description": "# Emulator for the PIO Blocks within the RP2040 Microcontroller (Python Edition)\n\n![Build Status](https://github.com/NathanY3G/rp2040-pio-emulator/actions/workflows/package-ci.yml/badge.svg) ![Coverage](./docs/images/coverage-badge.svg) [![PyPI](https://img.shields.io/pypi/v/rp2040-pio-emulator?color=informational)](https://pypi.org/project/rp2040-pio-emulator/)\n\n## Introduction\nAn emulator for the Programmable Input/Output (PIO) blocks that are present\nwithin the Raspberry Pi Foundation's RP2040 Microcontroller. It is designed\nto assist in the analysis of PIO programs and to help you by:\n\n* Enabling unit tests to be written.\n* Answering questions such as: How many clock cycles are being consumed?\n* Supporting the visualization of GPIO outputs over time.\n* Providing alternatives to debugging on real hardware, which can be time consuming.\n\n## Quick Start\nBelow is a slight variation of the example used within the [Quick Start Guide](./docs/Quick%20Start%20Guide.md).\n\n```python\nfrom pioemu import emulate\n\nprogram = [0xE029, 0x0041, 0x2080]  # Count down from 9 using X register\n\ngenerator = emulate(program, stop_when=lambda _, state: state.x_register < 0)\n\nfor before, after in generator:\n  print(f\"X register: {before.x_register} -> {after.x_register}\")\n```\n\n## Documentation\nA [Tour of pioemu](./docs/Tour%20of%20pioemu.md) provides a more detailed explanation than the\n[Quick Start Guide](./docs/Quick%20Start%20Guide.md) offers. In addition, there is a\n[FAQ](./docs/FAQ.md) available that might contain an answer to your question. However, if none\nof these provides you with the necessary information then please consider creating a\n[new issue](https://github.com/NathanY3G/rp2040-pio-emulator/issues) - thanks!\n\n## Additional Examples\nSome additional examples include:\n\n1. Visualisation of square wave program using Jupyter Notebooks within the `examples/` directory.\n\n1. TDD example for the Pimoroni Blinkt! within the `examples/` directory.\n\n1. [pico-pio-examples](https://github.com/NathanY3G/pico-pio-examples)\n\n## Supported Instructions\n\nInstruction | Supported                         | Notes\n:-----------| :---------------------------------| :----\nJMP         | :heavy_check_mark:                | \nWAIT        | :heavy_check_mark: :warning:      | IRQ variant is not supported\nIN          | :heavy_check_mark:                |\nOUT         | :heavy_check_mark: :construction: | EXEC destination not implemented\nPUSH        | :heavy_check_mark:                | \nPULL        | :heavy_check_mark:                | \nMOV         | :heavy_check_mark: :construction: | Some variants and operations not implemented\nIRQ         | :heavy_multiplication_x:          |\nSET         | :heavy_check_mark:                |\n\n## Known Limitations\nThis software is under development and currently has limitations - the notable ones are:\n\n1. Not all of the available instructions are supported - please refer to the table above.\n\n1. No support for pin-sets associated with OUT, SET or IN; all pin numbers are with respect to GPIO 0.\n\n1. Pin-sets do not wrap after GPIO 31.\n\n1. No direct support for the concurrent running of multiple PIO programs;\n   a single State Machine is emulated and not an entire PIO block.\n\n## Thanks To\n* [aaronjamt](https://github.com/aaronjamt) for contributing features and fixes.\n* [Josverl](https://github.com/Josverl) for contributing features.\n* [winnylourson](https://github.com/winnylourson) for contributing a bug fix.\n",
    "bugtrack_url": null,
    "license": "Apache-2.0",
    "summary": "RP2040 emulator for the testing and debugging of PIO programs",
    "version": "0.83.0",
    "project_urls": {
        "Homepage": "https://github.com/NathanY3G/rp2040-pio-emulator",
        "Repository": "https://github.com/NathanY3G/rp2040-pio-emulator"
    },
    "split_keywords": [
        "rp2040",
        "raspberry-pi-pico",
        "testing",
        "tdd",
        "debugging"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cb98756225253600bd524b0ded97ca7d24d9173d6d4755ad4ae2035f25d843cd",
                "md5": "ab62624959ec85f0ae69bde47d7e11ec",
                "sha256": "8ec57b3e263fb7584f88d101b7a27e2cceeed55e02b193beeeeb4c59289dc8bc"
            },
            "downloads": -1,
            "filename": "rp2040_pio_emulator-0.83.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "ab62624959ec85f0ae69bde47d7e11ec",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10.13,<4.0.0",
            "size": 19650,
            "upload_time": "2024-01-21T10:30:29",
            "upload_time_iso_8601": "2024-01-21T10:30:29.615781Z",
            "url": "https://files.pythonhosted.org/packages/cb/98/756225253600bd524b0ded97ca7d24d9173d6d4755ad4ae2035f25d843cd/rp2040_pio_emulator-0.83.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "dce599dd6dd5f296657e1d995bd425acf882c65ed32e384579ee7a3d24f5d60e",
                "md5": "b7124d82a6deecffac0ef94d307fb012",
                "sha256": "3d1a2147aa9c0b17f39b207d6b57b1381abf189aaa5bcdd0f6062da23c4e9b24"
            },
            "downloads": -1,
            "filename": "rp2040_pio_emulator-0.83.0.tar.gz",
            "has_sig": false,
            "md5_digest": "b7124d82a6deecffac0ef94d307fb012",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10.13,<4.0.0",
            "size": 14537,
            "upload_time": "2024-01-21T10:30:31",
            "upload_time_iso_8601": "2024-01-21T10:30:31.394834Z",
            "url": "https://files.pythonhosted.org/packages/dc/e5/99dd6dd5f296657e1d995bd425acf882c65ed32e384579ee7a3d24f5d60e/rp2040_pio_emulator-0.83.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-21 10:30:31",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "NathanY3G",
    "github_project": "rp2040-pio-emulator",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "rp2040-pio-emulator"
}
        
Elapsed time: 0.17220s