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
//! # Debugging toolset for embedded devices //! //! //! # Prerequisites //! //! - Udev rules //! - libusb //! //! # Examples //! //! //! ## Halting the attached chip //! ```no_run //! # use probe_rs::Error; //! use probe_rs::Probe; //! //! // Get a list of all available debug probes. //! let probes = Probe::list_all(); //! //! // Use the first probe found. //! let probe = probes[0].open()?; //! //! // Attach to a chip. //! let session = probe.attach("nrf52")?; //! //! // Select a core. //! let core = session.attach_to_core(0)?; //! //! // Halt the attached core. //! core.halt()?; //! # Ok::<(), Error>(()) //! ``` //! //! ## Reading from RAM //! //! ```no_run //! # use probe_rs::Error; //! use probe_rs::Core; //! let core = Core::auto_attach("nrf52")?; //! //! // 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 5 main interfaces: the [Probe](./struct.Probe.html), //! [Target](./struct.Target.html), [Session](./struct.Session.html), [Memory](./struct.Memory.html) and [Core](./struct.Core.html) strucs. #![allow(clippy::useless_let_if_seq)] #![allow(clippy::trivially_copy_pass_by_ref)] #![allow(clippy::implicit_hasher)] #![allow(clippy::verbose_bit_mask)] #[macro_use] extern crate serde; pub mod architecture; pub mod config; mod core; pub mod debug; mod error; pub mod flashing; mod memory; mod probe; mod session; pub use crate::config::Target; pub use crate::core::CoreType; pub use crate::core::{ Breakpoint, BreakpointId, CommunicationInterface, Core, CoreInterface, CoreList, CoreRegisterAddress, }; pub use crate::error::Error; pub use crate::memory::{Memory, MemoryInterface, MemoryList}; pub use crate::probe::{DebugProbe, DebugProbeError, DebugProbeInfo, Probe, WireProtocol}; pub use crate::session::Session;