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

变量赋值语句无效 6678,请同行们帮忙看看

例如下情况:
main.c里
include "main.h"
int i,j;
int main()
{
    j=0;
    for(i=0;i<3;i++)
   {
      j++;
   }
   ukk();
}

mian.h里

include "ukk.h"

ukk.c里

void ukk()

{
    int i,j;
    i=j=0;
    for(i=0;i<3;i++)
   {
      j++;
   }
}

问题:main函数和别的函数里的i和j都可以进行赋值为0,然后进入循环,但是ukk这个函数就不行,不知道为什么,一到i的时候,i=521345321(地址是82bb45d8),j=10682378.(地址是82bb45dc),就是很大的一个数,会直接跳出循环。
猜测:是不是因为地址的原因,我看debug下的map函数,ukk.obj(.text)地址是82b9c400,ukk.obj(.text)地址是82bbb0b8,然后有的ukk的函数地址是82b9cc30
 
 
Nancy Wang:

你是指ukk()中的i,j变量无法初始化为0?我试了一下没问题,只是没加上你提到的头文件。cmd文件和GEL文件都添加了吗?

user6426306:

回复 Nancy Wang:

添加了,我运行别的函数也没有这样的问题,单独是最后一个函数出现了这样的事情,我怀疑是不是内部地址的原因,您看看那个我下面写的猜测

Nancy Wang:

回复 user6426306:

cmd文件贴出来看一下。

user6426306:

回复 Nancy Wang:

6678cmd.txt

Nancy Wang:

回复 user6426306:

你说的地址原因是指什么?
分配的地址是在DDR3。
/* 多核共享内存及 DDR3 */
#ifdef SOC_C6678MSMCSRAMo = 0x0C000000 l = 0x00400000/* 4MB多核共享内存 (DSP C6678) */DDR3o = 0x80000000 l = 0x40000000/* 1GBDDR3 (DSP C6678) */

user6426306:

回复 Nancy Wang:

如我上面提问里:问题和猜测部分:就是在.map文件里可以看到这个函数的入口地址(UKK.obj (.text)是82b9c400,里面的变量地址都是82bbb0b800000120UKK.obj (.const:$P$T0$1)82bbb1d800000120UKK.obj (.const:$P$T1$2)82bbb2f800000120UKKobj (.const:$P$T2$3)82bbb41800000120UKK.obj (.const:$P$T3$4))
可是我在函数里定义的int i,j,显示i地址是82bb45d8,j地址是82bb45dc)
怀疑1:UKK.obj (.const)的地址是不是应该和我的ij地址相同?
怀疑2:ij这里的地址有什么值吗,为啥显示的值不是我赋值的量,也就是不能赋值

Nancy Wang:

回复 user6426306:

.bss段是存放未初始化的全局变量。查一下map文件中的i j分别被分配到哪个段。你定义的局部变量i,j在没有被赋值前,系统会分配一个随机值,另外建议局部变量换一下变量名。
你将工程上传,我试一下。

赞(0)
未经允许不得转载:TI中文支持网 » 变量赋值语句无效 6678,请同行们帮忙看看
分享到: 更多 (0)