pynrfjprog
Python wrapper around the nrfjprog dynamic link libraries (DLL). Use of this API allows developers to program/debug nRF SOC and SIP devices from the interpreter, write simple scripts for a more efficient development work flow, or write automated test frameworks. It can also be used to create applications in Python (i.e. command-line tools).
Use-cases
- Maximizing development efficiency: i.e. a script to perform various operations every time an application is built and run (could be hooked into a Makefile or automated build system etc...).
- Automated testing: Testing Production Programming tools on nRF5 using pynrfjprog.
Dependencies
- [SEGGER JLink DLL] (https://www.segger.com/jlink-software.html)
- (Windows-only) [Microsoft Visual C++ Redistributable] (https://learn.microsoft.com/en-US/cpp/windows/latest-supported-vc-redist)
Structure
pynrfjprog
├── pynrfjprog
│ ├──__init__.py # Package marker to make pynrfjprog a module. Also defines the version number
│ ├── API.py # (Deprecated; included only for backwards compatibility) Alias for LowLevel.py
│ ├── APIError.py # Wrapper for the error return codes of the DLL
│ ├── Hex.py # (Deprecated; included only for backwards compatibility) Hex parsing library
│ ├── HighLevel.py # (Deprecated; included only for backwards compatibility) Wrapper for the nrfjprog highlevel DLL
│ ├── JLink.py # (Deprecated; included only for backwards compatibility) Finds the JLinkARM DLL
│ ├── LowLevel.py # Wrapper for the nrfjprog DLL, previously API.py
│ ├── MultiAPI.py # Allow multiple devices (up to 128) to be programmed simultaneously with a LowLevel API
│ ├── lib_armhf
│ │ └── # armhf nrfjprog libraries
│ ├── lib_x64
│ │ └── # 64-bit nrfjprog libraries
│ ├── lib_x86
│ │ └── # 32-bit nrfjprog libraries
│ ├── docs
│ │ └── # Header files of the nrfjprog DLL to provide in-depth documentation of the functions that are wrapped
│ └── examples
│ └── # Example scripts to show off the different APIs
├── LICENSE
├── README.md
├── requirements.txt
└── pyproject.toml
Getting started
To install the latest release from PyPI:
python -m pip install pynrfjprog
To install from source:
python -m pip install path_to_unzipped_pynrfjprog
Open the Python interpreter and connect nRF device to PC:
from pynrfjprog import LowLevel
with LowLevel.API('NRF52') as api:
api.enum_emu_snr()
api.connect_to_emu_without_snr()
api.erase_all()
api.write_u32(ADDRESS, DATA, IS_FLASH)
api.disconnect_from_emu()
To work with multiple nRF devices at once:
import LowLevel
api = LowLevel.API('NRF52')
api.open()
api2 = LowLevel.API('NRF52')
api2.open()
api3 = LowLevel.API('NRF52')
api3.open()
api.close()
api2.close()
api3.close()
To program firmware into the devices:
from pynrfjprog import LowLevel
with LowLevel.API() as api:
api.program_file(<hex_file>)
# Optional
api.verify_file(<hex_file>)
Contributing
Contributing is encouraged along with the following coding standards.
Metadata
Release files for pynrfjprog 10.24.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pynrfjprog-10.24.2.tar.gz | 47.6 MB | Without provenance | Details for pynrfjprog-10.24.2.tar.gz |
Release files / pynrfjprog-10.24.2.tar.gz
| Download URL | pynrfjprog-10.24.2.tar.gz |
|---|---|
| Size | 47.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0ae6d69d1a1620208422b0eb750d565c6ed7d6ed9b484000c2af0b54c9dac60e
|
|
BLAKE2b-256 checksum How to use checksums |
60ab34a2229895f3e953a7207f85644f4db1618adacee9f1413816ef5c2af56f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.10.12
|
Security for pynrfjprog 10.24.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.