itm: enable itm logging

This commit is contained in:
occheung 2020-09-10 16:22:12 +08:00
parent ecdb114679
commit eaaee84fbc
4 changed files with 28 additions and 14 deletions

View File

@ -30,6 +30,7 @@ use cortex_m_rt::{
// use cortex_m_semihosting::hprintln;
// use panic_halt as _;
use panic_itm as _;
use rtic::cyccnt::{Instant, U32Ext};
@ -83,14 +84,20 @@ fn main() -> ! {
let ccdr = rcc
.use_hse(8.mhz())
.sysclk(400.mhz())
// .hclk(200.mhz())
// .per_ck(100.mhz())
.hclk(200.mhz())
.per_ck(100.mhz())
.pll1_q_ck(48.mhz()) // for SPI
// .pll1_r_ck(400.mhz()) // for TRACECK
// .pll2_p_ck(100.mhz())
// .pll2_q_ck(100.mhz())
.pll1_r_ck(400.mhz()) // for TRACECK
.pll2_p_ck(100.mhz())
.pll2_q_ck(100.mhz())
.freeze(vos, &dp.SYSCFG);
// info!("{}", ccdr.clocks.c_ck().0);
unsafe {
logger::enable_itm(&dp.DBGMCU, &mut cp.DCB, &mut cp.ITM);
}
let mut delay = cp.SYST.delay(ccdr.clocks);
let gpioa = dp.GPIOA.split(ccdr.peripheral.GPIOA);
@ -108,6 +115,10 @@ fn main() -> ! {
let mut green_led = gpiob.pb0.into_push_pull_output();
green_led.set_low().unwrap();
gpiob.pb3.into_alternate_af0().set_speed(Speed::VeryHigh);
logger::init();
// Configure ethernet IO
{
let _rmii_refclk = gpioa.pa1.into_alternate_af11().set_speed(Speed::VeryHigh);
@ -254,9 +265,10 @@ fn main() -> ! {
}
match net_interface.poll_delay(&sockets, clock.elapsed()) {
Some(net::time::Duration {millis :0}) => debug!("resuming"),
Some(net::time::Duration {millis :0}) => {
continue;
}
Some(time_delay) => {
info!("sleeping for {} ms", time_delay);
// green_led.set_low().unwrap();
// delay.delay_ms(time_delay.total_millis() as u32);
// green_led.set_high().unwrap();

View File

@ -26,7 +26,7 @@ pub unsafe fn enable_itm(
*(0x5c00_4fb0 as *mut u32) = 0xC5ACCE55;
// SWO CODR Register: Set SWO speed
*(0x5c00_3010 as *mut _) = 400 - 1;
*(0x5c00_3010 as *mut _) = 200;
// SWO SPPR Register:
// 1 = Manchester
@ -64,7 +64,7 @@ use cortex_m_log::{
lazy_static! {
static ref LOGGER: Logger<ItmSync<InterruptFree>> = Logger {
level: LevelFilter::Debug,
level: LevelFilter::Trace,
inner: unsafe {
InterruptSync::new(
ItmDest::new(cortex_m::Peripherals::steal().ITM)
@ -77,7 +77,7 @@ pub fn init() {
cortex_m_log::log::init(&LOGGER).unwrap();
}
use panic_semihosting as _;
// use panic_semihosting as _;
use cortex_m_log::printer::semihosting;
use cortex_m_log::printer::semihosting::Semihosting;

View File

@ -12,7 +12,9 @@ break HardFault
break rust_begin_unwind
# print using semihosting, slow af
monitor arm semihosting enable
# monitor arm semihosting enable
monitor tpiu config internal itm.fifo uart off 400000000
monitor itm port 0 on
# flash the program to STM32
load

View File

@ -12,9 +12,9 @@ break HardFault
break rust_begin_unwind
# print using semihosting, slow af
monitor arm semihosting enable
# monitor tpiu config internal itm.fifo uart off 400000000
# monitor itm port 0 on
# monitor arm semihosting enable
monitor tpiu config internal itm.fifo uart off 400000000
monitor itm port 0 on
# flash the program to STM32
load