Skip to content

Instantly share code, notes, and snippets.

@whitequark
Created March 3, 2019 09:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save whitequark/4122ccf038bf9e70d6d6fc38796e5900 to your computer and use it in GitHub Desktop.
Save whitequark/4122ccf038bf9e70d6d6fc38796e5900 to your computer and use it in GitHub Desktop.
See __init__.py files in subdirectories of https://github.com/whitequark/Glasgow/tree/master/software/glasgow/applet for details, including specific examples and counterexamples.
"""
The ``interface`` taxon is the most fundamental and generic applet taxon. It groups applets
implementing interfaces that are used for purposes that do not fit into any single other taxon.
Because the ``interface`` taxon is so important, the applet names in this taxon are not prefixed
with the taxon name.
The ``memory`` taxon groups applets implementing interfaces to memory technology devices (volatile
and non-volatile) that include no functionality beyond manipulating data.
The ``debug`` taxon groups applets implementing interfaces to microprocessor or microcontroller
debug functions, such as manipulating memory and core state, and pausing and resuming execution.
The differentiating characteristic for this taxon is manipulation of control flow.
These applets may provide a higher level interface that can be used with an external debugger,
like gdb, or any other appropriate interface. If the debug functions may be used for manipulating
non-volatile memories, a different applet would be provided for that under the ``program`` taxon.
The ``program`` taxon groups applets implementing interfaces to memory technology devices (volatile
and non-volatile) that are directly connected to programmable logic, such as a microcontroller or
a gate array.
Such memories may be included on the same die, in the same package, on the same board, or in
the same assembly as the programmable logic; what is important is that the applet has both memory
functionality (i.e. read/write functions) and logic functionality (e.g. as simple as holding
the logic in reset while updating the memory, or as complex as encapsulating memory operations
in JTAG transactions).
The ``control`` taxon groups applets implementing control interfaces, that is, interfaces for
changing the volatile or non-volatile state of a device.
This taxon is an exclusion taxon, i.e. if a more specific taxon exists, it should be used. For
example, ``memory`` and ``program`` applets also change volatile or non-volatile state of a device.
The ``sensor`` taxon groups applets implementing interfaces to measurement devices.
The differentiating characteristic for this taxon is explicit display of measured data in terms
of physical quantities.
The ``display`` taxon groups applets implementing display interfaces, that is, interfaces for
sending commands to a device that alters its transmittance and/or reflectance in response.
Although some devices may receive periodic commands that embed 2d arrays of samples, they are
still classified under the ``display`` taxon, unless that is the only possibe mode of operation,
in which case the ``video`` taxon is appropriate.
The ``audio`` taxon groups applets implementing audio interfaces, that is, interfaces for periodic
transfers of 1d arrays of samples of pressure wave properties.
The ``video`` taxon groups applets implementing video interfaces, that is, interfaces for periodic
transfers of 2d arrays of samples of electromagnetic wave properties.
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment