Using Blocks with Linux
Block utilize serial, I2C, SPI or GPIO interfaces. Their capabilities are defined as JSON, stored in on-board 4K EEPROM.
Reading blocks configuration
To access blocks configuration JSON you have to read it from its EEPROM. First module uses address 0x54, second 0x55 aso. Load drivers first:
echo 24c32 0x54 > /sys/bus/i2c/devices/i2c-0/new_device
echo 24c32 0x55 > /sys/bus/i2c/devices/i2c-0/new_device
Dump the EEPROMs content:
cat /sys/bus/i2c/devices/i2c-0/0-0054/eeprom
or process it with jq:
jq . /sys/bus/i2c/devices/i2c-0/0-0054/eeprom
{
"class": "KNX",
"ic": "NCN5130",
"if": "serial",
"uart": "38400@8E1",
"serial": "12345678"
}
Bootloading and resetting blocks
Blocks might support bootloading and reset function depending on their design.
On a NanoPiNeo this funtionallity is accessed by GPIOs. For Slot 1:
Function Slot 1 | GPIO | Block Pin |
---|---|---|
serial port | ttyS1 | 33/34 |
Reset | 201 | 38 |
Bootload | 200 | 37 |
echo 200 > /sys/class/gpio/export
echo 201 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio200/direction
echo 1 > /sys/class/gpio/gpio200/value
echo out > /sys/class/gpio/gpio201/direction
echo 0 > /sys/class/gpio/gpio201/value
echo 1 > /sys/class/gpio/gpio201/value
for Slot 2:
Function Slot 2 | GPIO | Block Pin |
---|---|---|
serial port | ttyS2 | 33/34 |
Reset | 3 | 38 |
Bootload | 2 | 37 |
echo 2 > /sys/class/gpio/export
echo 3 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio2/direction
echo 1 > /sys/class/gpio/gpio2/value
echo out > /sys/class/gpio/gpio3/direction
echo 0 > /sys/class/gpio/gpio3/value
echo 1 > /sys/class/gpio/gpio3/value
TP-UART Block
This is how to use a TP-UART (KNX) interface on i.e. Slot 2 with NanoPiNeo:
knxd -p /run/knxd/knxd.pid -S --eibaddr=1.1.128 -t 65535 -b tpuarts:/dev/ttyS2:38400
There is no additional GPIO support.