netpp

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

XML Mind editor snapshot

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

  1. Define functionality (“Properties”)
  2. Write handler code in C (getter/setter)
  3. Run “make”
  4. Test and iterate through (1)
  5. 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