Initial commit
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
#include <CortexMMCUInstrumentation.hpp>
|
||||
#include <touchgfx/hal/HAL.hpp>
|
||||
|
||||
namespace touchgfx
|
||||
{
|
||||
void CortexMMCUInstrumentation::init()
|
||||
{
|
||||
// See: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0337e/CEGHJDCF.html
|
||||
//
|
||||
// [24] Read/write TRCENA This bit must be set to 1 to enable use of the trace and debug blocks:
|
||||
// Data Watchpoint and Trace (DWT)
|
||||
// Instrumentation Trace Macrocell (ITM)
|
||||
// Embedded Trace Macrocell (ETM)
|
||||
// Trace Port Interface Unit (TPIU).
|
||||
// This enables control of power usage unless tracing is required. The application can enable this, for ITM use, or use by a debugger.
|
||||
|
||||
// Enable Debug Exception and Monitor Control Register
|
||||
*((volatile unsigned int*)0xE000EDFC) |= 0x01000000;
|
||||
// Enable Lock Access Register
|
||||
*((volatile unsigned int*)0xE0001FB0) |= 0xC5ACCE55;
|
||||
// Enable Data Watchpoint and Trace Control Register
|
||||
*((volatile unsigned int*)0xE0001000) |= 1;
|
||||
}
|
||||
|
||||
//Board specific clockfrequency
|
||||
unsigned int CortexMMCUInstrumentation::getElapsedUS(unsigned int start, unsigned int now, unsigned int clockfrequency)
|
||||
{
|
||||
return ((now - start) + (clockfrequency / 2)) / clockfrequency;
|
||||
}
|
||||
|
||||
unsigned int CortexMMCUInstrumentation::getCPUCycles()
|
||||
{
|
||||
return *((volatile unsigned int*)0xE0001004);
|
||||
}
|
||||
|
||||
void CortexMMCUInstrumentation::setMCUActive(bool active)
|
||||
{
|
||||
if (active) //idle task sched out
|
||||
{
|
||||
uint32_t cc_temp = getCPUCycles() - cc_in;
|
||||
cc_consumed += cc_temp;
|
||||
}
|
||||
else //idle task sched in
|
||||
{
|
||||
cc_in = getCPUCycles();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user