GithubHelp home page GithubHelp logo

luwen's Introduction

Luwen

Named after Antonie van Leeuwenhoek who invented the microsope.

Official Repository

https://github.com/tenstorrent/luwen

Design

There are three usecases that I want to support here

  1. High level interface to software tooling allowing all syseng diagnostics collectable via tt-smi and tt-mod to be readback and interacted with as a library.
    • This will only be a high level interface so it will only support pci connections and remote connections via pci
    • Will ignore all details of using communication channels such as which pci tlb or which erisc core to use.
  2. General chip discovery and init, replacing create-ethernet-map and tt-smi wait. We'll probably also add the ability to issue resets.
  3. Low level syseng-only debug capability (via pyluwen)
    • To avoid needing to have multiple in flight stacks you will be able to drop down a level and access the implemented communication apis directly. Practically this means direct access to the types defined in luwen-ref. This means that you can modify pci tlbs and erisc cores being used or cut out the middle man entirely and issue raw calls.

luwen's People

Contributors

dsklavos avatar joelsmithtt avatar jwilde-tenstorrent avatar sbansaltt avatar shlitt avatar ttdrosen avatar warthog9 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

luwen's Issues

Add Prometheus exporter to the basic docs

Add some basic docs on the Prometheus exporter stuff to the basic docs so folks know it's (1) there and (2) how to start it. We should, long term, probably look at adding a proper systemd sample file for getting it started.

temperature data can get into a state where it gets stuck

Potential issue where polling the temperature through tt-smi may end up in a stuck state where temperature stops changing. This is as opposed to tt-kmd's hwmon support which continues to update as expected.

tt-smi: 2.0.1
tt-kmd: 1.27.1
firmware: 80.4.0.0
Distro: Ubuntu 20.04.6 LTS

clippy warnings

    Checking luwen-core v0.1.0 (/home/mannamalai/tt-luwen/crates/luwen-core)
warning: match expression looks like `matches!` macro
  --> crates/luwen-core/src/lib.rs:13:9
   |
13 | /         match self {
14 | |             Arch::Wormhole => true,
15 | |             _ => false,
16 | |         }
   | |_________^ help: try: `matches!(self, Arch::Wormhole)`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro
   = note: `#[warn(clippy::match_like_matches_macro)]` on by default

warning: match expression looks like `matches!` macro
  --> crates/luwen-core/src/lib.rs:20:9
   |
20 | /         match self {
21 | |             Arch::Grayskull => true,
22 | |             _ => false,
23 | |         }
   | |_________^ help: try: `matches!(self, Arch::Grayskull)`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro

warning: `luwen-core` (lib) generated 2 warnings
    Checking indexmap v2.1.0
    Checking generic-array v0.14.7
    Checking crypto-common v0.1.6
    Checking block-buffer v0.10.4
    Checking getrandom v0.2.12
    Checking memmap2 v0.7.1
    Checking console v0.15.8
    Checking nix v0.26.4
    Checking digest v0.10.7
    Checking rand_core v0.6.4
    Checking sha2 v0.10.8
    Checking rand_chacha v0.3.1
    Checking indicatif v0.17.7
    Checking rand v0.8.5
    Checking rust-embed-utils v8.2.0
    Checking rust-embed v8.2.0
    Checking bincode v1.3.3
    Checking serde_yaml v0.9.30
    Checking luwen-if v0.2.0 (/home/mannamalai/tt-luwen/crates/luwen-if)
error[E0786]: found invalid metadata files for crate `thiserror`
 --> crates/luwen-if/src/arc_msg.rs:4:5
  |
4 | use thiserror::Error;
  |     ^^^^^^^^^
  |
  = note: invalid metadata version found: /home/mannamalai/tt-luwen/target/x86_64-unknown-linux-gnu/debug/deps/libthiserror-a5a0af38aea87c50.rmeta

error[E0786]: found invalid metadata files for crate `rust_embed`
 --> crates/luwen-if/src/chip/communication/chip_comms.rs:6:5
  |
6 | use rust_embed::RustEmbed;
  |     ^^^^^^^^^^
  |
  = note: invalid metadata version found: /home/mannamalai/tt-luwen/target/x86_64-unknown-linux-gnu/debug/deps/librust_embed-6db6c2cedd67e2a0.rmeta

error[E0786]: found invalid metadata files for crate `serde`
 --> crates/luwen-if/src/chip/communication/chip_comms.rs:7:5
  |
7 | use serde::{Deserialize, Serialize};
  |     ^^^^^
  |
  = note: invalid metadata version found: /home/mannamalai/tt-luwen/target/x86_64-unknown-linux-gnu/debug/deps/libserde-28caf00614427fa8.rmeta

error[E0786]: found invalid metadata files for crate `thiserror`
 --> crates/luwen-if/src/chip/communication/chip_comms.rs:8:5
  |
8 | use thiserror::Error;
  |     ^^^^^^^^^
  |
  = note: invalid metadata version found: /home/mannamalai/tt-luwen/target/x86_64-unknown-linux-gnu/debug/deps/libthiserror-a5a0af38aea87c50.rmeta

error[E0786]: found invalid metadata files for crate `thiserror`
 --> crates/luwen-if/src/error.rs:7:5
  |
7 | use thiserror::Error;
  |     ^^^^^^^^^
  |
  = note: invalid metadata version found: /home/mannamalai/tt-luwen/target/x86_64-unknown-linux-gnu/debug/deps/libthiserror-a5a0af38aea87c50.rmeta

error: cannot determine resolution for the derive macro `Error`
   --> crates/luwen-if/src/arc_msg.rs:145:10
    |
145 | #[derive(Error, Debug)]
    |          ^^^^^
    |
    = note: import resolution is stuck, try simplifying macro imports

error: cannot find attribute `error` in this scope
   --> crates/luwen-if/src/arc_msg.rs:147:7
    |
147 |     #[error("Message {0} not recognized")]
    |       ^^^^^

error: cannot find attribute `error` in this scope
   --> crates/luwen-if/src/arc_msg.rs:149:7
    |
149 |     #[error("Timed out while waiting {0:?} for ARC to respond")]
    |       ^^^^^

error: cannot find attribute `error` in this scope
   --> crates/luwen-if/src/arc_msg.rs:151:7
    |
151 |     #[error("ARC is asleep")]
    |       ^^^^^

error: cannot find attribute `error` in this scope
   --> crates/luwen-if/src/arc_msg.rs:153:7
    |
153 |     #[error("Failed to trigger FW interrupt")]
    |       ^^^^^

error: cannot find attribute `error` in this scope
   --> crates/luwen-if/src/arc_msg.rs:155:7
    |
155 |     #[error("Mailbox {0} is invalid")]
    |       ^^^^^

error: cannot determine resolution for the derive macro `Error`
   --> crates/luwen-if/src/arc_msg.rs:169:10
    |
169 | #[derive(Error, Debug)]
    |          ^^^^^
    |
    = note: import resolution is stuck, try simplifying macro imports

error: cannot find attribute `error` in this scope
   --> crates/luwen-if/src/arc_msg.rs:171:7
    |
171 |     #[error("{source}\n{backtrace}")]
    |       ^^^^^

error: cannot find attribute `error` in this scope
   --> crates/luwen-if/src/arc_msg.rs:177:7
    |
177 |     #[error(transparent)]
    |       ^^^^^

error: cannot find attribute `from` in this scope
   --> crates/luwen-if/src/arc_msg.rs:178:16
    |
178 |     AxiError(#[from] AxiError),
    |                ^^^^

error: cannot determine resolution for the derive macro `Error`
  --> crates/luwen-if/src/chip/communication/chip_comms.rs:12:10
   |
12 | #[derive(Error, Debug)]
   |          ^^^^^
   |
   = note: import resolution is stuck, try simplifying macro imports

error: cannot find attribute `error` in this scope
  --> crates/luwen-if/src/chip/communication/chip_comms.rs:14:7
   |
14 |     #[error("Invalid path: {key} specifically was not able to find {path}")]
   |       ^^^^^

error: cannot find attribute `error` in this scope
  --> crates/luwen-if/src/chip/communication/chip_comms.rs:17:7
   |
17 |     #[error("Invalid path: {key} specifically was not able to parse {path} as an array def.")]
   |       ^^^^^

error: cannot find attribute `error` in this scope
  --> crates/luwen-if/src/chip/communication/chip_comms.rs:20:7
   |
20 |     #[error("No AXI data table loaded")]
   |       ^^^^^

error: cannot find attribute `error` in this scope
  --> crates/luwen-if/src/chip/communication/chip_comms.rs:23:7
   |
23 |     #[error("The readbuffer is not large enough to hold the requested data")]
   |       ^^^^^

error: cannot find attribute `error` in this scope
  --> crates/luwen-if/src/chip/communication/chip_comms.rs:26:7
   |
26 |     #[error("The writebuffer is not the same size as the requested field")]
   |       ^^^^^

error: cannot determine resolution for the derive macro `Serialize`
  --> crates/luwen-if/src/chip/communication/chip_comms.rs:30:24
   |
30 | #[derive(Clone, Debug, Serialize, Deserialize)]
   |                        ^^^^^^^^^
   |
   = note: import resolution is stuck, try simplifying macro imports

error: cannot determine resolution for the derive macro `Deserialize`
  --> crates/luwen-if/src/chip/communication/chip_comms.rs:30:35
   |
30 | #[derive(Clone, Debug, Serialize, Deserialize)]
   |                                   ^^^^^^^^^^^
   |
   = note: import resolution is stuck, try simplifying macro imports

error: cannot determine resolution for the derive macro `Deserialize`
  --> crates/luwen-if/src/chip/communication/chip_comms.rs:37:17
   |
37 | #[derive(Debug, Deserialize, Serialize)]
   |                 ^^^^^^^^^^^
   |
   = note: import resolution is stuck, try simplifying macro imports

error: cannot determine resolution for the derive macro `Serialize`
  --> crates/luwen-if/src/chip/communication/chip_comms.rs:37:30
   |
37 | #[derive(Debug, Deserialize, Serialize)]
   |                              ^^^^^^^^^
   |
   = note: import resolution is stuck, try simplifying macro imports

error: cannot determine resolution for the derive macro `Serialize`
  --> crates/luwen-if/src/chip/communication/chip_comms.rs:47:10
   |
47 | #[derive(Serialize, Deserialize)]
   |          ^^^^^^^^^
   |
   = note: import resolution is stuck, try simplifying macro imports

error: cannot determine resolution for the derive macro `Deserialize`
  --> crates/luwen-if/src/chip/communication/chip_comms.rs:47:21
   |
47 | #[derive(Serialize, Deserialize)]
   |                     ^^^^^^^^^^^
   |
   = note: import resolution is stuck, try simplifying macro imports

error: cannot determine resolution for the derive macro `RustEmbed`
  --> crates/luwen-if/src/chip/communication/chip_comms.rs:53:10
   |
53 | #[derive(RustEmbed)]
   |          ^^^^^^^^^
   |
   = note: import resolution is stuck, try simplifying macro imports

error: cannot find attribute `folder` in this scope
  --> crates/luwen-if/src/chip/communication/chip_comms.rs:54:3
   |
54 | #[folder = "../../axi-data"]
   |   ^^^^^^

error: cannot determine resolution for the derive macro `Error`
  --> crates/luwen-if/src/error.rs:28:10
   |
28 | #[derive(Error, Debug)]
   |          ^^^^^
   |
   = note: import resolution is stuck, try simplifying macro imports

error: cannot find attribute `error` in this scope
  --> crates/luwen-if/src/error.rs:30:7
   |
30 |     #[error("Tried to initialize chip with the wrong architecture, expected {expected:?} but got {actual:?}\n{b...
   |       ^^^^^

error: cannot find attribute `error` in this scope
  --> crates/luwen-if/src/error.rs:37:7
   |
37 |     #[error("Unsupported fw version, got {version:x} but required {required:x}")]
   |       ^^^^^

error: cannot find attribute `error` in this scope
  --> crates/luwen-if/src/error.rs:40:7
   |
40 |     #[error("It is not currently safe to communicate with ARC because, {0}")]
   |       ^^^^^

error: cannot find attribute `error` in this scope
  --> crates/luwen-if/src/error.rs:43:7
   |
43 |     #[error(transparent)]
   |       ^^^^^

error: cannot find attribute `from` in this scope
  --> crates/luwen-if/src/error.rs:44:19
   |
44 |     ArcMsgError(#[from] ArcMsgError),
   |                   ^^^^

error: cannot find attribute `error` in this scope
  --> crates/luwen-if/src/error.rs:46:7
   |
46 |     #[error("Ethernet training not complete on {} ports", .0.iter().copied().filter(|v| *v).count())]
   |       ^^^^^

error: cannot find attribute `error` in this scope
  --> crates/luwen-if/src/error.rs:49:7
   |
49 |     #[error(transparent)]
   |       ^^^^^

error: cannot find attribute `from` in this scope
  --> crates/luwen-if/src/error.rs:50:16
   |
50 |     AxiError(#[from] crate::chip::AxiError),
   |                ^^^^

error: cannot find attribute `error` in this scope
  --> crates/luwen-if/src/error.rs:52:7
   |
52 |     #[error("{0}\n{1}")]
   |       ^^^^^

error: cannot find attribute `error` in this scope
  --> crates/luwen-if/src/error.rs:55:7
   |
55 |     #[error("{0}\n{1}")]
   |       ^^^^^

error[E0786]: found invalid metadata files for crate `bincode`
  --> crates/luwen-if/src/chip/communication/chip_comms.rs:59:5
   |
59 |     bincode::deserialize(&data.data).unwrap()
   |     ^^^^^^^
   |
   = note: invalid metadata version found: /home/mannamalai/tt-luwen/target/x86_64-unknown-linux-gnu/debug/deps/libbincode-11a36dc6da94a884.rmeta

error[E0277]: `?` couldn't convert the error to `error::PlatformError`
   --> crates/luwen-if/src/arc_msg.rs:237:57
    |
228 | ) -> Result<ArcMsgOk, PlatformError> {
    |      ------------------------------- expected `error::PlatformError` because of this
...
237 |         Err(ArcMsgProtocolError::ArcAsleep.into_error())?;
    |                                                         ^ the trait `std::convert::From<arc_msg::ArcMsgError>` is not implemented for `error::PlatformError`
    |
    = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
    = help: the trait `std::convert::From<std::boxed::Box<(dyn std::error::Error + 'static)>>` is implemented for `error::PlatformError`
    = help: for that trait implementation, expected `std::boxed::Box<(dyn std::error::Error + 'static)>`, found `arc_msg::ArcMsgError`
    = note: required for `std::result::Result<arc_msg::ArcMsgOk, error::PlatformError>` to implement `std::ops::FromResidual<std::result::Result<std::convert::Infallible, arc_msg::ArcMsgError>>`

error[E0277]: `?` couldn't convert the error to `error::PlatformError`
   --> crates/luwen-if/src/arc_msg.rs:248:59
    |
228 | ) -> Result<ArcMsgOk, PlatformError> {
    |      ------------------------------- expected `error::PlatformError` because of this
...
248 |         Err(ArcMsgProtocolError::FwIntFailed.into_error())?;
    |                                                           ^ the trait `std::convert::From<arc_msg::ArcMsgError>` is not implemented for `error::PlatformError`
    |
    = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
    = help: the trait `std::convert::From<std::boxed::Box<(dyn std::error::Error + 'static)>>` is implemented for `error::PlatformError`
    = help: for that trait implementation, expected `std::boxed::Box<(dyn std::error::Error + 'static)>`, found `arc_msg::ArcMsgError`
    = note: required for `std::result::Result<arc_msg::ArcMsgOk, error::PlatformError>` to implement `std::ops::FromResidual<std::result::Result<std::convert::Infallible, arc_msg::ArcMsgError>>`

error[E0277]: `?` couldn't convert the error to `error::PlatformError`
   --> crates/luwen-if/src/arc_msg.rs:261:78
    |
228 | ) -> Result<ArcMsgOk, PlatformError> {
    |      ------------------------------- expected `error::PlatformError` because of this
...
261 |                 Err(ArcMsgProtocolError::MsgNotRecognized(code).into_error())?;
    |                                                                              ^ the trait `std::convert::From<arc_msg::ArcMsgError>` is not implemented for `error::PlatformError`
    |
    = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
    = help: the trait `std::convert::From<std::boxed::Box<(dyn std::error::Error + 'static)>>` is implemented for `error::PlatformError`
    = help: for that trait implementation, expected `std::boxed::Box<(dyn std::error::Error + 'static)>`, found `arc_msg::ArcMsgError`
    = note: required for `std::result::Result<arc_msg::ArcMsgOk, error::PlatformError>` to implement `std::ops::FromResidual<std::result::Result<std::convert::Infallible, arc_msg::ArcMsgError>>`

error[E0277]: `?` couldn't convert the error to `error::PlatformError`
   --> crates/luwen-if/src/arc_msg.rs:266:72
    |
228 | ) -> Result<ArcMsgOk, PlatformError> {
    |      ------------------------------- expected `error::PlatformError` because of this
...
266 |                 Err(ArcMsgProtocolError::Timeout(timeout).into_error())?;
    |                                                                        ^ the trait `std::convert::From<arc_msg::ArcMsgError>` is not implemented for `error::PlatformError`
    |
    = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
    = help: the trait `std::convert::From<std::boxed::Box<(dyn std::error::Error + 'static)>>` is implemented for `error::PlatformError`
    = help: for that trait implementation, expected `std::boxed::Box<(dyn std::error::Error + 'static)>`, found `arc_msg::ArcMsgError`
    = note: required for `std::result::Result<arc_msg::ArcMsgOk, error::PlatformError>` to implement `std::ops::FromResidual<std::result::Result<std::convert::Infallible, arc_msg::ArcMsgError>>`

error[E0599]: no function or associated item named `get` found for struct `chip::communication::chip_comms::WHPciData` in the current scope
  --> crates/luwen-if/src/chip/communication/chip_comms.rs:58:27
   |
55 | struct WHPciData;
   | ---------------- function or associated item `get` not found for this struct
...
58 |     let data = WHPciData::get(file).unwrap();
   |                           ^^^ function or associated item not found in `WHPciData`
   |
   = help: items from traits can only be used if the trait is implemented and in scope
   = note: the following trait defines an item `get`, perhaps you need to implement it:
           candidate #1: `std::slice::SliceIndex`

error[E0277]: the trait bound `chip::communication::chip_comms::AxiError: std::error::Error` is not satisfied
   --> crates/luwen-if/src/chip/communication/chip_comms.rs:172:53
    |
172 |         let addr = self.axi_translate(addr.as_ref())?.addr;
    |                                                     ^ the trait `std::error::Error` is not implemented for `chip::communication::chip_comms::AxiError`
    |
    = help: the following other types implement trait `std::ops::FromResidual<R>`:
              <std::result::Result<T, F> as std::ops::FromResidual<std::ops::Yeet<E>>>
              <std::result::Result<T, F> as std::ops::FromResidual<std::result::Result<std::convert::Infallible, E>>>
    = note: required for `std::boxed::Box<dyn std::error::Error>` to implement `std::convert::From<chip::communication::chip_comms::AxiError>`
    = note: required for `std::result::Result<u32, std::boxed::Box<dyn std::error::Error>>` to implement `std::ops::FromResidual<std::result::Result<std::convert::Infallible, chip::communication::chip_comms::AxiError>>`

error[E0277]: the trait bound `chip::communication::chip_comms::AxiError: std::error::Error` is not satisfied
   --> crates/luwen-if/src/chip/communication/chip_comms.rs:185:53
    |
185 |         let addr = self.axi_translate(addr.as_ref())?.addr;
    |                                                     ^ the trait `std::error::Error` is not implemented for `chip::communication::chip_comms::AxiError`
    |
    = help: the following other types implement trait `std::ops::FromResidual<R>`:
              <std::result::Result<T, F> as std::ops::FromResidual<std::ops::Yeet<E>>>
              <std::result::Result<T, F> as std::ops::FromResidual<std::result::Result<std::convert::Infallible, E>>>
    = note: required for `std::boxed::Box<dyn std::error::Error>` to implement `std::convert::From<chip::communication::chip_comms::AxiError>`
    = note: required for `std::result::Result<(), std::boxed::Box<dyn std::error::Error>>` to implement `std::ops::FromResidual<std::result::Result<std::convert::Infallible, chip::communication::chip_comms::AxiError>>`

error[E0277]: `?` couldn't convert the error to `error::PlatformError`
  --> crates/luwen-if/src/chip/creation.rs:36:83
   |
36 |                 arc_addrs: ArcMsgAddr::try_from(arc_if.as_ref() as &dyn ChipComms)?,
   |                                                                                   ^ the trait `std::convert::From<chip::communication::chip_comms::AxiError>` is not implemented for `error::PlatformError`
   |
   = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
   = help: the trait `std::convert::From<std::boxed::Box<(dyn std::error::Error + 'static)>>` is implemented for `error::PlatformError`
   = help: for that trait implementation, expected `std::boxed::Box<(dyn std::error::Error + 'static)>`, found `chip::communication::chip_comms::AxiError`
   = note: required for `std::result::Result<chip::grayskull::Grayskull, error::PlatformError>` to implement `std::ops::FromResidual<std::result::Result<std::convert::Infallible, chip::communication::chip_comms::AxiError>>`

error[E0277]: `?` couldn't convert the error to `error::PlatformError`
   --> crates/luwen-if/src/chip/grayskull.rs:237:76
    |
237 |             return Err(ArcMsgProtocolError::InvalidMailbox(2).into_error())?;
    |                                                                            ^ the trait `std::convert::From<arc_msg::ArcMsgError>` is not implemented for `error::PlatformError`
    |
    = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
    = help: the trait `std::convert::From<std::boxed::Box<(dyn std::error::Error + 'static)>>` is implemented for `error::PlatformError`
    = help: for that trait implementation, expected `std::boxed::Box<(dyn std::error::Error + 'static)>`, found `arc_msg::ArcMsgError`
    = note: required for `std::result::Result<arc_msg::ArcMsgOk, error::PlatformError>` to implement `std::ops::FromResidual<std::result::Result<std::convert::Infallible, arc_msg::ArcMsgError>>`

error[E0277]: `?` couldn't convert the error to `error::PlatformError`
   --> crates/luwen-if/src/chip/grayskull.rs:294:70
    |
294 |         let csm_offset = self.arc_if.axi_translate("ARC_CSM.DATA[0]")?;
    |                                                                      ^ the trait `std::convert::From<chip::communication::chip_comms::AxiError>` is not implemented for `error::PlatformError`
    |
    = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
    = help: the trait `std::convert::From<std::boxed::Box<(dyn std::error::Error + 'static)>>` is implemented for `error::PlatformError`
    = help: for that trait implementation, expected `std::boxed::Box<(dyn std::error::Error + 'static)>`, found `chip::communication::chip_comms::AxiError`
    = note: required for `std::result::Result<chip::Telemetry, error::PlatformError>` to implement `std::ops::FromResidual<std::result::Result<std::convert::Infallible, chip::communication::chip_comms::AxiError>>`

error[E0277]: `?` couldn't convert the error to `error::PlatformError`
   --> crates/luwen-if/src/chip/hl_comms.rs:118:46
    |
118 |         let addr = arc_if.axi_translate(addr)?;
    |                                              ^ the trait `std::convert::From<chip::communication::chip_comms::AxiError>` is not implemented for `error::PlatformError`
    |
    = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
    = help: the trait `std::convert::From<std::boxed::Box<(dyn std::error::Error + 'static)>>` is implemented for `error::PlatformError`
    = help: for that trait implementation, expected `std::boxed::Box<(dyn std::error::Error + 'static)>`, found `chip::communication::chip_comms::AxiError`
    = note: required for `std::result::Result<&[u8], error::PlatformError>` to implement `std::ops::FromResidual<std::result::Result<std::convert::Infallible, chip::communication::chip_comms::AxiError>>`

error[E0277]: `?` couldn't convert the error to `error::PlatformError`
   --> crates/luwen-if/src/chip/hl_comms.rs:121:53
    |
121 |             return Err(AxiError::ReadBufferTooSmall)?;
    |                                                     ^ the trait `std::convert::From<chip::communication::chip_comms::AxiError>` is not implemented for `error::PlatformError`
    |
    = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
    = help: the trait `std::convert::From<std::boxed::Box<(dyn std::error::Error + 'static)>>` is implemented for `error::PlatformError`
    = help: for that trait implementation, expected `std::boxed::Box<(dyn std::error::Error + 'static)>`, found `chip::communication::chip_comms::AxiError`
    = note: required for `std::result::Result<&[u8], error::PlatformError>` to implement `std::ops::FromResidual<std::result::Result<std::convert::Infallible, chip::communication::chip_comms::AxiError>>`

error[E0277]: `?` couldn't convert the error to `error::PlatformError`
   --> crates/luwen-if/src/chip/hl_comms.rs:134:46
    |
134 |         let addr = arc_if.axi_translate(addr)?;
    |                                              ^ the trait `std::convert::From<chip::communication::chip_comms::AxiError>` is not implemented for `error::PlatformError`
    |
    = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
    = help: the trait `std::convert::From<std::boxed::Box<(dyn std::error::Error + 'static)>>` is implemented for `error::PlatformError`
    = help: for that trait implementation, expected `std::boxed::Box<(dyn std::error::Error + 'static)>`, found `chip::communication::chip_comms::AxiError`
    = note: required for `std::result::Result<std::vec::Vec<u8>, error::PlatformError>` to implement `std::ops::FromResidual<std::result::Result<std::convert::Infallible, chip::communication::chip_comms::AxiError>>`

error[E0277]: `?` couldn't convert the error to `error::PlatformError`
   --> crates/luwen-if/src/chip/hl_comms.rs:156:55
    |
156 |         let addr = arc_if.axi_translate(addr.as_ref())?;
    |                                                       ^ the trait `std::convert::From<chip::communication::chip_comms::AxiError>` is not implemented for `error::PlatformError`
    |
    = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
    = help: the trait `std::convert::From<std::boxed::Box<(dyn std::error::Error + 'static)>>` is implemented for `error::PlatformError`
    = help: for that trait implementation, expected `std::boxed::Box<(dyn std::error::Error + 'static)>`, found `chip::communication::chip_comms::AxiError`
    = note: required for `std::result::Result<(), error::PlatformError>` to implement `std::ops::FromResidual<std::result::Result<std::convert::Infallible, chip::communication::chip_comms::AxiError>>`

error[E0277]: `?` couldn't convert the error to `error::PlatformError`
   --> crates/luwen-if/src/chip/hl_comms.rs:159:54
    |
159 |             return Err(AxiError::WriteBufferMismatch)?;
    |                                                      ^ the trait `std::convert::From<chip::communication::chip_comms::AxiError>` is not implemented for `error::PlatformError`
    |
    = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
    = help: the trait `std::convert::From<std::boxed::Box<(dyn std::error::Error + 'static)>>` is implemented for `error::PlatformError`
    = help: for that trait implementation, expected `std::boxed::Box<(dyn std::error::Error + 'static)>`, found `chip::communication::chip_comms::AxiError`
    = note: required for `std::result::Result<(), error::PlatformError>` to implement `std::ops::FromResidual<std::result::Result<std::convert::Infallible, chip::communication::chip_comms::AxiError>>`

error[E0277]: `?` couldn't convert the error to `error::PlatformError`
  --> crates/luwen-if/src/chip/wormhole.rs:75:71
   |
75 |             arc_addrs: ArcMsgAddr::try_from(&arc_if as &dyn ChipComms)?,
   |                                                                       ^ the trait `std::convert::From<chip::communication::chip_comms::AxiError>` is not implemented for `error::PlatformError`
   |
   = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
   = help: the trait `std::convert::From<std::boxed::Box<(dyn std::error::Error + 'static)>>` is implemented for `error::PlatformError`
   = help: for that trait implementation, expected `std::boxed::Box<(dyn std::error::Error + 'static)>`, found `chip::communication::chip_comms::AxiError`
   = note: required for `std::result::Result<chip::wormhole::Wormhole, error::PlatformError>` to implement `std::ops::FromResidual<std::result::Result<std::convert::Infallible, chip::communication::chip_comms::AxiError>>`

error[E0277]: `?` couldn't convert the error to `error::PlatformError`
   --> crates/luwen-if/src/chip/wormhole.rs:415:70
    |
415 |         let csm_offset = self.arc_if.axi_translate("ARC_CSM.DATA[0]")?;
    |                                                                      ^ the trait `std::convert::From<chip::communication::chip_comms::AxiError>` is not implemented for `error::PlatformError`
    |
    = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
    = help: the trait `std::convert::From<std::boxed::Box<(dyn std::error::Error + 'static)>>` is implemented for `error::PlatformError`
    = help: for that trait implementation, expected `std::boxed::Box<(dyn std::error::Error + 'static)>`, found `chip::communication::chip_comms::AxiError`
    = note: required for `std::result::Result<chip::Telemetry, error::PlatformError>` to implement `std::ops::FromResidual<std::result::Result<std::convert::Infallible, chip::communication::chip_comms::AxiError>>`

Some errors have detailed explanations: E0277, E0599, E0786.
For more information about an error, try `rustc --explain E0277`.
error: could not compile `luwen-if` (lib) due to 58 previous errors
warning: build failed, waiting for other jobs to finish...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.