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

📄 arm.h

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


*/


#ifndef ARM_H           /* Guard against multiple inclusion */
#define ARM_H

#include "Global.h"     /* Required for data types: U8, U16, U32 */
#include "JTAG.h"

#if defined(__cplusplus)
  extern "C" {          /* Make sure we have C-declarations in C++ programs */
#endif


/*********************************************************************
*
*       Enums required for API
*/
enum ARM_DEVICE {
  ARM_DEVICE_UNKNOWN,
  ARM_DEVICE_ARM7,
  ARM_DEVICE_ARM9
};

enum {
   ARM_NO_DELAY
  ,ARM_WRITE_DELAYED
};

enum ARM_ENDIAN {
  ARM_ENDIAN_LITTLE, ARM_ENDIAN_BIG
};

/*********************************************************************
*
*       ARM core registers
*/
typedef enum {
  ARM_REG_R0,
  ARM_REG_R1,
  ARM_REG_R2,
  ARM_REG_R3,
  ARM_REG_R4,
  ARM_REG_R5,
  ARM_REG_R6,
  ARM_REG_R7,
  ARM_REG_CPSR,
  ARM_REG_R15,
  ARM_REG_R8_USR,   ARM_REG_R9_USR,  ARM_REG_R10_USR, ARM_REG_R11_USR,
                    ARM_REG_R12_USR, ARM_REG_R13_USR, ARM_REG_R14_USR,
  ARM_REG_SPSR_FIQ, ARM_REG_R8_FIQ,  ARM_REG_R9_FIQ,  ARM_REG_R10_FIQ,
                    ARM_REG_R11_FIQ, ARM_REG_R12_FIQ, ARM_REG_R13_FIQ, ARM_REG_R14_FIQ,
  ARM_REG_SPSR_SVC, ARM_REG_R13_SVC, ARM_REG_R14_SVC,
  ARM_REG_SPSR_ABT, ARM_REG_R13_ABT, ARM_REG_R14_ABT,
  ARM_REG_SPSR_IRQ, ARM_REG_R13_IRQ, ARM_REG_R14_IRQ,
  ARM_REG_SPSR_UND, ARM_REG_R13_UND, ARM_REG_R14_UND,
  ARM_REG_SPSR_SYS, ARM_REG_R13_SYS, ARM_REG_R14_SYS,
  ARM_NUM_REGS
} ARM_REG;


/*********************************************************************
*
*       ICEBreaker Module registers
*/
#define ARM_ICE_DBG_CTRL		      0x00
#define ARM_ICE_DBG_STS			      0x01 
#define ARM_ICE_VECTOR_CATCH_CTRL	0x02     // ARM 9 only
#define ARM_ICE_DBG_COM_CTRL	    0x04
#define ARM_ICE_DBG_COM_DATA	    0x05

#define ARM_ICE_DCC_STAT 0x04       // Debug comms status / control
#define ARM_ICE_DCC_DATA 0x05       // Debug comms data
#define ARM_ICE_WP0_AV	 0x08
#define ARM_ICE_WP0_AM	 0x09
#define ARM_ICE_WP0_DV	 0x0A
#define ARM_ICE_WP0_DM	 0x0B
#define ARM_ICE_WP0_CV	 0x0C
#define ARM_ICE_WP0_CM	 0x0D
#define ARM_ICE_WP1_AV	 0x10
#define ARM_ICE_WP1_AM	 0x11
#define ARM_ICE_WP1_DV	 0x12
#define ARM_ICE_WP1_DM	 0x13
#define ARM_ICE_WP1_CV	 0x14
#define ARM_ICE_WP1_CM	 0x15


/*********************************************************************
*
*       API functions
*/
void         ARM_Close(void);
void         ARM_ClrBP(unsigned BPIndex);
void         ARM_ClrError(void);
void         ARM_EnableLog2File(void);
const char * ARM_GetCompileDateTime(void);
U16          ARM_GetEmbeddedFWVersion(void);
void         ARM_GetHWStatus(JTAG_HW_STATUS * pStat);
U32          ARM_GetId(void);
void         ARM_GetIdData(JTAG_ID_DATA * pIdData);
U16          ARM_GetSelDevice(void);
int          ARM_GetVoltage(void);
U16          ARM_GetSpeed(void);
void         ARM_Go(void);
void         ARM_GoIntDis(void);
char         ARM_Halt(void);
char         ARM_HaltNoSave(void);
char         ARM_IsConnected(void);
char         ARM_IsHalted(void);
const char * ARM_Open(void);
int          ARM_ReadDCC(U32 * pData, U32 NumItems, int TimeOut);
void         ARM_ReadDCCFast(U32 * pData, U32 NumItems);
U32          ARM_ReadICEReg(int RegIndex);
int          ARM_ReadMem (U32 addr, U32 count, void * p);
void         ARM_ReadMemU8 (U32 Addr, U32 NumItems, U8 * pData, U8* pStatus);
void         ARM_ReadMemU16(U32 Addr, U32 NumItems, U16* pData, U8* pStatus);
void         ARM_ReadMemU32(U32 Addr, U32 NumItems, U32* pData, U8* pStatus);
U32          ARM_ReadReg (ARM_REG RegIndex);
void         ARM_Reset(void);
void         ARM_ResetPullsTRST (U8 OnOff);
void         ARM_ResetPullsRESET(U8 OnOff);
void         ARM_SelDevice(U16 DeviceIndex);
void         ARM_SetBP(unsigned BPIndex, U32 Addr);
int          ARM_SetEndian(int v);
int          ARM_SetInitRegsOnReset(int v);
void         ARM_SetMaxSpeed(void);
void         ARM_SetResetDelay(int ms);
int          ARM_SetResetPara(int Value);
void         ARM_SetSpeed(int Speed);
char         ARM_Step(void);
int          ARM_Test(void);
U16          ARM_UpdateFirmware(void);
U32          ARM_UpdateFirmwareIfNewer(void);
int          ARM_WaitDCCRead(int TimeOut);
int          ARM_WriteDCC(const U32 * pData, U32 NumItems, int TimeOut);
void         ARM_WriteDCCFast(const U32 * pData, U32 NumItems);
void         ARM_WriteICEReg(int RegIndex, U32 Value, int AllowDelay);
char         ARM_WriteReg(ARM_REG RegIndex, U32 Data);
void         ARM_WriteMem(U32 addr, U32 count, const void * p);
void         ARM_WriteMemDelayed(U32 Addr, U32 Count, const void * p);
void         ARM_WriteU8 (U32 addr, U8 Data);
void         ARM_WriteU16(U32 addr, U16 Data);
void         ARM_WriteU32(U32 addr, U32 Data);

/*********************************************************************
*
*       external functions
*
* These functions need to be provided by the application.
* Dummys will do for a start (or printf or MessageBox)
*/
void         ARM_X_ErrorOut(const char * s);
void         ARM_X_Log     (const char * s);
void         ARM_X_Log2File(const char * s);
void         ARM_X_Warn    (const char * s);
int          ARM_X_GetTickCount(void);


#if defined(__cplusplus)
}     /* Make sure we have C-declarations in C++ programs */
#endif

#endif    /* Guard against multiple inclusion */

/*************************** end of file ****************************/

⌨️ 快捷键说明

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