Crate rtos_trace

Source
Expand description

Set of traits used to trace RTOS internals.

§Features

  • trace_impl: Activates tracing function (on by default). Can be used by the RTOS to deactivate tracing.

§Implementation

The backend is required implement RtosTrace.

Existing implementation:

§Usage

§RTOS

The RTOS can implement RtosTraceOSCallbacks to provide additional information upon request from the tracing software. For example:

rtos_trace::global_os_callbacks!{Scheduler}
 
impl rtos_trace::RtosTraceOSCallbacks for Scheduler {
    fn task_list() {
        /*..*/
        for task in tasks.iter() {
            trace::task_send_info(task.id(), task.info());
        }
    }
    /*..*/
}

Usage for the RTOS maintainer is simple:

use rtos_trace::{RtosTrace, trace}
 
pub fn spawn_task(/*..*/) {
    /*..*/
    trace::task_new(task_id);
}

§Application

Similar to a global logger the user must provide a tracing backend, i.e.:

use systemview_target::SystemView;
rtos_trace::global_trace!{SystemView}

The user can implement RtosTraceApplicationCallbacks to provide additional information upon request from the tracing software. For example:

struct Application;
rtos_trace::global_application_callbacks!{Application}
 
impl rtos_trace::RtosTraceApplicationCallbacks for Application {
    fn system_description() {
        systemview_target::send_system_desc_app_name!("Espresso Machine");
        systemview_target::send_system_desc_device!("STM32F769NI");
        systemview_target::send_system_desc_core!("Cortex-M7");
        systemview_target::send_system_desc_os!("Bern RTOS");
        systemview_target::send_system_desc_interrupt!(15, "SysTick");
    }
    /*..*/
}
 

Modules§

trace

Macros§

global_application_callbacks
global_os_callbacks
global_trace

Structs§

TaskInfo
Task info block.

Traits§

RtosTrace
Collection of tracing functions which are called by the RTOS.
RtosTraceApplicationCallbacks
Callbacks to the application invoked by the tracing system. This trait can be implemented by user.
RtosTraceOSCallbacks
Callbacks to the OS invoked by the tracing system. This trait can be implemented in the RTOS.