Hello @tsandrini ,
first of all, we appreciate your effort which confirms us the open-source approach is the best way :-).
To your question:
Yes, you have to apply the appropriate overlay(s) to the "base" device-tree in order to tell the unipi kernel modules what kind of hardware (I/O boards) is present. Every model of the PLC (e.g. S103, L523, ...) has a separate overlay located in the package unipi-os-configurator-data. In a standard OS Image, this stuff is invoked automatically by unipi-os-configurator based on the identification stored in the internal EEPROM (and accessible via unipi-id module - see /run/unipi-plc/unipi-id, this module should be preset on all our units). Typically, this process needs two reboots - after the first of them only unipi-id is loaded in order to get the PLC model and apply the right overlay. After the next reboot, the previously selected overlay is loaded and all of the peripherals (inc. /dev/unipichannel*) should be available.
Anwer is in the previous text - appropriate driver(s) for Unipi-specific hardware are loaded automatically based on the devicetree (devicetree overlay) nodes.
Yes, the /dev/unipichannel* represents the main communication channel between the Linux and I/O boards (the second one is sysfs). This kind of device is created dynamically by the Unipi kernel modules based on values given in devicetree overlays. It is used by unipitcp as well as by the firmware upgrade tool.
Has this answer got you forward?