Overview
System
Crosscompiler
- GCC version 6.3
- G++ Support
Kernel
- Customized Version 4.16.0
- Ported fpga manager and bridge drivers
Filesystem
|– root
| |– H2F_Client
| `– MAC_Changer
|– home
| |– root
| | |– LogAna.rbf
| | |– interrupt_module.ko
| | |– log_ana_module.ko
| | |– protocols
| | | |– uart.conf
| | | `– uart.py
| | `– update #Update directory
| `– holoscope
| `– version
`– var
`– www #Website directory
MAC Changer
During the boot process the ethernet PHY is configured with a MAC address stored within the environment variables of uboot. Therefore every board has the same MAC address and also the same IP address. For that reason the “MAC Changer” application sets a new MAC address dependent on the FPGA chip ID.
Interrupt Handling
The FPGA asserts an interrupt if the measurement is finished. The kernel module “interrupt_module.ko” handles that interrupt and uses file operations to notify the client application. The client application uses a blocking read function within an independent thread. This function blocks until an interrupt has occurred and the kernel module complete the function call.
H2F Client
The application “H2F Client” connects the frontend with the FPGA.
Webserver (mongoose)
The mongoose webserver is used to provide a REST api for the frontend. All requests are processed within a thread.
Websocketserver (custom build)
To send the sampled data asynchronously to the client the websocket protocol is used. The interrupt handling runs within a different thread context and this results in unpredictably behaviour inside the mongoose webserver. That was the reason to create a thread-safe custom websocket server implemantation.
RAM – Memory Mapped Access
The sampled data is stored in the common used RAM. The full memory space is memory mapped and accessible by the application.