Loop Timing Witness
Native controller and runtime interfaces; hardware qualification pending
Toggle main menu visibility
Loading...
Searching...
No Matches
amp_uio_device.h
Go to the documentation of this file.
1
// SPDX-License-Identifier: AGPL-3.0-or-later
2
// Commercial license available
3
// © Concepts 1996–2026 Miroslav Šotek. All rights reserved.
4
// © Code 2020–2026 Miroslav Šotek. All rights reserved.
5
// ORCID: 0009-0009-3560-0851
6
// Contact: www.anulum.li | protoscience@anulum.li
7
// Loop Timing Witness — separate Linux AMP mailbox and fabric ownership
8
12
13
#ifndef WITNESS_AMP_UIO_DEVICE_H
14
#define WITNESS_AMP_UIO_DEVICE_H
15
#include "
uio_device.h
"
16
extern
"C"
{
17
#include "
../bare_metal/amp_contract.h
"
18
}
19
20
namespace
witness {
22
struct
AmpUioMap
{
23
std::uint32_t
index
;
24
std::uint64_t
address
,
bytes
;
25
std::string
name
;
26
};
27
29
class
AmpUioDevice
{
30
int
descriptor = -1;
31
void
*registers =
nullptr
, *telemetry =
nullptr
;
32
std::size_t register_bytes = 0, telemetry_bytes = 0;
33
std::uint64_t shared = 0;
35
void
close()
noexcept
;
37
std::size_t offset(std::uint64_t address)
const
;
38
39
public
:
41
AmpUioDevice
(
const
UioIdentity
&identity,
const
AmpUioMap
&fabric,
const
AmpUioMap
&mailbox);
43
~AmpUioDevice
();
44
AmpUioDevice
(
const
AmpUioDevice
&) =
delete
;
45
AmpUioDevice
&operator=(
const
AmpUioDevice
&) =
delete
;
47
std::uint64_t
time
()
const
;
49
void
advance
(std::uint64_t nanoseconds);
51
ProtocolReply
read
(std::uint8_t address);
53
ProtocolReply
write
(std::uint8_t address, std::uint32_t value, std::uint8_t strobes);
55
std::uint32_t
read_memory32
(std::uint64_t address);
57
void
write_memory32
(std::uint64_t address, std::uint32_t value);
58
};
59
}
// namespace witness
72
73
#endif
amp_contract.h
witness::AmpUioDevice::time
std::uint64_t time() const
witness::AmpUioDevice::write
ProtocolReply write(std::uint8_t address, std::uint32_t value, std::uint8_t strobes)
witness::AmpUioDevice::write_memory32
void write_memory32(std::uint64_t address, std::uint32_t value)
witness::AmpUioDevice::advance
void advance(std::uint64_t nanoseconds)
witness::AmpUioDevice::read
ProtocolReply read(std::uint8_t address)
witness::AmpUioDevice::AmpUioDevice
AmpUioDevice(const UioIdentity &identity, const AmpUioMap &fabric, const AmpUioMap &mailbox)
witness::AmpUioDevice::read_memory32
std::uint32_t read_memory32(std::uint64_t address)
witness::AmpUioDevice::~AmpUioDevice
~AmpUioDevice()
witness::AmpUioMap
Definition
amp_uio_device.h:22
witness::AmpUioMap::index
std::uint32_t index
Definition
amp_uio_device.h:23
witness::AmpUioMap::name
std::string name
Definition
amp_uio_device.h:25
witness::AmpUioMap::bytes
std::uint64_t bytes
Definition
amp_uio_device.h:24
witness::AmpUioMap::address
std::uint64_t address
Definition
amp_uio_device.h:24
witness::ProtocolReply
Definition
process_protocol.h:29
witness::UioIdentity
Definition
uio_device.h:21
uio_device.h
runtime
linux
amp_uio_device.h
Generated by
1.18.0