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

📄 adp.h

📁 ARM入门的好帮手.包含了从简单到相对较复杂的程序.
💻 H
📖 第 1 页 / 共 5 页
字号:
#define ADP_Info_Points_Mask            (1 << 8)

/* Multi-threaded support only - thread specific breakpoints. */
#define ADP_Info_Points_ThreadBreak     (1 << 9)

/* Multi-threaded support only - thread specific watchpoints. */
#define ADP_Info_Points_ThreadWatch     (1 << 10)

/* Allows conditional breakpoints. */
#define ADP_Info_Points_Conditionals    (1 << 11)

/* Break- and watch-points can be interrogated */
#define ADP_Info_Points_Status          (1 << 12)


#define ADP_Info_Step                   ADPSUBREASON(CI_HADP,3)
/* ADP_Info_Step
 * -------------
 * Summary: Returns a 32bit wide bitmask of the single-stepping
 * capabilities of the target debug agent.
 *
 * Arguments:
 * Send:   ()
 * Return: (word status, word stepinfo)
 *
 * 'status' returns RDIError_NoError on success, or non-zero to indicate
 * some kind of error.
 * 'stepinfo' is a 32bit wide bitmask described in detail below.  Note that
 * only 3 bits are used.
 */

/* 'stepinfo':- */
/* Single-stepping of more than one instruction is possible. */
#define ADP_Info_Step_Multiple  (1 << 0)

/* Single-stepping until next direct PC change is possible. */
#define ADP_Info_Step_PCChange  (1 << 1)

/* Single-stepping of a single instruction is possible. */
#define ADP_Info_Step_Single    (1 << 2)


#define ADP_Info_MMU                    ADPSUBREASON(CI_HADP,4)
/* ADP_Info_MMU
 * ------------
 * Summary: Returns information about the memory management system (if
 * any).
 *
 * Arguments:
 * Send:   ()
 * Return: (word status, word meminfo)
 *
 * 'status' returns RDIError_NoError to indicate success or non-zero to
 * indicate some kind of error.
 * 'meminfo' should be a 32bit unique ID, or zero if there is no MMU
 * support on the target.
 */


#define ADP_Info_SemiHosting            ADPSUBREASON(CI_HADP,5)
/* ADP_Info_SemiHosting
 * --------------------
 * Summary: This message is used to check whether semi-hosting info calls
 * are available on the target.
 *
 * Arguments:
 * Send:   ()
 * Return: (word status)
 *
 * 'status' returns RDIError_NoError if semi-hosting info calls are available,
 * non-zero otherwise.
 */


#define ADP_Info_CoPro                  ADPSUBREASON(CI_HADP,6)
/* ADP_Info_CoPro
 * --------------
 * Summary: This message checks whether CoProcessor info calls are
 * supported.
 *
 * Arguments:
 * Send:   ()
 * Return: (word status)
 *
 * 'status' returns RDIError_NoError to indicate these facilities
 * are supported, non-zero otherwise.
 */


#define ADP_Info_Cycles                 ADPSUBREASON(CI_HADP,7)
/* ADP_Info_Cycles
 * ---------------
 * Summary: Returns the number of instructions and cycles executed since
 * the target was initialised.
 *
 * Arguments:
 * Send:   ()
 * Return: (word status, word ninstr, word Scycles, word Ncycles,
 *          word Icycles, word Ccycles, word Fcycles)
 *
 * 'status' is RDIError_NoError to indicate success, or non-zero if there
 * is no target support for gathering cycle count information.
 * 'ninstr' is the number of instructions executed.
 * 'Scycles' is the number of S-cycles executed.
 * 'Ncycles' is the number of N-cycles executed.
 * 'Icycles' is the number of I-cycles executed.
 * 'Ccycles' is the number of C-cycles executed.
 * 'Fcycles' is the number of F-cycles executed.
 */


#define ADP_Info_DescribeCoPro          ADPSUBREASON(CI_HADP,8)
/* ADP_Info_DescribeCoPro
 * ----------------------
 * Summary: Describe the registers of a coprocessor.  Use only if
 * ADP_Info_CoPro return RDIError_NoError.
 *
 * Arguments:
 * Send:   Arguments of the form:
 *         (byte cpno, byte rmin, byte rmax, byte nbytes, byte access,
 *          byte cprt_r_b0, byte cprt_r_b1, byte cprt_w_b0, byte cprt_w_b1)
 *         And a terminating byte = 0xff.  Must be within maximum buffer size.
 * Return: (word status)
 *
 * 'cpno' is the number of the coprocessor to be described.
 * 'rmin' is the bottom of a range of registers with the same description.
 * 'rmax' is the top of a range of registers with the same description.
 * 'nbytes' is the size of the register.
 * 'access' describes access to the register and is described in more detail
 * below.
 *
 * If bit 2 of access is set:-
 * 'cprt_r0' provides bits 0 to 7, and
 * 'cprt_r1' provides bits 16 to 23 of a CPRT instruction to read the
 * register.
 * 'cprt_w0' provides bits 0 to 7, and
 * 'cprt_w1' provides bits 16 to 23 of a CPRT instruction to write the
 * register.
 *
 * Otherwise, 'cprt_r0' provides bits 12 to 15, and 'cprt_r1' bit 22 of CPDT
 * instructions to read and write the register ('cprt_w0' and 'cprt_w1' are
 * junk).
 */

/* 'access':- */
/* Readable. */
#define ADP_Info_DescribeCoPro_Readable   (1 << 0)

/* Writeable. */
#define ADP_Info_DescribeCoPro_Writeable  (1 << 1)

/* Registers read or written via CPDT instructions (else CPRT) with this
   bit set. */
#define ADP_Info_DescribeCoPro_CPDT       (1 << 2)

#define ADP_Info_RequestCoProDesc       ADPSUBREASON(CI_HADP,9)
/* ADP_Info_RequestCoProDesc
 * -------------------------
 * Summary: Requests a description of the registers of a coprocessor.  Use
 * only if ADP_Info_CoPro return RDIError_NoError.
 *
 * Arguments:
 * Send:   (byte cpno)
 * Return: Arguments of the form:-
 *         (word status, byte rmin, byte rmax, byte nbytes, byte access)
 *         Followed by a terminating byte = 0xFF.  Must be within maximum
 *         buffer size.
 * 'cpno' is the number of the coprocessor to describe.
 * 'status' is RDIError_NoError to indicate success, non-zero otherwise.
 * 'rmin' is the bottom of a range of registers with the same description.
 * 'rmax' is the top of a range of registers with the same description.
 * 'nbytes' is the size in bytes of the register(s).
 * 'access' is as above in ADP_Info_DescribeCoPro.
 */


#define ADP_Info_AngelBufferSize        ADPSUBREASON(CI_HADP,10)
/* ADP_Info_AngelBufferSize
 * ------------------------
 * Summary: Returns the Angel buffer sizes.
 *
 * Arguments:
 * Send:   ()
 * Return: (word status, word defaultsize, word maxsize)
 *
 * 'status' returns RDIError_NoError to indicate success or non-zero to
 * indicate some kind of error.
 * 'defaultsize' is the default Angel ADP buffer size in bytes. This is
 * at least 256 bytes.
 * 'maxsize' is the largest Angel ADP buffer size in bytes. This will be
 * greater than or equal to defaultsize.  The target will accept ADP messages
 * of up to this length for download, etc.
 *
 * Was DownLoadSize in RDP/RDI world.  This is the amount that the target
 * should transmit in a single operation.  This should now be the Angel
 * buffer size.  This information is also given in the ADP_Booted message.
 *
 * NOTE: The value returned should be the DATASIZE and *NOT* BUFFERDEFSIZE.
 * This is needed to ensure that the transport protocol information
 * can be wrapped around the data.
 */

#define ADP_Info_ChangeableSHSWI       ADPSUBREASON(CI_HADP,11)
/* ADP_Info_ChangeableSHSWI
 * ------------------------
 * Summary: This message is used to check whether it is possible to change
 * which SWI's are used for semihosting.
 *
 * Arguments:
 * Send:   ()
 * Return: (word status)
 *
 * 'status' returns RDIError_NoError if semi-hosting info calls are available,
 * non-zero otherwise.
 */

#define ADP_Info_CanTargetExecute      ADPSUBREASON(CI_HADP,12)
/* ADP_Info_CanTargetExecute
 * -------------------------
 * Summary: This message is used to see if the target is currently in
 * an executable state.  Typically this is called after the debugger
 * initialises.  If a non-error statis is returned then the user is
 * allowed to 'go' immediately.
 *
 * Arguments:
 * Send:   ()
 * Return: (word status)
 *
 * 'status' returns RDIError_NoError if target is ready to execute.
 * other values indicate why it cannot execute.
 */

#define ADP_Info_AgentEndianess        ADPSUBREASON(CI_HADP,13)
/* ADP_Info_AgentEndianess
 * -------------------------
 * Summary: This message is used to determine the endianess of the
 * debug agent
 * Arguments:
 * Send:   ()
 * Return: (word status)
 *
 * status should be RDIError_LittleEndian or RDIError_BigEndian
 * any other value indicates the target does not support this
 * request, so the debugger will have to make a best guess, which
 * probably means only allow little endian loadagenting.
 */

#define ADP_Info_CanAckHeartbeat       ADPSUBREASON(CI_HADP,14)
/* ADP_Info_CanAckHeartbeat
 * --------------
 * Summary: This message checks whether heartbeat messages are
 * acknowledged.
 *
 * Arguments:
 * Send:   ()
 * Return: (word status)
 *
 * 'status' returns RDIError_NoError to indicate heartbeats are
 * acknowledged, non-zero otherwise. (NOTE: some targets may not
 * support the call).
 */



#define ADP_Control             ADPREASON(CI_HADP,2)
/* This message allows for the state of the debug agent to be
 * manipulated by the host.
 */

/* The following are sub reason codes to ADP control, the first parameter
 * is the sub reason code which defines the format of subsequent parameters.
 *
 * word         sub reason code
 */

#define ADP_Ctrl_NOP                    ADPSUBREASON(CI_HADP,0)
/* ADP_Ctrl_NOP
 * ------------
 * Summary: This message is used to check that ADP_Ctrl messages are
 * supported.
 *
 * Arguments:
 * Send:   ()
 * Return: (word status)
 *
 * 'status' is RDIError_NoError to indicate ADP_Ctrl messages are
 * supported, non-zero otherwise.
 */

#define ADP_Ctrl_VectorCatch            ADPSUBREASON(CI_HADP,1)
/* ADP_Ctrl_VectorCatch
 * --------------------
 * Summary: Specifies which hardware exceptions should be reported to the
 * debugger.
 *
 * Arguments:
 * Send:   (word bitmap)
 * Return: (word status)
 *
 * 'bitmap' is a bit-mask of exceptions to be reported, described in more
 * detail below.  A set bit indicates that the exception should be
 * reported to the debugger, a clear bit indicates that the corresponding
 * exception vector should be taken.
 * 'status' is RDIError_NoError to indicate success, non-zero otherwise.
 */

/* 'bitmap':- */
/* Reset(branch through zero). */
#define ADP_Ctrl_VectorCatch_BranchThroughZero      (1 << 0)

/* Undefined Instruction. */
#define ADP_Ctrl_VectorCatch_UndefinedInstr         (1 << 1)

/* Software Interrupt. */
#define ADP_Ctrl_VectorCatch_SWI                    (1 << 2)

/* Prefetch Abort. */
#define ADP_Ctrl_VectorCatch_PrefetchAbort          (1 << 3)

/* Data Abort. */
#define ADP_Ctrl_VectorCatch_DataAbort              (1 << 4)

/* Address Exception. */
#define ADP_Ctrl_VectorCatch_AddressException       (1 << 5)

/* Interrupt Request. */
#define ADP_Ctrl_VectorCatch_IRQ                    (1 << 6)

/* Fast Interrupt Request. */
#define ADP_Ctrl_VectorCatch_FIQ                    (1 << 7)

/* Error. */
#define ADP_Ctrl_VectorCatch_Error                  (1 << 8)


#define ADP_Ctrl_PointStatus_Watch      ADPSUBREASON(CI_HADP,2)
/* ADP_Ctrl_PointStatus_Watch
 * --------------------------
 * Summary: Returns the hardware resource number and the type of that
 * resource when given a watchpoint handle.  Should only be called if
 * the value returned by ADP_Info_Points had ADP_Info_Points_Status set.
 *
 * Arguments:
 * Send:   (word handle)
 * Return: (word status, word hwresource, word type)
 *
 * 'handle' is a handle to a watchpoint.
 * 'status' is RDIError_NoError to indicate success, non-zero otherwise.
 * 'hwresource' is the hardware resource number. !!!!!
 * 'type' is the type of the resource.
 */


#define ADP_Ctrl_PointStatus_Break      ADPSUBREASON(CI_HADP,3)
/* ADP_Ctrl_PointStatus_Break
 * --------------------------
 * Summary: Returns the hardware resource number and the type of that
 * resource when given a breakpoint handle.  Should only be called if
 * the value returned by ADP_Info_Points had ADP_Info_Points_Status set.
 *
 * Arguments:
 * Send:   (word handle)
 * Return: (word status, word hwresource, word type)
 *
 * 'handle' is a handle to a breakpoint.
 * 'status' is RDIError_NoError to indicate success, non-zero otherwise.
 * 'hwresource' is the hardware resource number.

⌨️ 快捷键说明

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