Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| software:flink:flink_linux [2015-02-05 10:34] – graf | software:flink:flink_linux [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== flink Linux Kernel Modules ====== | ||
| - | <box blue right 38% | **Downloads**> | ||
| - | * [[https:// | ||
| - | </ | ||
| - | |||
| - | This is the user documentation for the flink kernel modules. They offer drivers capabilities to communicate with various hardware interfaces. For more information about the inner workings see [[https:// | ||
| - | |||
| - | ===== Overview ===== | ||
| - | When flink is used on a Linux based system the flink library in userspace communicates with the hardware by means of several kernel modules. The basic module is '' | ||
| - | |||
| - | ===== Requirements ===== | ||
| - | * Linux based operating system | ||
| - | * GCC 4.6 or newer | ||
| - | * GNU make | ||
| - | |||
| - | ===== Building ===== | ||
| - | * Clone git repository: < | ||
| - | * Choose the target plattform and find its appropriate kernel configuration together with the kernel headers. Find more help about this in [[https:// | ||
| - | * Build for the host plattform with: < | ||
| - | * Build for a plattform different from the host with: < | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * The makefile will switch to the kernel directory, read the current configuration and compile all necessary flink kernel modules for the choosen target plattform. | ||
| - | * Use '' | ||
| - | |||
| - | ===== Installation ===== | ||
| - | * Move new kernel modules into the default location to ''/ | ||
| - | * Load each module with '' | ||
| - | * If dependency files were created beforehand its better to use < | ||
| - | * Some kernel module must be loaded with the appropriate arguments according to the target board specifications (see below) | ||
| - | |||
| - | ===== Module Parameters ===== | ||
| - | Determine the availabe parameters for each kernel module with the command '' | ||
| - | ^ module ^ parameters ^ description ^ example ^ | ||
| - | | flink.ko | | core module | | | ||
| - | | flink_pci.ko | vendor id, product id| for pci interface | flink_pci vid=0x1172 (Altera) pid=4 | | ||
| - | | flink_spi.ko | device memory length (see below) | for spi interface | flink_spi dev_mem_length=0x280 | | ||
| - | | mpc5200/ | ||
| - | |||
| - | Busses like //PCI// have discoverability built into them. Any device connected to such a bus can tell the system, what kind of device it is and what resources it uses. On the //SPI// this is not possible. Therefore, you must provide the total device memory length when loading the module. This length is determined by the number and types of the subdevices implemented in VHDL, see [[software: | ||
| - | |||
| - | ===== Performance ===== | ||
| - | When parallel busses such as PCI or LocalPlusBus are used, any flink transfer happens very quickly and basically depends on the speed of the bus and the FPGA. Care has to be taken when using the SPI interface. The standard SPI subsystem in a standard Linux distribution uses an internal queueing mechanism which is rather slow. Subsequent transfers of a message are separated by approximately 70μs. Further, every flink read or write includes a 8 byte transfer (address and data phase). Though SPI allows for full duplex transfers this feature cannot be used here.\\ | ||
| - | IMPORTANT When using SPI timing considerations become crucial. As a rule of thumb: Every flink transfer (such as updating a PWM high time or reading a encoder value takes up to 200μs. SPI should be used for low-frequency control application with not too many parallel channels. | ||