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就出问题了,报错。