This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28335: memcpy() 跑飞使得定时器2挂了

Part Number: TMS320F28335

我在程序里使用memcpy 会使得定时器2挂掉
但是我把memcpy() 从memcpy.c 里面移出来 放到自定义的.c就是可以运行的
下图是在memcpy.c里实现的情况 会把定时器2干翻


调用的时候汇编代码

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
C$L102:
329e84: 8342 MOVL XAR5, *-SP[2]
329e85: 021E MOVB ACC, #30
329e86: 0742 ADDL ACC, *-SP[2]
329e87: 8AA9 MOVL XAR4, @ACC
329e88: 83F5 MOVL XAR5, *+XAR5[6]
329e89: 0EC4 MOVU ACC, *+XAR4[0]
329e8a: 8A44 MOVL XAR4, *-SP[4]
329e8b: 7672BBCD LCR memcpy
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

memcpy的代码段

Fullscreen
1
2
32bbcd: 7672BBCD LCR memcpy
32bbcf: 0006 LRETR
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • 官方也是用了这个函数memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);说明这个函数没有问题。memcpy.c是哪里来的?

  • 我认为是编译器自带的 我没有使用memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize); 用了自定义的