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

📄 jtag.h

📁 Source Code of jlinkserver for Segger JLink
💻 H
字号:
/*********************************************************************
*              SEGGER MICROCONTROLLER SYSTEME GmbH                   *
*        Solutions for real time microcontroller applications        *
**********************************************************************
*                                                                    *
*        (c) 1996-2003 SEGGER Microcontroller Systeme GmbH           *
*                                                                    *
* Internet: www.segger.com Support: support@segger.com               *
*                                                                    *
**********************************************************************
----------------------------------------------------------------------
File    : JTAG.h
Purpose : JTAG functions
---------------------------END-OF-HEADER------------------------------
*/


#ifndef JTAG_H
#define JTAG_H

#include "Global.h"

#define JTAG_MAX_DEVICE  3

#define JTAG_CMD_SCAN_N  0x02   // 0010b
#define JTAG_CMD_RESTART 0x04   // 0100b
#define JTAG_CMD_INTEST  0x0C   // 1100b
#define JTAG_CMD_IDCODE  0x0E   // 1110b
#define JTAG_CMD_BYPASS  0x0F   // 1111b


/*********************************************************************
*
*       Data structures
*
**********************************************************************
*/
/*********************************************************************
*
*       ARM_HW_STATUS
*/
typedef struct {
  U16 VTarget;           // Target supply voltage
  U8  tck;               // Measured state of TCK pin:  0 or 1
  U8  tdi;               // Measured state of TDI pin:  0 or 1
  U8  tdo;               // Measured state of TDO pin:  0 or 1
  U8  tms;               // Measured state of TMS pin:  0 or 1
  U8  tres;              // Measured state of TRES pin: 0 or 1
  U8  trst;              // Measured state of TRST pin: 0 or 1 or 255 (unknown)
} JTAG_HW_STATUS;

typedef struct {
  U16 Version;
  U16 JTAG_BufferSize;
} JTAG_FW_INFO;

typedef struct {
  int NumDevices;                 // Number of devices in this scan chain
  U16 ScanLen;                    // Total Number of bits in all scan chain select register
  U32 aId      [JTAG_MAX_DEVICE];
  U8  aScanLen [JTAG_MAX_DEVICE]; // Number of bits in individual scan chain select registers
  U8  aIrRead  [JTAG_MAX_DEVICE]; // Data read back from instruction register
  U8  aScanRead[JTAG_MAX_DEVICE]; // Data read back from scan chain select register
} JTAG_ID_DATA;

void         JTAG_ClearErrorState(void);
void         JTAG_CheckCmd(int BitPos);
void         JTAG_Close(void);
void         JTAG_GetFirmwareInfo(JTAG_FW_INFO * pFWInfo);
void         JTAG_GetFirmwareString(char * s, int BufferSize);
void         JTAG_GetHWStatus(JTAG_HW_STATUS * pStat);
U32          JTAG_GetId(void);
void         JTAG_GetIdData(JTAG_ID_DATA * pIdData);
int          JTAG_GetNumReturns(void);
int          JTAG_GetNumBitsInPipe(void);
int          JTAG_GetScanLen(void);
U32          JTAG_GetU32  (int BitOff);
int          JTAG_GetVoltage(void);
void         JTAG_GoToResetState(void);
const char * JTAG_Open(void);
void         JTAG_ResetTRST(void);
void         JTAG_ResetTarget(void);
void         JTAG_SetIdData(const JTAG_ID_DATA * pIdData);
void         JTAG_StoreCmd(U8 Cmd);
int          JTAG_StoreData(const U8 * pTDI, int NumBits);
void         JTAG_StoreBits(U32 TMS, U32 TDI, int NumBits);
int          JTAG_GetNumBitsInOutBuffer(void);
void         JTAG_WriteBytes(void);
void         JTAG_WriteBytesNoFlush(void);
char         JTAG_UpdateFirmware(U8* pFirmware, int NumBytes, U16 * pCRC);
char         JTAG_HasError(void);


U8    JTAG_HW_Clock (void);
void  JTAG_HW_ClrTMS(void);
void  JTAG_HW_SetTMS(void);
void  JTAG_HW_ClrTDI(void);
void  JTAG_HW_SetTDI(void);
void  JTAG_HW_ClrReset(void);
void  JTAG_HW_ReleaseResetStop  (int NumReps);
void  JTAG_HW_ReleaseResetStopEx(int NumReps, U16 CriteriaBytePos, U16 CriteriaMask, U16 CriteriaData);
void  JTAG_HW_SetReset(void);
void  JTAG_SetSpeed(U16 Speed);
U16   JTAG_GetSpeed(void);
void  JTAG_SelDevice(U16 DeviceIndex);

void         JTAG_X_ErrorOut(const char * s);
void         JTAG_X_Sleep(int ms);


#endif    /* Guard against multiple inclusion */

⌨️ 快捷键说明

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