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
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 |