// SPDX-License-Identifier: MIT OR Apache-2.0 // // Copyright (c) 2018-2020 Andre Richter //! BSP console facilities. use super::memory; use crate::{bsp::device_driver, console}; use core::fmt; //-------------------------------------------------------------------------------------------------- // Public Code //-------------------------------------------------------------------------------------------------- /// In case of a panic, the panic handler uses this function to take a last shot at printing /// something before the system is halted. /// /// # Safety /// /// - Use only for printing during a panic. pub unsafe fn panic_console_out() -> impl fmt::Write { let mut uart = device_driver::PanicUart::new(memory::map::mmio::PL011_UART_BASE); uart.init(); uart } /// Return a reference to the console. pub fn console() -> &'static impl console::interface::All { &super::PL011_UART } //-------------------------------------------------------------------------------------------------- // Testing //-------------------------------------------------------------------------------------------------- /// Minimal code needed to bring up the console in QEMU (for testing only). This is often less steps /// than on real hardware due to QEMU's abstractions. /// /// For the RPi, nothing needs to be done. pub fn qemu_bring_up_console() {}