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

使用ti-cgt-c2000_V5.2.1编译程序正常运行,改用ti-cgt-c2000_V6.4.12编译器或是其他高版本编译器,编译的文件无法正常运行。

使用ti-cgt-c2000_V5.2.1编译程序正常运行,改用ti-cgt-c2000_V6.4.12编译器或是其他高版本编译器,编译的文件无法正常运行,调试中程序流有问题。

HeiHei:

能不能把问题截图贴上来哈

使用ti-cgt-c2000_V5.2.1编译程序正常运行,改用ti-cgt-c2000_V6.4.12编译器或是其他高版本编译器,编译的文件无法正常运行,调试中程序流有问题。

Seven Han:

你好,建议你查下编译器型号,看他支持的css版本具体是哪个。

使用ti-cgt-c2000_V5.2.1编译程序正常运行,改用ti-cgt-c2000_V6.4.12编译器或是其他高版本编译器,编译的文件无法正常运行,调试中程序流有问题。

Eric Ma:

用高版本的编译器时,看一下工程属性中的CCS compiler中的优化选项里面是否有开优化级别,试一下把优化关掉。

另外,从我的角度上讲,如果用高版本的编译器编译程序出现问题,我认为还是你的程序还是有问题。首先rebuild project看一下编译后出现什么警告内容。另外,在调试时,逐步调试看看。

ERIC

使用ti-cgt-c2000_V5.2.1编译程序正常运行,改用ti-cgt-c2000_V6.4.12编译器或是其他高版本编译器,编译的文件无法正常运行,调试中程序流有问题。

user3782633:

回复 HeiHei:

使用ccs6.2 编译器用过6.4和最新的17,程序最终就会死在图中的那条注释上。

使用ti-cgt-c2000_V5.2.1编译程序正常运行,改用ti-cgt-c2000_V6.4.12编译器或是其他高版本编译器,编译的文件无法正常运行,调试中程序流有问题。

user3782633:

回复 Eric Ma:

编译器并没有报什么错误和警告。 优化也是关掉的。可能是因为程序中用了比较老的ucos系统调度导致的。但还没找到具体原因。单步调试时程序会死在一条注释语句上,应该是跑飞了。

使用ti-cgt-c2000_V5.2.1编译程序正常运行,改用ti-cgt-c2000_V6.4.12编译器或是其他高版本编译器,编译的文件无法正常运行,调试中程序流有问题。

user3782633:

回复 Eric Ma:

高版本编译运行两个结构体赋值的结果。这个memcpy的代码存在问题。 

使用ti-cgt-c2000_V5.2.1编译程序正常运行,改用ti-cgt-c2000_V6.4.12编译器或是其他高版本编译器,编译的文件无法正常运行,调试中程序流有问题。

user3782633:

回复 Eric Ma:

//————6.2.11 编译器目录下的memcpy.c方法如下———————-
#include <string.h>

void *memcpy(void *to, const void *from, size_t n)
{
return memcpy(to, from, n); /* NOTE: MEMCPY() IS A BUILTIN FUNCTION */
}

//—————————————————————————————

//———–17.3.0编译器目录下的memcpy.c方法代码如下—————-

#include <string.h>
void *memcpy(void *to, const void *from, size_t n)
{
register char *rto = (char *) to;
register char *rfrom = (char *) from;
register unsigned int rn;
register unsigned int nn = (unsigned int) n;

/***********************************************************************/
/* Copy up to the first 64K. At the end compare the number of chars */
/* moved with the size n. If they are equal return. Else continue to */
/* copy the remaining chars. */
/***********************************************************************/
for (rn = 0; rn < nn; rn++) *rto++ = *rfrom++;
if (nn == n) return (to);

/***********************************************************************/
/* Write the memcpy of size >64K using nested for loops to make use */
/* of BANZ instrunction. */
/***********************************************************************/
{
register unsigned int upper = (unsigned int)(n >> 16);
register unsigned int tmp;
for (tmp = 0; tmp < upper; tmp++)
        {
for (rn = 0; rn < 65535; rn++)
                *rto++ = *rfrom++;
         *rto++ = *rfrom++;
        }
}

return (to);
}
//————————————————————————————–

具体为什么出错,真的搞不清。

使用ti-cgt-c2000_V5.2.1编译程序正常运行,改用ti-cgt-c2000_V6.4.12编译器或是其他高版本编译器,编译的文件无法正常运行,调试中程序流有问题。

jixiang shu:

回复 user3782633:

你好,找到这个问题胡原因了吗?我目前也遇到了

使用ti-cgt-c2000_V5.2.1编译程序正常运行,改用ti-cgt-c2000_V6.4.12编译器或是其他高版本编译器,编译的文件无法正常运行,调试中程序流有问题。

user3782633:

回复 jixiang shu:

我遇到的原因是因为新版本的编译器memcpy函数的问题,新版本编译器需要自己重写memcpy函数,然后就正常了。

赞(0)
未经允许不得转载:TI中文支持网 » 使用ti-cgt-c2000_V5.2.1编译程序正常运行,改用ti-cgt-c2000_V6.4.12编译器或是其他高版本编译器,编译的文件无法正常运行。
分享到: 更多 (0)