From 4540b8ec982c55ec11d80154d7f93d9c196a7825 Mon Sep 17 00:00:00 2001 From: mwojcik Date: Tue, 27 Jul 2021 14:42:29 +0200 Subject: [PATCH] share identifier_read between runtime and satman --- src/libboard_artiq/src/lib.rs | 15 +++++++++++++++ src/runtime/src/main.rs | 16 +--------------- src/satman/main.rs | 15 +-------------- 3 files changed, 17 insertions(+), 29 deletions(-) diff --git a/src/libboard_artiq/src/lib.rs b/src/libboard_artiq/src/lib.rs index 4e7d9cea..3f87ef6f 100644 --- a/src/libboard_artiq/src/lib.rs +++ b/src/libboard_artiq/src/lib.rs @@ -15,3 +15,18 @@ pub mod drtioaux; pub mod drtio_routing; pub mod si5324; pub mod logger; + +use core::{cmp, str}; + +pub fn identifier_read(buf: &mut [u8]) -> &str { + unsafe { + pl::csr::identifier::address_write(0); + let len = pl::csr::identifier::data_read(); + let len = cmp::min(len, buf.len() as u8); + for i in 0..len { + pl::csr::identifier::address_write(1 + i); + buf[i as usize] = pl::csr::identifier::data_read(); + } + str::from_utf8_unchecked(&buf[..len as usize]) + } +} \ No newline at end of file diff --git a/src/runtime/src/main.rs b/src/runtime/src/main.rs index 9e6a5585..d549d2db 100644 --- a/src/runtime/src/main.rs +++ b/src/runtime/src/main.rs @@ -11,7 +11,6 @@ extern crate alloc; -use core::{cmp, str}; use log::{info, warn, error}; use libboard_zynq::{timer::GlobalTimer, mpcore, gic, slcr}; @@ -23,7 +22,7 @@ use embedded_hal::blocking::delay::DelayMs; use libconfig::Config; use libregister::RegisterW; use libcortex_a9::l2c::enable_l2_cache; -use libboard_artiq::logger; +use libboard_artiq::{logger, identifier_read}; #[cfg(feature = "target_kasli_soc")] use libboard_artiq::si5324; @@ -71,19 +70,6 @@ fn init_gateware() { }); } -fn identifier_read(buf: &mut [u8]) -> &str { - unsafe { - pl::csr::identifier::address_write(0); - let len = pl::csr::identifier::data_read(); - let len = cmp::min(len, buf.len() as u8); - for i in 0..len { - pl::csr::identifier::address_write(1 + i); - buf[i as usize] = pl::csr::identifier::data_read(); - } - str::from_utf8_unchecked(&buf[..len as usize]) - } -} - fn init_rtio(timer: &mut GlobalTimer, cfg: &Config) { let clock_sel = if let Ok(rtioclk) = cfg.read_str("rtioclk") { diff --git a/src/satman/main.rs b/src/satman/main.rs index 54f11932..43a6d586 100644 --- a/src/satman/main.rs +++ b/src/satman/main.rs @@ -10,23 +10,10 @@ use libboard_zynq::timer::GlobalTimer; #[cfg(has_si5324)] use libboard_artiq::si5324; use board_artiq::spi; // <- port?, use libboard_zynq (if spi available/necessary) -use libboard_artiq::{pl::csr, drtio_routing, drtioaux, logger}; +use libboard_artiq::{pl::csr, drtio_routing, drtioaux, logger, identifier_read}; mod repeater; -fn identifier_read(buf: &mut [u8]) -> &str { - unsafe { - csr::identifier::address_write(0); - let len = csr::identifier::data_read(); - let len = cmp::min(len, buf.len() as u8); - for i in 0..len { - csr::identifier::address_write(1 + i); - buf[i as usize] = csr::identifier::data_read(); - } - str::from_utf8_unchecked(&buf[..len as usize]) - } -} - fn drtiosat_reset(reset: bool) { unsafe { csr::drtiosat::reset_write(if reset { 1 } else { 0 });