-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Welcome to the loki wiki!

Creating a new application repository? Start with the Top-Level Project Design Guide.
LOKI (Local Odin 'Kontrol' Instance) is an Embedded Linux control solution comprised of a hardware platform and associated software toolflow. It is serves as an interface between the group's flexible 'odin-control' framework and application-specific hardware. It offers extensive and flexible IO over various widely used interfaces in a compact form factor intended for use in size-constrained detector heads. LOKI has found use both in the early prototyping and test of new ASICs, as well as a final control board in more mature, higher readiness-level systems. The LOKI PCB is a streamlined carrier compatible with a series of System-on-Modules from Trenz (TE080x) which utilise Xilinx ZynqMP UltraScale+ MPSoC FPGAs. These parts combine the high performance, low latency and parallel processing potential brought by FPGA technology with the flexibility and rapid development potential offered by a hard dual/quad-core ARM Cortex A53 Processing System (PS) situated on the same die.
The processing system runs a lightweight Embedded Linux operating system built using Xilinx PetaLinux (Yocto), providing a familiar target environment for software engineers. This setup enables the development of networked control software software in Python, which can operate over not only typical interfaces for embedded single-board computers (such as the BeagleBone or Raspberry Pi) like I2C, SPI and extensive GPIO, but also direct interaction with custom FPGA IP through memory-mapped interfaces. The odin-control software eventually presents a web interface directly from the control board, which can be operated with any machine on the same local network via a browser.
Originally conceptualised as a compact control board for the HEXITEC-MHz spectroscopic X-ray detector, the system evolved into an application-agnostic controller. It maximises access to the capabilities of the SoM as far as possible through its 500-pin main connector, along with some additional hardware devices such as an external temperature monitoring IC / ADC, DAC, and dedicated clock generator. Linux images for the system are produced from FPGA firmware (Xilinx Vivado) through to the control software (built in via PetaLinux) using predominantly shared 'core' content from the standalone LOKI repository, while application-specifics (custom firmware, detector-specific ASIC adapters for odin-control, pinouts) make use of the aforementioned git submodule. The complexity of developing control software for the platform is reduced by pre-installed support for 'odin-control' adapters, and managers for auto-starting control servers as configured by the user.
Trenz TE0803/8 SoM: This is the core of the device, hosting the MPSoC. It is available in a product range of varying cost to allow for efficient purchasing depending on project requirements. Typically, we purchase model 4AE11 (ZU4CG).
- Dual / Quad ARM Cortex A53 application processor @1.3-1.5GHz
- Dual ARM Cortex R5F real-time processor @533-600MHz
- 81k – 747k System Logic Cells (FPGA Fabric)
- 4x PS-GTR MGTs, 4-16x GTH MGTs
LOKI Board Exposes:
- Via main connector (500-pin Samtec SEARAY):
- 112 (single / 56 differential) + 4 (single-ended only) HP IO @1v8
- 6x Dedicated differential clock generator outputs (ZL30266)
- 6x Multi-purpose temperature monitoring / ADC inputs
- 8x Dedicated DAC outputs
- SPI with 3x CSn, 4x I2C buses
- Additional 3v3 / 1v8 IO, clocks etc via 1.27mm Debug headers
- Gigabit Ethernet
- 1x USB 3.0
- 4x User LEDs, 2x User buttons
The LOKI base adapter code is documented with Sphinx. See the ./docs/ directory. See also the maintainer LOKI adapter wiki page.
- Users: Those using LOKI systems at experiments, using pre-built images.
- Developers: Those building control systems with the LOKI platform, developing application-specifics.
- Maintainers: Those modifying the LOKI core project.
| Guide | Users | Developers | Maintainers |
|---|---|---|---|
| Booting, Updating, Debugging and Configuring LOKI Systems | ✔️ | ✔️ | ✔️ |
| Configuring Odin-Control on LOKI Systems | ✔️ | ✔️ | ✔️ |
| System Integration (Pinouts) | ✔️ | ✔️ | ✔️ |
| Application Repository Toplevel Design | ✔️ | ✔️ | |
| LOKI-based Adapter Creation | ✔️ | ✔️ | |
| Creating Live-mounted Debug Virtual Environments | ✔️ | ✔️ | |
| Creating a Yocto Layer for an Application Odin-Control Adapter | ✔️ | ✔️ | |
| Altering the Hardware Design and Device Tree | ✔️ | ✔️ | |
| General Project / PetaLinux / Yocto Tips and Troubleshooting | ✔️ | ✔️ | |
| Upgrading LOKI Kernel version | ✔️ | ||
| LOKI-based Adapter Maintainer Docs | ✔️ | ||
| Yocto / OS Configuration Maintainer Docs | ✔️ |