Protocol abstraction and parser for embedded devices
Project description
mm_pal (Memory Map Protocol Abstraction Layer)
Python package for providing an runtime access to embedded devices based on a memory map type interface.
Description
This package consists of base classes to build interfaces and a mock device used for testing and as an example of implementation.
Device connection such as serial and parsers such as json are used to get
standard output.
Concept
Embedded devices are generally constrained and communication with
runtime parameters can take up lots of resources. Since many users of
microcontroller are familiar with the concept of a memory map or
register map the Memory Map
Manager can be
used as and lightweight way of coordinating a single memory map for
documentation, C structures, and python interface. The mm_pal provides
the building blocks for a custom interface. All common functions related
to connecting to the device, parsing output of the registers, and
reading/writing to the registers are handled and only application
specific functionality needs to be implemented. This can make
development easier, especially when the registers are changing
frequently.
Architecture
┏━━━━━━━━━━━┓ ┏━━━━━━━━━┓
┃ developer ┃ ┃ script ┃
┗━━━━━▲━━━━━┛ ┗━━━━▲━━━━┛
┃ ┃
┏━━━━┸━━━━┓ ┏━━━━━┸━━━━━┓
┃ my_cli ◄━━━━━━━┫ my_app_if ┃
┗━━━━▲━━━━┛ ┗━━━━━▲━━━━━┛
┃ ┌────────┐ ┃
┃ │ mm_pal │ ┃
┌─────╂────┴────────┴────╂────────┐
│┏━━━━┸━━━┓ ┏━━━┸━━━┓ │
│┃ mm_cmd ◄━━━━━━━━━━┫ mm_if ┃ │
│┗━━━━━━━━┛ ┗━━━▲━━━┛ │
│ ┃ │
│ ┏━━━━━━━┸━━━━━━━┓│
│ ┃ serial_driver ┃│
│ ┗━━━━━━━▲━━━━━━━┛│
└────────────────────────╂────────┘
┃
┏━━━━━━━━━━▼━━━━━━━━━━┓
┃ my_embedded_device ┃
┗━━━━━━━━━━━━━━━━━━━━━┛
Installing package
To install mm_pal use pip:
pip install mm_pal --user
Note: only use python 3 which may require pip3
To install from sources:
./setup.py install --force --user
Note: setuptools package should be installed.
Using the package
This package is meant to be built upon. An example implementation is done with the mock_if and the mock_cli.
The mm_cmd is based on the cmd2 module is probably worth reading the documenation.
Useful commands
To regenerate documentation use:
sphinx-apidoc -f -o docs/source/ mm_pal mock_pal; make html -C docs/
Testing
To test the package with pytest must be installed installed and updated.
Using ./setup.py test or tox will perform tests on the
source package.
Special thanks to riotctrl as it served as a great example.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mm_pal-1.2.1.tar.gz.
File metadata
- Download URL: mm_pal-1.2.1.tar.gz
- Upload date:
- Size: 25.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
537e917b5377d18e08c4f94e0be8cf741f70c6c4d20ea0c52611c9122a03f59e
|
|
| MD5 |
39ebfefa94a461f9a7cadead0479a8c7
|
|
| BLAKE2b-256 |
9b271f01b345f637c50e930eb1fb137565ca92ae9843d571933479c300907a0a
|
File details
Details for the file mm_pal-1.2.1-py3-none-any.whl.
File metadata
- Download URL: mm_pal-1.2.1-py3-none-any.whl
- Upload date:
- Size: 27.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6bcf70b9d32393ba717bccc0ae03aec7c49eabca13686bdbedb73c7abff9e8a
|
|
| MD5 |
04b976b275a9086c3b0c08c40cf9a228
|
|
| BLAKE2b-256 |
6270d6b514f71a426ddc324008118f91ae2611109023cfc9ab2086c9ed1f4e1a
|