probe_rs/vendor/nordicsemi/sequences/
nrf53.rsuse std::sync::Arc;
use super::nrf::Nrf;
use crate::architecture::arm::{
ap::memory_ap::registers::CSW, sequences::ArmDebugSequence, ArmError, ArmProbeInterface,
DpAddress, FullyQualifiedApAddress,
};
#[derive(Debug)]
pub struct Nrf5340(());
impl Nrf5340 {
pub fn create() -> Arc<dyn ArmDebugSequence> {
Arc::new(Self(()))
}
}
impl Nrf for Nrf5340 {
fn core_aps(
&self,
dp_address: &DpAddress,
) -> Vec<(FullyQualifiedApAddress, FullyQualifiedApAddress)> {
let core_aps = [(0, 2), (1, 3)];
core_aps
.into_iter()
.map(|(core_ahb_ap, core_ctrl_ap)| {
(
FullyQualifiedApAddress::v1_with_dp(*dp_address, core_ahb_ap),
FullyQualifiedApAddress::v1_with_dp(*dp_address, core_ctrl_ap),
)
})
.collect()
}
fn is_core_unlocked(
&self,
arm_interface: &mut dyn ArmProbeInterface,
ahb_ap_address: &FullyQualifiedApAddress,
_ctrl_ap_address: &FullyQualifiedApAddress,
) -> Result<bool, ArmError> {
let csw: CSW = arm_interface
.read_raw_ap_register(ahb_ap_address, 0x00)?
.try_into()?;
Ok(csw.DeviceEn)
}
fn has_network_core(&self) -> bool {
true
}
}