📄 bkenddoc.html
字号:
<hr><a name="bkendMemMove"></a><p align=right><a href="rtnIndex.html"><i>Target Server Back End Interface : Routines</i></a></p></blockquote><h1><i>bkendMemMove</i>( )</h1> <blockquote></a></blockquote><h4>NAME</h4><blockquote> <p><strong><i>bkendMemMove</i>( )</strong> - move a block of target memory</p></blockquote><h4>SYNOPSIS</h4><blockquote><p><pre>UINT32 bkendMemMove ( WDB_MEM_REGION * pWdbMemRegion /* memory region to copy */ )</pre></blockquote><h4>DESCRIPTION</h4><blockquote><p>This function moves a block of target memory from one location to another.It handles the case where source and destination blocks overlap.The memory move is described by a <b>WDB_MEM_REGION</b> structurepointed to by <i>pWdbMemRegion</i>.<p><pre>typedef struct wdb_mem_region /* a region of target memory */ { TGT_ADDR_T baseAddr; /* memory region base address */ TGT_INT_T numBytes; /* memory region size */ UINT32 param; /* proc dependent parameter */ } WDB_MEM_REGION;</pre><p>The region of target memory to move is described by the <b>baseAddr</b>and <b>numBytes</b> fields. The destination address is given in the<b>param</b> field.<p></blockquote><h4>RETURNS</h4><blockquote><p>OK on success or one of the following error codes:<dl><dt><b>WDB_ERR_COMMUNICATION</b><dd>The connection to the target has died.<p><dt><b>WDB_ERR_MEM_ACCES</b><dd> Invalid memory region.<p></dl></blockquote><h4>SEE ALSO</h4><blockquote><p><b><a href="./bkendDoc.html#top">bkendDoc</a></b>, * .I "API Programmer's Guide: Object Module Loader"<hr><a name="bkendMemRead"></a><p align=right><a href="rtnIndex.html"><i>Target Server Back End Interface : Routines</i></a></p></blockquote><h1><i>bkendMemRead</i>( )</h1> <blockquote></a></blockquote><h4>NAME</h4><blockquote> <p><strong><i>bkendMemRead</i>( )</strong> - read target memory</p></blockquote><h4>SYNOPSIS</h4><blockquote><p><pre>UINT32 bkendMemRead ( WDB_MEM_REGION * pWdbMemRegion, /* memory to read description */ WDB_MEM_XFER * pWdbMemXfer /* area to save the data read */ )</pre></blockquote><h4>DESCRIPTION</h4><blockquote><p>This function reads the target memory region described by a <b>WDB_MEM_XFER</b>structure pointed to by <i>pWdbMemRegion</i>.<p><pre>typedef struct wdb_mem_region /* a region of target memory */ { TGT_ADDR_T baseAddr; /* memory region base address */ TGT_INT_T numBytes; /* memory region size */ UINT32 param; /* proc dependent parameter */ } WDB_MEM_REGION;</pre><p>The target start address and the number of bytes to read are in the<b>baseAddr</b> and <b>numBytes</b> fields. The data will be copied to the host memoryaddress pointed to by <b>param</b>.<p>When this routine returns, it fills in the <b>WDB_MEM_XFER</b> structure pointedto by <i>pWdbMemXfer</i> with information about the memory transfer.<p><pre>typedef struct wdb_mem_xfer /* transfer a block of memory */ { WDB_OPQ_DATA_T source; /* data to transfer */ TGT_ADDR_T destination; /* requested destination */ TGT_INT_T numBytes; /* number of bytes transferred */ } WDB_MEM_XFER;</pre><p>It sets <b>source</b> equal to <b>baseAddr</b>, <b>numBytes</b> for <b>WDB_MEM_XFER</b>equal to <b>numBytes</b> for <b>WDB_MEM_REGION</b>,and <b>destination</b> equal to <b>param</b>.<p>If the data transfer is too large to be done at once (in other words,larger than the MTU of the target connection), the back end must break upthe transfer into a series of smaller transfers.<p></blockquote><h4>RETURNS</h4><blockquote><p>OK on success or one of the following error codes:<dl><dt><b>WDB_ERR_COMMUNICATION</b><dd>The connection to the target has died.<p><dt><b>WDB_ERR_MEM_ACCES</b><dd> Invalid memory region.<p></dl></blockquote><h4>SEE ALSO</h4><blockquote><p><b><a href="./bkendDoc.html#top">bkendDoc</a></b>, * .I "API Programmer's Guide: Target Server Back End"<hr><a name="bkendMemScan"></a><p align=right><a href="rtnIndex.html"><i>Target Server Back End Interface : Routines</i></a></p></blockquote><h1><i>bkendMemScan</i>( )</h1> <blockquote></a></blockquote><h4>NAME</h4><blockquote> <p><strong><i>bkendMemScan</i>( )</strong> - scan target memory for a pattern</p></blockquote><h4>SYNOPSIS</h4><blockquote><p><pre>UINT32 bkendMemScan ( WDB_MEM_SCAN_DESC * pWdbMemScan, /* scan descriptor */ TGT_ADDR_T * pAdrs /* addr found or -1 */ )</pre></blockquote><h4>DESCRIPTION</h4><blockquote><p>This function scans target memory for a specified pattern.The target memory region and the pattern are described by a<b>WDB_MEM_SCAN_DESC</b> structure pointed to by <i>pWdbMemScan</i>.If the pattern is found in the target memory region, the pattern startaddress is pointed to by <i>pAdrs</i>. Otherwise <i>pAdrs</i> is set to -1.<p><pre>typedef struct wdb_mem_scan_desc { WDB_MEM_REGION memRegion; /* region of memory to scan */ WDB_MEM_XFER memXfer; /* pattern to scan for */ } WDB_MEM_SCAN_DESC;</pre><p>The <b>memRegion</b> field describes the memory region to search.<p><pre>typedef struct wdb_mem_region /* a region of target memory */ { TGT_ADDR_T baseAddr; /* memory region base address */ TGT_INT_T numBytes; /* memory region size */ UINT32 param; /* proc dependent parameter */ } WDB_MEM_REGION;</pre><p>The <b>baseAddr</b> field describes where to start the search. If <b>numBytes</b>is positive, a forward search is performed; otherwise a backward search isperformed. If <b>param</b> is NULL, the search tries to match the pattern.Otherwise, the search stops at the first location where the pattern doesn'tmatch.<p>The <b>memXfer</b> field describes the pattern to look for.<p><pre>typedef struct wdb_mem_xfer /* transfer a block of memory */ { WDB_OPQ_DATA_T source; /* data to transfer */ TGT_ADDR_T destination; /* requested destination */ TGT_INT_T numBytes; /* number of bytes transferred */ } WDB_MEM_XFER;</pre><p>The <b>source</b> and <b>numBytes</b> fields point to a host buffer containingthe pattern. The <b>destination</b> field is unused.<p></blockquote><h4>RETURNS</h4><blockquote><p>OK on success or one of the following error codes:<dl><dt><b>WDB_ERR_COMMUNICATION</b><dd>The connection to the target has died.<p><dt><b>WDB_ERR_MEM_ACCES</b><dd>Invalid memory region.<p><dt><b>WDB_ERR_NOT_FOUND</b><dd> No match was detected.<p></dl></blockquote><h4>SEE ALSO</h4><blockquote><p><b><a href="./bkendDoc.html#top">bkendDoc</a></b>, * .I "API Programmer's Guide: Target Server Back End"<hr><a name="bkendMemWrite"></a><p align=right><a href="rtnIndex.html"><i>Target Server Back End Interface : Routines</i></a></p></blockquote><h1><i>bkendMemWrite</i>( )</h1> <blockquote></a></blockquote><h4>NAME</h4><blockquote> <p><strong><i>bkendMemWrite</i>( )</strong> - write target memory</p></blockquote><h4>SYNOPSIS</h4><blockquote><p><pre>UINT32 bkendMemWrite ( WDB_MEM_XFER * pWdbMemXfer /* memory to write description */ )</pre></blockquote><h4>DESCRIPTION</h4><blockquote><p>This function writes data to target memory. The memory region is describedby a <b>WDB_MEM_XFER</b> structure pointed to by <i>pWdbMemXfer</i>.<p><pre>typedef struct wdb_mem_xfer /* transfer a block of memory */ { WDB_OPQ_DATA_T source; /* data to transfer */ TGT_ADDR_T destination; /* requested destination */ TGT_INT_T numBytes; /* number of bytes transferred */ } WDB_MEM_XFER;</pre><p>The <b>source</b> field contains the address of a buffer on the host whichis to be transferred to the target. The <b>numBytes</b> field specifiesthe number of bytes to write. The <b>destination</b> field specifies thetarget address which will receive the data.<p>If the data transfer is too large to be done at once (in other words,larger than the MTU of the target connection), the back end must break upthe transfer into a series of smaller transfers.<p></blockquote><h4>RETURNS</h4><blockquote><p>OK on success or one of the following error codes:<dl><dt><b>WDB_ERR_COMMUNICATION</b><dd>The connection to the target has died.<p><dt><b>WDB_ERR_MEM_ACCES</b><dd> Invalid memory region.<p></dl></blockquote><h4>SEE ALSO</h4><blockquote><p><b><a href="./bkendDoc.html#top">bkendDoc</a></b>, * .I "API Programmer's Guide: Target Server Back End"<hr><a name="bkendModeGet"></a><p align=right><a href="rtnIndex.html"><i>Target Server Back End Interface : Routines</i></a></p></blockquote><h1><i>bkendModeGet</i>( )</h1> <blockquote></a></blockquote><h4>NAME</h4><blockquote> <p><strong><i>bkendModeGet</i>( )</strong> - get the debugging mode</p></blockquote><h4>SYNOPSIS</h4><blockquote><p><pre>UINT32 bkendModeGet ( u_int * pMode /* where to return debugging mode */ )</pre></blockquote><h4>DESCRIPTION</h4><blockquote><p>This function return the current debugging mode of the agent in thelocation pointed to by <i>pMode</i>.<p></blockquote><h4>RETURNS</h4><blockquote><p>OK on success or one of the following error codes:<dl><dt><b>WDB_ERR_COMMUNICATION</b><dd> The connection to the target has died.<p></dl></blockquote><h4>SEE ALSO</h4><blockquote><p><b><a href="./bkendDoc.html#top">bkendDoc</a></b>, * .I "API Programmer's Guide: Target Server Back End"<hr><a name="bkendModeSet"></a><p align=right><a href="rtnIndex.html"><i>Target Server Back End Interface : Routines</i></a></p></blockquote><h1><i>bkendModeSet</i>( )</h1> <blockquote></a></blockquote><h4>NAME</h4><blockquote> <p><strong><i>bkendModeSet</i>( )</strong> - set the debugging mode</p></blockquote><h4>SYNOPSIS</h4><blockquote><p><pre>UINT32 bkendModeSet ( u_int * pMode /* debugging mode to set */ )</pre></blockquote><h4>DESCRIPTION</h4><blockquote><p>This function sets the debugging mode to either <b>WDB_MODE_TASK</b>or <b>WDB_MODE_EXTERN</b>. Hardware back ends generally only supportthe <b>WDB_MODE_EXTERN</b> mode, as they are unable to performtasking services such as spawning tasks and creating task-specific breakpoints.<p></blockquote><h4>RETURNS</h4><blockquote><p>OK on success or one of the following error codes:<dl><dt><b>WDB_ERR_COMMUNICATION</b><dd>The connection to the target has died.<p><dt><b>WDB_ERR_AGENT_MODE</b><dd> The requested mode is not supported.<p></dl></blockquote><h4>SEE ALSO</h4><blockquote><p><b><a href="./bkendDoc.html#top">bkendDoc</a></b>, * .I "API Programmer's Guide: Target Server Back End"<hr><a name="bkendRegsGet"></a><p align=right><a href="rtnIndex.html"><i>Target Server Back End Interface : Routines</i></a></p></blockquote><h1><i>bkendRegsGet</i>( )</h1> <blockquote></a></blockquote><h4>NAME</h4><blockquote> <p><strong><i>bkendRegsGet</i>( )</strong> - get target register value(s)</p></blockquote><h4>SYNOPSIS</h4><blockquote><p><pre>UINT32 bkendRegsGet ( WDB_REG_READ_DESC * pWdbRegRead, /* register to get */ WDB_MEM_XFER * pWdbMemXfer /* area to save reg values */ )</pre></blockquote><h4>DESCRIPTION</h4><blockquote><p>This function gets CPU register value(s).The registers to get are described by a <b>WDB_REG_READ_DESC</b> structurepointed to by <i>pWdbRegRead</i>.<p><pre>typedef struct wdb_reg_read_desc /* register data to read */ { WDB_REG_SET_TYPE regSetType; /* type of register set to read */ WDB_CTX context; /* context associated with registers */ WDB_MEM_REGION memRegion; /* subregion of the register block */ } WDB_REG_READ_DESC;</pre><p>The <b>regSetType</b> field specifies the type of registers to read.The back end must support reading integer unit registers (<b>WDB_REG_SET_IU</b>)and must also support floating point registers (<b>WDB_REG_SET_FPU</b>) if theCPU has floating-point support. Additional register-set types are optional.The <b>context</b> field specifies the context whose registers are to be read.If <b>context.contextType</b> is <b>WDB_CTX_SYSTEM</b>, the register valuesthe last time the system was stopped are read (this only makes sensewhen doing system-mode debugging). If <b>context.contextType</b> is <b>WDB_CTX_TASK</b>,then registers are read from the task whose ID is <b>context.contextID</b>.<p>A register set is treated as an opaque block of memory by theback end. For floating-point registers, this block is described bythe VxWorks data structure <b>FPREG_SET</b>. For integer unit registers,it is described by the VxWorks data structure <b>REG_SET</b>.<p>To avoid the delay of uploading an entire register block when onlysome of the registers are actually needed, this routine allows readingof a sub-block of the register structure. This sub-block is specifiedby the <b>memRegion</b> fields <b>memRegion.baseAddr</b> and <b>memRegion.numBytes</b>.<p>The resulting register block is transferred up to the host via
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -