⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 etmchain.h

📁 ARM核的边界扫描(JTAG)的实现,此代码在s3c2400上测试通过
💻 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 + -