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

📄 main.cpp

📁 ARM核的边界扫描(JTAG)的实现,此代码在s3c2400上测试通过
💻 CPP
字号:
//////////////////////////////////////////////////////////////////////////////
// main.cpp                                                                 //
//////////////////////////////////////////////////////////////////////////////
/*
	JTAG flash utility
	GP32
*/

//////////////////////////////////////////////////////////////////////////////
// Includes                                                                 //
//////////////////////////////////////////////////////////////////////////////
#include <windows.h>
#include <conio.h>
#include <stdio.h>
#include "JTAG.h"
#include "CP15Chain.h"
#include "DebugChain.h"
#include "EBSChain.h"
#include "EICEChain.h"
#include "ETMChain.h"
#include "IBSChain.h"
#include "IDChain.h"
#include "PATagRamChain.h"

//////////////////////////////////////////////////////////////////////////////
// Defines                                                                  //
//////////////////////////////////////////////////////////////////////////////
// instructions
#define NOP				0xe1a00000
#define LDR_R0__R0_		0xe5900000

//////////////////////////////////////////////////////////////////////////////
// Variables                                                                //
//////////////////////////////////////////////////////////////////////////////
unsigned int deviceID = 0x0032409D;

//////////////////////////////////////////////////////////////////////////////
// Exit                                                                     //
//////////////////////////////////////////////////////////////////////////////
void Exit()
{
	JTAG::Close();
}

//////////////////////////////////////////////////////////////////////////////
// main                                                                     //
//////////////////////////////////////////////////////////////////////////////
int main()
{
	{
		if (JTAG::Init()) return -1;
		atexit(Exit);
	}

	{
		IDChain idChain;
		if (idChain.Read() != deviceID)
		{
			fprintf(stderr, "Can't find device\n");
			return -1;
		}
	}

	EICEChain eiceChain;
	//printf("EICE_DEBUG_CONTROL = %08X\n", eiceChain.Read(EICE_DEBUG_CONTROL));
	//printf("EICE_DEBUG_STATUS = %08X\n", eiceChain.Read(EICE_DEBUG_STATUS));
	//printf("EICE_DEBUG_COMMS_CONTROL = %08X\n", eiceChain.Read(EICE_DEBUG_COMMS_CONTROL));	// 6	bits: 0=debugger->processor, 1=processor->debugger, 28..31=2 (version)
	//printf("EICE_DEBUG_COMMS_DATA = %08X\n", eiceChain.Read(EICE_DEBUG_COMMS_DATA));

	JTAG::Restart();

	//while (1);



	//DebugChain debugChain;
	//debugChain.Exec(



	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -