TI中文支持网
TI专业的中文技术问题搜集分享网站

RamfuncsRunStart 在C文件中定义是UINT16* ,即是指针,为何在memcpy(&RamfuncsRunStart,

RamfuncsRunStart 在C文件中定义是UINT16* ,即是指针,为何在memcpy(&RamfuncsRunStart,
               &RamfuncsLoadStart,
               &RamfuncsLoadEnd – &RamfuncsLoadStart);以取址的方式传递到函数内部,本人理解为不需要取址.RamfuncsRunStart 的值表示的FLASH中的起始地址,同理RamfuncsRunEnd的值也示FLASH中的最后地址,MEMCPY参数为何以普通变量的方式传递呢?

Martin Yu:

请看这个函数的具体声明:

_CODE_ACCESS void   *memcpy(void *s1, const void *s2, size_t n);

RamfuncsRunStart 在C文件中定义是UINT16* ,即是指针,为何在memcpy(&RamfuncsRunStart,
               &RamfuncsLoadStart,
               &RamfuncsLoadEnd – &RamfuncsLoadStart);以取址的方式传递到函数内部,本人理解为不需要取址.RamfuncsRunStart 的值表示的FLASH中的起始地址,同理RamfuncsRunEnd的值也示FLASH中的最后地址,MEMCPY参数为何以普通变量的方式传递呢?

yijun zhen:

回复 Martin Yu:

RAMFUNSTART也是个指针啊。

RamfuncsRunStart 在C文件中定义是UINT16* ,即是指针,为何在memcpy(&RamfuncsRunStart,
               &RamfuncsLoadStart,
               &RamfuncsLoadEnd – &RamfuncsLoadStart);以取址的方式传递到函数内部,本人理解为不需要取址.RamfuncsRunStart 的值表示的FLASH中的起始地址,同理RamfuncsRunEnd的值也示FLASH中的最后地址,MEMCPY参数为何以普通变量的方式传递呢?

rookiecalf:

回复 yijun zhen:

简单的说,这是C语言语法

RamfuncsRunStart 在C文件中定义是UINT16* ,即是指针,为何在memcpy(&RamfuncsRunStart,
               &RamfuncsLoadStart,
               &RamfuncsLoadEnd – &RamfuncsLoadStart);以取址的方式传递到函数内部,本人理解为不需要取址.RamfuncsRunStart 的值表示的FLASH中的起始地址,同理RamfuncsRunEnd的值也示FLASH中的最后地址,MEMCPY参数为何以普通变量的方式传递呢?

yijun zhen:

回复 rookiecalf:

extern Uint16 *RamfuncsLoadStart, *RamfuncsLoadEnd, *RamfuncsRunStart;

以上是声明变量类型,不用实参以把自已的地址传进去吧。

RamfuncsRunStart 在C文件中定义是UINT16* ,即是指针,为何在memcpy(&RamfuncsRunStart,
               &RamfuncsLoadStart,
               &RamfuncsLoadEnd – &RamfuncsLoadStart);以取址的方式传递到函数内部,本人理解为不需要取址.RamfuncsRunStart 的值表示的FLASH中的起始地址,同理RamfuncsRunEnd的值也示FLASH中的最后地址,MEMCPY参数为何以普通变量的方式传递呢?

yijun zhen:

回复 rookiecalf:

跟C没有关糸。

RamfuncsRunStart 在C文件中定义是UINT16* ,即是指针,为何在memcpy(&RamfuncsRunStart,
               &RamfuncsLoadStart,
               &RamfuncsLoadEnd – &RamfuncsLoadStart);以取址的方式传递到函数内部,本人理解为不需要取址.RamfuncsRunStart 的值表示的FLASH中的起始地址,同理RamfuncsRunEnd的值也示FLASH中的最后地址,MEMCPY参数为何以普通变量的方式传递呢?

yijun zhen:

回复 Martin Yu:

Ramfuncsloadstart,ramfuncsloadend,ramfuncsrunstart 是指向UINT16的指针变量,还是一个普通的UINT16变量,我实在迷或,查以前的ccs版本是UINT16,现在用的CCS6.0是UINT16*,而MEMCOPY原型都相同,何故,引用,传递三个变量的方法也一样。请TI解答。

RamfuncsRunStart 在C文件中定义是UINT16* ,即是指针,为何在memcpy(&RamfuncsRunStart,
               &RamfuncsLoadStart,
               &RamfuncsLoadEnd – &RamfuncsLoadStart);以取址的方式传递到函数内部,本人理解为不需要取址.RamfuncsRunStart 的值表示的FLASH中的起始地址,同理RamfuncsRunEnd的值也示FLASH中的最后地址,MEMCPY参数为何以普通变量的方式传递呢?

Martin Yu:

回复 yijun zhen:

这是两个函数memcopy()和memcpy()., 建议用后者,关于这两个函数的具体差别,请参考:

http://e2e.ti.com/support/microcontrollers/c2000/f/171/t/197807

RamfuncsRunStart 在C文件中定义是UINT16* ,即是指针,为何在memcpy(&RamfuncsRunStart,
               &RamfuncsLoadStart,
               &RamfuncsLoadEnd – &RamfuncsLoadStart);以取址的方式传递到函数内部,本人理解为不需要取址.RamfuncsRunStart 的值表示的FLASH中的起始地址,同理RamfuncsRunEnd的值也示FLASH中的最后地址,MEMCPY参数为何以普通变量的方式传递呢?

Martin Yu:

回复 Martin Yu:

http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/93973.aspx

RamfuncsRunStart 在C文件中定义是UINT16* ,即是指针,为何在memcpy(&RamfuncsRunStart,
               &RamfuncsLoadStart,
               &RamfuncsLoadEnd – &RamfuncsLoadStart);以取址的方式传递到函数内部,本人理解为不需要取址.RamfuncsRunStart 的值表示的FLASH中的起始地址,同理RamfuncsRunEnd的值也示FLASH中的最后地址,MEMCPY参数为何以普通变量的方式传递呢?

yijun zhen:

回复 Martin Yu:

我的本意这三个变量的类型不同,以是是UINT16,而现在是UINT16*,是否有不同的含义.

RamfuncsRunStart 在C文件中定义是UINT16* ,即是指针,为何在memcpy(&RamfuncsRunStart,
               &RamfuncsLoadStart,
               &RamfuncsLoadEnd – &RamfuncsLoadStart);以取址的方式传递到函数内部,本人理解为不需要取址.RamfuncsRunStart 的值表示的FLASH中的起始地址,同理RamfuncsRunEnd的值也示FLASH中的最后地址,MEMCPY参数为何以普通变量的方式传递呢?

user4880999:

回复 yijun zhen:

我也发现了您这个问题,请问您现在搞懂了么????我是移植过程遇到这个问题,从f28035到f28027.  源文件中使用unit16* 配合memcopy没报错。。。我放入f28027就出问题了,报错。

赞(0)
未经允许不得转载:TI中文支持网 » RamfuncsRunStart 在C文件中定义是UINT16* ,即是指针,为何在memcpy(&RamfuncsRunStart,
分享到: 更多 (0)