📄 etmchain.h
字号:
//////////////////////////////////////////////////////////////////////////////
// Embedded Trace Macrocell (ETM) //
//////////////////////////////////////////////////////////////////////////////
//
#define ETM_CONTROL 0x00 // ETM control. R/W
#define ETM_CONFIG 0x01 // ETM configuration mode. R
#define ETM_TRIGGER 0x02 // trigger event. W
#define ETM_DECODE 0x03 // memory map decode control. 8 bits. W
#define ETM_STATUS 0x04 // status. R
#define ETM_SYSCONFIG 0x05 // system configuration. R
// TraceEnable
#define ETM_TRACE_STARTSTOP 0x06 // start/stop address resource selection. W
#define ETM_TRACE_CONTROL2 0x07 // trace control 2. include/exclude resource selection. W
#define ETM_TRACE_EVENT 0x08 // enabling event. W
#define ETM_TRACE_CONTROL1 0x09 // trace control 1. enable start/stop resource. W
// FIFOFULL
#define ETM_FIFOFULL_REGION 0x0A
#define ETM_FIFOFULL_LEVEL 0x0B
// ViewData
#define ETM_VIEWDATA_EVENT 0x0C
#define ETM_VIEWDATA_CONTROL1 0x0D
#define ETM_VIEWDATA_CONTROL2 0x0E
#define ETM_VIEWDATA_CONTROL3 0x0F
// address comparators
#define ETM_ADDRESS_COMPARE 0x10 //..0x1F
#define ETM_ADDRESS_ACCESS 0x20 //..0x2F
// data comparators
#define ETM_DATA_COMPARE 0x30 //..0x3F
#define ETM_DATA_ACCESS 0x40 //..0x4F
// counters
#define ETM_COUNTER_INIT 0x50 //..0x53
#define ETM_COUNTER_ENABLE 0x54 //..0x57
#define ETM_COUNTER_RELOAD 0x58 //..0x5B
#define ETM_COUNTER_VALUE 0x5C //..0x5F
// sequencer
#define ETM_SEQUENCER_CONTROL 0x60 //..0x65
#define ETM_SEQUENCER_STATE 0x67
//
#define ETM_EXTERNAL_OUTPUT 0x68 //..0x6B
// context comparators
#define ETM_CONTEXT_COMPARE 0x6C //..0x6E
#define ETM_CONTEXT_MASK 0x6F
//
#define ETM_IMPL_SPECIFIC 0x70 //..0x77
#define ETM_SYNC_FREQUENCY 0x78
#define ETM_ID 0x79
//////////////////////////////////////////////////////////////////////////////
// ETMChain //
//////////////////////////////////////////////////////////////////////////////
// Embedded Trace Macrocell
class ETMChain : public Chain
{
public:
unsigned data : 32;
unsigned address : 7;
unsigned write : 1;
void Select() { JTAG::Command(INTEST); JTAG::Chain(ETM_CHAIN); }
unsigned int Read(unsigned int address)
{
this->address = address;
this->write = 0; // data field is ignored
Select();
JTAG::Write(this);
JTAG::Transfer(this);
return this->data;
}
void Write(unsigned int address, unsigned int data)
{
this->data = data;
this->address = address;
this->write = 1;
Select();
JTAG::Transfer(this);
}
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -