Skip to content

Releases: stfc-aeg/loki

v1.3.1

08 Jan 16:35
v1.3.1
Compare
Choose a tag to compare

Version 1.3.1

Hotfix: config variables for control adapter from kwargs are now explicitly cast from string default to whatever type they are expected to be, on a variable-by-variable basis.

This has caused issues with various variables that only exhibit when those config variables are later edited. The watchdog has also been made more robust to non-numeric inputs for interval times.

Full Changelog: v1.3.0...v1.3.1

v1.3.0

08 Jan 16:33
v1.3.0
8680214
Compare
Choose a tag to compare

What's Changed

Full Changelog: v1.2.3...v1.3.0

v1.2.3

13 Nov 16:44
v1.2.3
Compare
Choose a tag to compare

Bugfix: errors occurring while context of a mutex is acquired are now handled better such that mutex is freed, resulting in errors being handled without freezing up systems.

Full Changelog: v1.2.2...v1.2.3

v1.2.2

13 Nov 16:43
v1.2.2
376c7e8
Compare
Choose a tag to compare

What's Changed

Full Changelog: v1.2.0...v1.2.2

v1.2.1

15 Aug 13:52
v1.2.1
Compare
Choose a tag to compare

Full Changelog: v1.2.0...v1.2.1

Bugfix, non-breaking: register controller properly handles exceptions raised during managed context when acquired.

v1.2.0

19 Apr 15:59
v1.2.0
535b8ef
Compare
Choose a tag to compare

Init Script Overhaul

Init scripts have been overhauled for a more robust, standardised boot process. This has had a focus on defining predictable behaviour for every detector system and removing the requirement for non-standard boot scripts placed in SD cards varying by system causing confusion. Everything is now central. A particular focus has been placed on ensuring that a machine set up for interfacing with LOKI-based control systems does not require any additional configuration when switching between LOKI control boards, detectors, or even detector types.

  • Persistent files and directories have been moved from flash to eMMC. This is because the SoM is now considered an interchangeable part, and therefore all storage of detector-specifics are stored on the LOKI control PCB itself.
  • Dedicated eMMC bootstrapping script will automatically format and partition the eMMC on first boot, making the first bring-up of a new LOKI board no different to any other boot.
    • This script also bind mounts persistent network interface settings from an eMMC. See networking below.
  • Dedicated system ID recovery script will recover a System ID from the eMMC. This can be programmed manually with the use of a new helper function (see below), but will default to the already unique serial number of the eMMC module.
  • Default configuration directory for odin-control is now in eMMC
  • Dedicated host mounting script will search for a controlling host PC and mount directories from it
    • The host PC IP and export location can be overridden with a file in eMMC
    • The export directory will automatically be separated by application (detector type) name
    • Exact structure, and what is or isn't included is the choice of the host; they create a layout.conf file to specify what is present, and the LOKI system will interpret it
      • If there is no file yet present, an example will be dropped in
    • It is possible to either share configuration with all detectors of the same type, or have separated directories by System ID
      • This can be specified on a per-directory basis
      • For example, one could provide sequences for every HEXITEC-MHz system from a common directory, but have different detectors have different SPI data export directories.
    • The host machine doesn't have to provide anything at all; no export directory will not prevent boot, and will still allow interfacing with the web UI

ECDSA SSH Host Key Support:

  • Dropbear now generates an ECDSA host key alongside the RSA one, which prevents issues connecting from systems refusing to use old ciphers.

Helper Aliases / Functions:

  • Several helper functions have been added to the environment (all starting with loki_) to make common operations easier
    • loki_info prints out some basic information about the application, module, versions
    • loki_set_system_id will set the System ID stored in the eMMC
    • loki_system_id will return the current System ID
    • loki_update_image_flash will program a specified image.ub file into the SoM flash (not typical)
    • loki_update_image_emmc will program a specified image.ub file into the eMMC (reccomended)
    • loki_remount_host will remove and re-mount the control host directories
    • loki_set_static_ip a quick way of writing a config to eMMC that will be picked up by the networking service to add a static address
      • This uses an alias, therefore not preventing DHCP from operating at the same time; good as a fallback
      • This would mean the control host could be a machine without a DHCP server
    • loki_restart_app will restart the odin-control instance
    • loki_stop_app will stop the odin-control instance

Networking Upgrades:

  • DHCP by default, support for static addresses (or anything that could be specified in an interfaces file). See helpers.

What's Changed

Full Changelog: v1.1.1...v1.2.0

v1.1.1

12 Apr 14:47
v1.1.1
0f9ee30
Compare
Choose a tag to compare

What's Changed

  • Increased threads for thread executor pool to account for number currently used
  • Expanded allowed flags for GPIOD lines to include biases (pull-up and pull-down), though this will not be properly supported until kernel is upgraded.
  • The default configuration directory searched is now eMMC rather than flash, which means SoMs can be switched without issue, with the LOKI carrier being the 'detector board'.

Full Changelog: v1.1.0...v1.1.1

v1.1.0

26 Feb 14:36
v1.1.0
21c4df3
Compare
Choose a tag to compare

New Features

  • New Watchdog thread will monitor other threads, meaning they now report failure after getting stuck as well as when actually encountering errors.
    • Each thread can now (optionally) add a watchdog kick period
    • If the kick is not received in time, status will be reported in the parameter tree, log an error and optionally call a custom callback
    • Kicks are made with an easy function call; the function determines the calling task automatically
    • Can be added to user-created threads
    • Has been added to all existing base-class threads
  • LTC2986 temperature monitor is now configured at start-up of carrier class
    • Also provides easy functions to enable a PT100 connected directly to the LOKI board
  • Register Controller updates
    • Now counts failed requests (requests when ASIC is disabled) and reports similarly to the cached / direct stats.
    • Now properly uses a mutex to protect transactions, especially those that are actually comprised of multiple transactions internally (like writing to fields that span multiple registers)

Fixes

  • Fixed conflict between I2S routing and main connnector. I2C was removed from the design.
  • Fixed wrong constraints for backplane / application presence
  • Restored EMIO names returned by gpioinfo to the EMIO numbers
  • Removed more BabyD specifics
  • Removed .petalinux (now an empty directory containing .gitignore) since its contents is just regenerated
  • DAC numbering has been changed (for the v1 board) to be 0-7, matching the designations on the LOKI carrier rather than the specific DAC chip in use. The hardware on-board should not define the use of the standardised outward-facing interface.

What's Changed

Full Changelog: v1.0.1...v1.1.0

v1.0.1

23 Feb 16:42
v1.0.1
14891e9
Compare
Choose a tag to compare

Bumped Versions

  • odin-detector/odin-control from 1.3.0 to 1.5.0
    • Improved shutdown and autoreload
    • This is now utilised by LOKI for cleanly terminating threads

New Features

  • More system performance information added to LOKI adapter with access functions and parameter tree entries for:
    • Memory
    • Uptime
    • Network address and interface speed
    • Disk usage percentage for specific directories. Can be extended, but by default:
      • Flash mtd partition
      • uSD card
      • Exports directory (often mounted external network filesystem)
    • CPU load averages
    • CPU percentage utilisation
    • CPU times (as percentages)
  • Register Controller added: a class used as the parent for ASICs (currently BabyD and HEXITEC-MHz)
    • Allows 'fields' to be defined with clear names, to construct an easily modifiable register map which is made flexible through being passed read/write functions
      • Fields can span multiple registers
      • Fields can be made up of sub-fields in completely different places
    • Customisable word width
    • Caching of registers depending on whether fields are defined as 'volatile' or not. Default assumes all values are volatile and therefore could have changed since last read. This has been shown with most chips under control to replace around 99% of direct transactions with cache accesses instead, which is far more efficient

What's Changed

Full Changelog: v1.0.0...v1.0.1

v1.0.0

29 Jan 09:39
v1.0.0
Compare
Choose a tag to compare

This will be the first version of the 'neoloki' releases, designed for operation primarily on the new LOKI carrier boards produced by STFC. Releases to support the original HEXITEC-MHz will be maintained initially with version numbers <1.0.0, but it is anticipated that this will be replaced with a neoloki-based workflow in due time.

This marks a major migration of project architecture to becoming cross-platform (both for new first revision LOKI SoM carriers as well as later versions, and the original TEBF09808 carrier from Trenz).

In addition, rather than being a control system specifically for HEXITEC-MHz (MERCURY) detectors, this will now be cross-application, designed to operate many detector systems moving forwards. This currently includes:

This will be a quick turn-around release, so that development on multiple projects can move ahead using a fixed tag. Anticipate more releases soon for new architecture documentation etc.

Also note that this project is now built by other repositories that use this as a submodule, and therefore there will be no built images added as assets. In future, there will be a 'base' image built, possibly by this repo, but more likely by another designed to produce bootloading and test images with no particular application system in mind.

Full Changelog: v0.1.4...v1.0.0