probe_rs/lib.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
//! # Debugging toolset for embedded devices
//!
//!
//! # Prerequisites
//!
//! - Udev rules
//!
//! # Examples
//!
//!
//! ## Halting the attached chip
//! ```no_run
//! # use probe_rs::Error;
//! use probe_rs::probe::{list::Lister, Probe};
//! use probe_rs::Permissions;
//!
//! // Get a list of all available debug probes.
//! let lister = Lister::new();
//!
//! let probes = lister.list_all();
//!
//! // Use the first probe found.
//! let mut probe = probes[0].open()?;
//!
//! // Attach to a chip.
//! let mut session = probe.attach("nrf52", Permissions::default())?;
//!
//! // Select a core.
//! let mut core = session.core(0)?;
//!
//! // Halt the attached core.
//! core.halt(std::time::Duration::from_millis(10))?;
//! # Ok::<(), Error>(())
//! ```
//!
//! ## Reading from RAM
//!
//! ```no_run
//! # use probe_rs::Error;
//! use probe_rs::{Session, Permissions, MemoryInterface};
//!
//! let mut session = Session::auto_attach("nrf52", Permissions::default())?;
//! let mut core = session.core(0)?;
//!
//! // Read a block of 50 32 bit words.
//! let mut buff = [0u32;50];
//! core.read_32(0x2000_0000, &mut buff)?;
//!
//! // Read a single 32 bit word.
//! let word = core.read_word_32(0x2000_0000)?;
//!
//! // Writing is just as simple.
//! let buff = [0u32;50];
//! core.write_32(0x2000_0000, &buff)?;
//!
//! // of course we can also write 8bit words.
//! let buff = [0u8;50];
//! core.write_8(0x2000_0000, &buff)?;
//!
//! # Ok::<(), Error>(())
//! ```
//!
//! probe-rs is built around 4 main interfaces: the [Probe],
//! [Target], [Session] and [Core] structs.
//!
//! [Probe]: probe::Probe
#![warn(missing_docs)]
#![recursion_limit = "256"] // required by bitfield!
#![cfg_attr(probers_docsrs, feature(doc_cfg))] // Used for docs.rs
pub mod architecture;
pub mod config;
pub mod vendor;
mod core;
#[cfg(feature = "debug")]
#[cfg_attr(probers_docsrs, doc(cfg(feature = "debug")))]
pub mod debug;
mod error;
pub mod flashing;
#[cfg(feature = "gdb-server")]
#[cfg_attr(probers_docsrs, doc(cfg(feature = "gdb-server")))]
pub mod gdb_server;
pub mod integration;
mod memory;
pub mod probe;
pub mod rtt;
pub mod semihosting;
mod session;
#[cfg(test)]
mod test;
pub use crate::config::{CoreType, InstructionSet, Target};
pub use crate::core::{
Architecture, BreakpointCause, Core, CoreInformation, CoreInterface, CoreRegister,
CoreRegisters, CoreState, CoreStatus, HaltReason, MemoryMappedRegister, RegisterId,
RegisterRole, RegisterValue, SpecificCoreState, VectorCatchCondition,
};
pub use crate::error::Error;
pub use crate::memory::MemoryInterface;
pub use crate::session::{Permissions, Session};
#[cfg(feature = "debug")]
pub use crate::core::dump::{CoreDump, CoreDumpError};
#[cfg(feature = "debug")]
pub use crate::debug::exception_handling::exception_handler_for_core;
#[doc = include_str!("../../README.md")]
#[cfg(doctest)]
pub struct ReadmeDoctests;