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.

[参考译文] 编译器:编译器不能在我的某个主板上工作

Guru**** 2595805 points
Other Parts Discussed in Thread: LM3S6965

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/584690/compiler-compiler-doesn-t-work-on-one-of-my-boards

在“线程:LM3S6965”中讨论的其它部件

工具/软件:TI C/C++编译器

您好,

我正在使用LM3S6965评估套件(带以太网和OLED显示屏)。 我从StellarisWare导入了一个项目并对其进行了编译,但当我尝试对其进行调试时,它无法执行应有的操作。

起初我以为这是一个屏幕错误,因为绿线指示接下来要执行哪条线,不停地来回跳,有时完全跳过线。 然后我注意到这些例子是行不通的。 在尝试设置eclipse以使用此主板后,我决定浏览生成的程序集,并注意到错误是来自编译器而不是代码编写器的COE。 在生成的装配体中,我可以清楚地看出线被忽略,重新排序,有时执行两次。 例如:

SysCtlPeripheralEnable(sysctl_Periph_ETH);
SysCtlPeripheralReset(sysctl_Periph_ETH); 

首先执行重置,然后启用,然后再次重置。

上面的行指出,这应该不是程序的问题,而不是。 问题出在诸如netif_add之类的函数中(我正在尝试编译Enet_IO示例)。 其中有一个名为init()的函数。 init是一个返回值的函数,但关于该函数,它的设置方式总是返回ERR_OK,所以...此行

如果(init(netif)!= ERR_OK){
返回NULL;
} 

永远不应该发生,但它仍然存在。 当我看到生成的程序集时,我注意到它没有编译返回ERR_OK。

不仅发生了这种情况,还会发生更多奇怪的错误,我不知道如何解决。 我正在使用6.1 (我尝试安装CCS7,但安装大多数驱动程序失败)。 在最新版本StellarisWare之前发布的CCS 5.1 的最新版本即将发布时,我将下载该版本,因此它应该可以正常工作。

我注意到原始程序是使用TI编译器4.9 制作的,但我必须将其更改为最新的编译器,否则它会给我一个错误代码,而不是编译。

可能是什么问题? 这是否为已知错误? 我的安装是否有问题? 我将在5.1 中发布我的发现,但似乎永远不应该发生这种情况

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Pablo Cottens 说:
    在生成的装配体中,我可以清楚地看出线条被忽略,重新排序,有时执行两次。

    您到底在做什么,看到什么,您就得出了这一结论?  生成的装配体是否显示不正确?  或者,您在CCS中单步执行时看到了这种意外行为? 或者什么?

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我可以在生成的装配体中看到指令正在重复。 想象一下以下示例:

    int main()
    {
    Int计数器= 0;
    Int retval = 0;
    int i;
    
    
    对于(i;i < 5;I++){
    printf ("说点什么");
    计数器++;
    }
    
    返回retval;
    }
    

    在生成的装配体中,我会看到类似以下的内容:

    计数器= 0;

    RetVal = 0;

    计数器= 0;

    ...

    printf ("说点什么")// 5次

    //这里我看不到 计数器变量的增量

    它不会为返回重新评估生成代码;

    我说的是,我在调试器中看到了这种行为,这导致我检查生成的程序集,我可以清楚地看到它的行为与我在上面解释的完全相同(跳过代码行,重复代码行等)。 写入寄存器的某些内部功能甚至不会执行,更确切地说,从未调用该功能,例如以太网端口的初始化)。

    实际上,我找到了一个解决方案,我恢复了CCS 5.2。 我有一个理论,这可能是由于我的防病毒软件导致安装失败(安装被显示为失败或任何情况)而导致的。 或者,更新的编译器可能与Stellaris板的交互不是很好,但我的钱花在了防病毒方面

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    什么是OPT级别? 可能会有一些循环展开。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    由于...

    Pablo Cottens 说:
    这可能是由于我的防病毒软件导致安装被僵尸造成的

    ...您可能无法重现此问题行为...

    Pablo Cottens 说:
    在生成的装配体中,我可以看到指令正在重复。

    但是,如果您可以,我希望您提交一个测试案例,让我也能看到这一点。  请按照以下步骤操作。

    1. 预处理 显示此问题的一个源文件
    2. 将其附加到您的下一篇文章中
    3. 按照编译器看到的内容准确显示所有生成选项
    4. 指示所使用的编译器(而不是CCS)的版本

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的...对不起,我花了这么长的时间才回答。 我没有使用优化。 在此期间,我格式化了我的PC,重新安装了所有内容,它刚刚开始工作...这可能是我的PC上的配置有问题
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉,我花了这么长时间才回答。 正如我之前的一个评论所说的,这可能是由于我的PC出现问题...甚至安装也不明显。 我只是用相同的版本格式化了我的PC,重新安装了CCS,它就开始工作了。