Remote control – the easy way
Current source checkout for the impatient developer:
git clone https://gitlab.com/hackfin/netpp
netpp (network property protocol) simplifies the development of remote control or measurement applications significantly. Originally, it was introduced as slim abstraction layer for register based protocols (which are still fully supported). It has grown into a software library which allows rapid and robust development of device control applications. Devices are described using an XML dialect using a graphical editor. You, as the user start top-bottom: You define first what the device should do – the functional way. Then you connect it to the hardware.
This description is then compiled into software, hardware and documentation (register reference).
For example, parameters such as register bits or commands are specified as ‘Properties’ and are mapped to the corresponding hardware entity. So you can for instance map an i2c register into an abstract property called ‘Temperature’.
Functionally, you then address an outdoor IoT thermometer like:
t = outdoor.Temperature.get()
XML editing
The XML editing can happen according to a graphical scheme, as shown above. We recommend to use the XML Mind XML Editor (XXE) with integrated XSD schema validation.
Work flow
- Define functionality (“Properties”)
- Write handler code in C (getter/setter)
- Run “make”
- Test and iterate through (1)
- Generate documentation and reference manual sections
Using simple intrinsic mechanisms for revision control, software, hardware and documentation are kept in sync. No more mistakes in developer team communication!
Reference applications
- Supply of various device classes with one single uniform firmware and remote control client
- Hardware definition of ASIC/FPGA registers and C driver source (see also IP cores). Yes, like IP-XACT, but leaner (Translation possible).
- Hardware-Co-Simulation (model in the loop)
- Smart Sensors (IoT), netpp on FPGA
- Eval-Kit netpp node with various analog back-end option for scalable network based real time measurement
Industrial reference projects
- Medical diagnostics: image acquisition
- Multi channel audio control and processing
- Bulk firmware programming for mass production
- Smart sensors for safety relevant power grid optimizations
- Highly scalable process control / test & measurement (>100 slaves)
Details
The netpp slave library code is very compact. Besides startup code (crt0.o) and hardware drivers no excessive program logic is required for a bare metal remote control OS.
Examples for ‘-Os’ optimized code:
Architecture | Size |
---|---|
avr8 | 24kB |
RISC-V ‘rv32i’ | 36kB |
RISC-V Compressed ‘rv32ic’ | 29kB |
ARM v5 thumb | 22kB |
ZPU (FPGA SoC) | 19kB |
msp430 | 17kB |
Resources
- Download Windows client: [ quick start instructions ]
Make sure to install Python 2.7 first: [ Python 2.7.13 release for win32 ]
[sdm_download id=”1349″ fancy=”1″] - Inofficial Debian packages for ‘buster’:
deb https://section5.ch/debian buster non-free
You may also want to look at the up to date development releases of:
- The development environment as docker container: hackfin/masocist
- netpp HOWTO: [sdm_download id=”1350″ fancy=”1″]
- Misc information: [ Further netpp notes and updates ]
- Work in progress: netpp 0.5 is being ‘cleaned up’ for official OpenSource release. Repository:
https://gitlab.com/hackfin/netpp