ZHCUAV7Z september 1995 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
ARM cpy_tbl.h 文件中的 cpy_tbl.h 文件还包含运行时支持库中提供的通用复制例程 copy_in() 的原型。copy_in() 例程只接受一个参数:由链接器生成的复制表的地址。该例程随后会处理复制表数据对象,并执行复制表中指定的每个对象组件的复制。
运行时支持 cpy_tbl.c 文件显示的 cpy_tbl.c 运行时支持源文件中提供了 copy_in() 函数定义。
/*****************************************************************************/
/* cpy_tbl.c v##### */
/* */
/* 通用复制例程。 给定由链接器生成的 */
/* COPY_TABLE 数据结构的地址,通过 */
/* 相应的 LCF table() 运算符复制指定用于复制的所有对象组件。 */
/*****************************************************************************/
#include <cpy_tbl.h>
#include <string.h>
typedef void (*handler_fptr)(const unsigned char *in, unsigned char *out)
/*****************************************************************************/
/* COPY_IN() */
/*****************************************************************************/
void copy_in(COPY_TABLE *tp)
{
unsigned short I;
for (I = 0; I < tp->num_recs; I++)
{
COPY_RECORD crp = tp->recs[i];
unsigned char *ld_addr = (unsigned char *)crp.load_addr;
unsigned char *rn_addr = (unsigned char *)crp.run_addr;
if (crp.size)
{
/*------------------------------------------------------------------*/
/* 复制记录具有非零大小,因此数据不会被压缩。 */
/* 仅复制数据。 */
/*------------------------------------------------------------------*/
memcpy(rn_addr, ld_addr, crp.size);
}
}
}