Select Git revision
SRP_wcet.h 1.33 KiB
/*
* RTFM_wcet.h
*
* Henrik Tder
* Per Lindgren
*
*/
#include <stm32f401xe.h>
#include "dwt.h"
#include <stdint.h>
typedef enum
{
r1,
r2,
j1,
j2,
j3
} elem;
typedef enum
{
NOACTION,
/* Lock */
L,
/* Release */
R,
/* Start */
S,
/* End */
E
} action;
typedef struct locks
{
/* The DWT counter value */
uint32_t time;
/* Which element has been locked */
elem elem;
/* If locked or released */
action action;
} locks;
int event_count = 0;
/* Create array containing structs of type locks */
#define MAX_NUM_LOCKS 10
locks eventlist[MAX_NUM_LOCKS];
#define TRACE_EVENT(event, el)({eventlist[event_count].time = DWT->CYCCNT; eventlist[event_count].action = event; eventlist[event_count].elem = el; event_count+=1;})
// #define Ceiling(R) (R##_Ceiling)
// #define Code(J) (J##_Code)
// #define IRQn(J) (J##_IRQn)
// #define H(X) ((1 << __NVIC_PRIO_BITS)-X)
#define IRQh(J) (J##_IRQh)
// #define BARRIER_LOCK { }
// #define BARRIER_UNLOCK { }
#define JOB_REQUEST(J) { }
#define LOCK(X) TRACE_EVENT(L, X);
#define UNLOCK(X) TRACE_EVENT(R, X);
// #define SETPRIO(J) { }
// #define ENABLE(J) { }
#define TASK(J) void IRQh(J) ()
#define BREAKPOINT { asm volatile("" ::: "memory"); }
void finish_execution(void) {}
void terminate_execution(void) {}