yasimavr
========
Yet another simulator for Microchip AVR microcontrollers, inspired from simavr
------------------------------------------------------------------------------
_yasimavr_ is a simulator for AVR 8-bits microcontrollers.
It is mainly aimed at the Mega0 and Mega1 series (ATmega80x-160x-320x-480x and others)
with a possibility to work with the "classic" series. (ATMega48/88/168/328 and others)
It is composed of 2 layers:
* a C++ layer for the core API and the various peripheral simulation models
* a Python layer to handle the configuration, utilities, data recording, and external components
Installation
------------
Prerequisites:
**************
* Python (version >=3.7) and PIP
* For Ubuntu, libelf is required: ``sudo apt-get install libelf-dev``
Install:
********
* execute: ``pip install yasimavr``
The python bindings for the C++ librairies are built with the SIP tool from RiverbankComputing
(https://www.riverbankcomputing.com)
Thanks
------
Quite a few ideas in this software - and even big chunks of code - originate from simavr.
(https://github.com/buserror/simavr)
Big thanks to the simavr authors for this great tool !
Supported IOs
--------------
* GPIO
* SPI
* TWI
* USART
Supported Cores
---------------
The package includes a predefined set of MCU models:
* ATMegaxx8 series (ATMega48/88/168/328)
* ATMega 0-series (ATMega808/809/1608/1609/3208/3209/4808/4809)
Other device models can be easily simulated by creating a YAML config file.
A template is provided, and the example _atgiga4809_ shows how to load and use a customised device configuration.
New simulation models for peripherals can be created in Python or C++ using the provided API.
Features
--------
* Real-time/Fast mode : yasimavr can try to sync the simulated time with system time or run as fast as possible
* AVR-GDB integration : yasimavr can acts as a GDB backend stub, with support for breakpoints and watchpoints
* VCD export : yasimavr can export traces of pin states, GPIO ports, interrupt vectors, memory locations or generic signals in Value Change Dump (VCD) files
* MCU dump : at any point of the simulation, yasimavr can create a snapshot of the state of the MCU model, including all registers and memories and save it in a text file.
* "Zombie" mode : yasimavr can directly interact with simulated peripherals by acting as the CPU. This is useful to verify customised peripheral models or a test script.
* Probing : yasimavr can read/write CPU registers or memories on-the-fly. This is useful to force the firmware into certain branches for example, improving test coverage.
How to use
----------
_yasimavr_ can be used as a Python package to run a prepared simulation script.
(See the examples for how it looks like)
It also supports direct command line use:
* python -m yasimavr [options] [firmware]
For the list of command line options, execute python -m yasimavr -h
Some simple script examples are available here:
https://github.com/clesav/yasimavr/tree/main/examples
Documentation
-------------
The documentation is still a work in progress but will be progressively completed.
The online version, including an API reference, can be read on the Read the Docs:
* [Development documentation] http://yasimavr.readthedocs.io/en/latest/
* [Stable documentation] http://yasimavr.readthedocs.io/en/stable/
Raw data
{
"_id": null,
"home_page": "https://github.com/clesav/yasimavr",
"name": "yasimavr",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "avr simavr",
"author": "C. Savergne",
"author_email": "csavergne@yahoo.com",
"download_url": "https://files.pythonhosted.org/packages/33/ac/8620ebc359a4cf946a779f19eede67a2ee2641b856b9f3837769c904ef89/yasimavr-0.1.2.tar.gz",
"platform": "Any",
"description": "yasimavr\r\n========\r\n\r\nYet another simulator for Microchip AVR microcontrollers, inspired from simavr\r\n------------------------------------------------------------------------------\r\n\r\n_yasimavr_ is a simulator for AVR 8-bits microcontrollers.\r\nIt is mainly aimed at the Mega0 and Mega1 series (ATmega80x-160x-320x-480x and others)\r\nwith a possibility to work with the \"classic\" series. (ATMega48/88/168/328 and others)\r\n\r\nIt is composed of 2 layers:\r\n\r\n* a C++ layer for the core API and the various peripheral simulation models\r\n* a Python layer to handle the configuration, utilities, data recording, and external components\r\n\r\nInstallation\r\n------------\r\n\r\nPrerequisites:\r\n**************\r\n\r\n* Python (version >=3.7) and PIP\r\n* For Ubuntu, libelf is required: ``sudo apt-get install libelf-dev``\r\n\r\nInstall:\r\n********\r\n\r\n* execute: ``pip install yasimavr``\r\n\r\nThe python bindings for the C++ librairies are built with the SIP tool from RiverbankComputing\r\n(https://www.riverbankcomputing.com)\r\n\r\nThanks\r\n------\r\n\r\nQuite a few ideas in this software - and even big chunks of code - originate from simavr.\r\n(https://github.com/buserror/simavr)\r\nBig thanks to the simavr authors for this great tool !\r\n\r\nSupported IOs\r\n--------------\r\n\r\n* GPIO\r\n* SPI\r\n* TWI\r\n* USART\r\n\r\nSupported Cores\r\n---------------\r\n\r\nThe package includes a predefined set of MCU models:\r\n\r\n* ATMegaxx8 series (ATMega48/88/168/328)\r\n* ATMega 0-series (ATMega808/809/1608/1609/3208/3209/4808/4809)\r\n\r\nOther device models can be easily simulated by creating a YAML config file.\r\nA template is provided, and the example _atgiga4809_ shows how to load and use a customised device configuration.\r\nNew simulation models for peripherals can be created in Python or C++ using the provided API.\r\n\r\nFeatures\r\n--------\r\n\r\n* Real-time/Fast mode : yasimavr can try to sync the simulated time with system time or run as fast as possible\r\n* AVR-GDB integration : yasimavr can acts as a GDB backend stub, with support for breakpoints and watchpoints\r\n* VCD export : yasimavr can export traces of pin states, GPIO ports, interrupt vectors, memory locations or generic signals in Value Change Dump (VCD) files\r\n* MCU dump : at any point of the simulation, yasimavr can create a snapshot of the state of the MCU model, including all registers and memories and save it in a text file.\r\n* \"Zombie\" mode : yasimavr can directly interact with simulated peripherals by acting as the CPU. This is useful to verify customised peripheral models or a test script.\r\n* Probing : yasimavr can read/write CPU registers or memories on-the-fly. This is useful to force the firmware into certain branches for example, improving test coverage.\r\n\r\nHow to use\r\n----------\r\n\r\n_yasimavr_ can be used as a Python package to run a prepared simulation script.\r\n(See the examples for how it looks like)\r\n\r\nIt also supports direct command line use:\r\n\r\n* python -m yasimavr [options] [firmware]\r\n\r\nFor the list of command line options, execute python -m yasimavr -h\r\n\r\nSome simple script examples are available here:\r\nhttps://github.com/clesav/yasimavr/tree/main/examples\r\n\r\nDocumentation\r\n-------------\r\n\r\nThe documentation is still a work in progress but will be progressively completed.\r\nThe online version, including an API reference, can be read on the Read the Docs:\r\n\r\n* [Development documentation] http://yasimavr.readthedocs.io/en/latest/\r\n* [Stable documentation] http://yasimavr.readthedocs.io/en/stable/\r\n",
"bugtrack_url": null,
"license": "GPLv3",
"summary": "Yet Another SIMulator for AVR",
"version": "0.1.2",
"project_urls": {
"Bug Tracker": "https://github.com/clesav/yasimavr/issues",
"Homepage": "https://github.com/clesav/yasimavr",
"Source Code": "https://github.com/clesav/yasimavr"
},
"split_keywords": [
"avr",
"simavr"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "0abe6e898cceeb7dda96fbc2c5d98b0bb24df9ff90c2859381e3506eb6d0151f",
"md5": "733c850c6013ef266a3588c20ec86493",
"sha256": "d8a871a89ac7d7ccbf222a10dbc4f53e1e3d4ee75cc6df5905931adf2d8c49b8"
},
"downloads": -1,
"filename": "yasimavr-0.1.2-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "733c850c6013ef266a3588c20ec86493",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.7",
"size": 1196415,
"upload_time": "2024-10-04T20:08:52",
"upload_time_iso_8601": "2024-10-04T20:08:52.904759Z",
"url": "https://files.pythonhosted.org/packages/0a/be/6e898cceeb7dda96fbc2c5d98b0bb24df9ff90c2859381e3506eb6d0151f/yasimavr-0.1.2-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d108f102dbabcd3b624f1337dbabfc6133ad8282f9ea60ce457f136844f617db",
"md5": "2df0d70ad0e01a4d6a2f55d498534de3",
"sha256": "af516f09b5b20419705dc71e07ec4f0a406721aef6e77ed8eb16c713477bfad1"
},
"downloads": -1,
"filename": "yasimavr-0.1.2-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "2df0d70ad0e01a4d6a2f55d498534de3",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.7",
"size": 1196750,
"upload_time": "2024-10-04T20:08:54",
"upload_time_iso_8601": "2024-10-04T20:08:54.700758Z",
"url": "https://files.pythonhosted.org/packages/d1/08/f102dbabcd3b624f1337dbabfc6133ad8282f9ea60ce457f136844f617db/yasimavr-0.1.2-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c9c28a858aec009996992525fc20b8efc94ed1d7b02762f94a2c0633fedb25d6",
"md5": "3c292e39580ce9d73b108b3f5ee7cc5f",
"sha256": "f47a7c00adbece6fdc4e30948544cb141acbafd07de56f2e77913efa2696b714"
},
"downloads": -1,
"filename": "yasimavr-0.1.2-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "3c292e39580ce9d73b108b3f5ee7cc5f",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.7",
"size": 1198834,
"upload_time": "2024-10-04T20:08:56",
"upload_time_iso_8601": "2024-10-04T20:08:56.947576Z",
"url": "https://files.pythonhosted.org/packages/c9/c2/8a858aec009996992525fc20b8efc94ed1d7b02762f94a2c0633fedb25d6/yasimavr-0.1.2-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2654491ca864fa994fd690b06df9f2aaff22a4aebd7de9d5b4f51e9464724156",
"md5": "75f7564404092b8d9bc374b75a42bad6",
"sha256": "fe4adb25db806ddd18ce84c2d9815a2bdbe027da591dd4ccf44f20a36b88b124"
},
"downloads": -1,
"filename": "yasimavr-0.1.2-cp37-cp37m-win_amd64.whl",
"has_sig": false,
"md5_digest": "75f7564404092b8d9bc374b75a42bad6",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.7",
"size": 1196337,
"upload_time": "2024-10-04T20:08:59",
"upload_time_iso_8601": "2024-10-04T20:08:59.194258Z",
"url": "https://files.pythonhosted.org/packages/26/54/491ca864fa994fd690b06df9f2aaff22a4aebd7de9d5b4f51e9464724156/yasimavr-0.1.2-cp37-cp37m-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "cef3dcb14db9da798a47175e6aa0918b2905692c48ad021a49e517ee14f65d0e",
"md5": "bd21e9e9ec49de5ccf494ac2a8386c3e",
"sha256": "921a9b9c7ae9dcc2b31b83acf7d0ba1ab765f27f5d939ca9734bdc7a6fe7e978"
},
"downloads": -1,
"filename": "yasimavr-0.1.2-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "bd21e9e9ec49de5ccf494ac2a8386c3e",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.7",
"size": 1196592,
"upload_time": "2024-10-04T20:09:00",
"upload_time_iso_8601": "2024-10-04T20:09:00.756605Z",
"url": "https://files.pythonhosted.org/packages/ce/f3/dcb14db9da798a47175e6aa0918b2905692c48ad021a49e517ee14f65d0e/yasimavr-0.1.2-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "540ce583ea9a6194b89c5b08b72c6949f9a462d2b84682f857b79f2089a99cb5",
"md5": "c220c9c6208347a0e5c899cfc1e2425e",
"sha256": "e78af8a511b96eaf2cb29ca402e9d9b1e61f768e0c97274fbe1713a413433ba2"
},
"downloads": -1,
"filename": "yasimavr-0.1.2-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "c220c9c6208347a0e5c899cfc1e2425e",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.7",
"size": 1197064,
"upload_time": "2024-10-04T20:09:02",
"upload_time_iso_8601": "2024-10-04T20:09:02.689198Z",
"url": "https://files.pythonhosted.org/packages/54/0c/e583ea9a6194b89c5b08b72c6949f9a462d2b84682f857b79f2089a99cb5/yasimavr-0.1.2-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "33ac8620ebc359a4cf946a779f19eede67a2ee2641b856b9f3837769c904ef89",
"md5": "b53e7f41dee32464abdb5451a1530bec",
"sha256": "1f0e88a3dbe5ca3298fa709dfd6b1843218651612b44de93a0a968dcd873b86d"
},
"downloads": -1,
"filename": "yasimavr-0.1.2.tar.gz",
"has_sig": false,
"md5_digest": "b53e7f41dee32464abdb5451a1530bec",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 307317,
"upload_time": "2024-10-04T20:09:04",
"upload_time_iso_8601": "2024-10-04T20:09:04.692957Z",
"url": "https://files.pythonhosted.org/packages/33/ac/8620ebc359a4cf946a779f19eede67a2ee2641b856b9f3837769c904ef89/yasimavr-0.1.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-04 20:09:04",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "clesav",
"github_project": "yasimavr",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "yasimavr"
}