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.

[参考译文] CCS/MSP-EXP432P401R:OutOfBox 演示不能与 GCC 配合使用

Guru**** 2553450 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/595253/ccs-msp-exp432p401r-outofbox-demo-doesn-t-work-with-gcc

器件型号:MSP-EXP432P401R

工具/软件:Code Composer Studio

MSP-EXP432随附 OutOfBox 演示。


我开始尝试在 Linux 上的 CCS 之外使用 gcc 编译和重新安装它。 这引起了一些头痛、因为我的工具都已配置并正常工作、但演示仍然根本不起作用。 没有编译错误、没有闪存错误、显然有一些东西被刷写、因为现在演示根本没有运行、或者至少没有任何 LED 闪烁。


然后我尝试使用 CCS 云版本(CCS Linux 安装程序在 Fedora 上的一个奇怪的循环中反复解压缩这两个文件、我真的不会尝试修复损坏的软件;我只使用其他东西)、同样的事情:编译、闪存、不执行任何操作。 已使用 CCS 编译器再次尝试、但它确实起作用、会愉快地闪烁。


然后我备份了、并使用命令行中的常规 GCC 尝试了 SDK 中的常规闪烁示例、效果很好。 使用 dslite.sh 刷写操作正常。 我已经尝试过大约一半的 SDK 示例、它们都可以正常工作。 我发现的唯一不适用于 GCC 的功能是 OutOfBox 演示。


对于新用户来说、有一点 pita、但一旦他们在上面花了足够长的时间尝试常规 SDK 闪烁演示并验证设置、显然就不再重要了。

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

    感谢您在论坛上发帖、感谢您的反馈。

    我们将对此进行研究。

    此致、

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

    您好、巴黎、

    非常抱歉、您遇到了开箱即用演示的此类问题。 我查看了项目源代码、发现问题可能出在其 startup_msp432p401r.c 启动文件中的 Reset_Handler (void)缺少几个关键行(3 - 12):

    void Reset_Handler (void)
    {
    uint32_t * pui32Src、* pui32Dest;
    
    //
    //将数据段初始化程序从闪存复制到 SRAM。
    //
    pui32Src =&__DATA_LOAD__;
    for (pui32Dest =&__data_start__;pui32Dest <&__DATA_end__;)
    {
    *pui32Dest++=*pui32Src++;
    }
    
    /*调用系统初始化例程*/
    SystemInit();
    
    /*跳转到主初始化例程。 *
    _mainCRTStartup();
    } 

    如果不将数据段初始化程序从闪存复制到 SRAM、则 stdlib 中的 srand()和 rand()函数无法正确执行、从而导致 OOB 演示在默认处理程序中挂起。

    我认为此错误是在1.20和1.30 SDK 版本之间引入的、并且此修复程序已准备好在下一个 SDK 更新中发布。 希望这能解决这个问题。

    此致、
    Eric C.

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

    谢谢! 来解决它。


    查看我测试过的其他示例,似乎其中许多示例都具有 startup *.c 文件,没有错误,这说明了它们为什么起作用。 除了常规闪烁演示、我想它不会使用任何命中的内容。


    这将对我有所帮助、因为我想知道哪些演示可用作我自己项目的起点。 如果我没有数据段、我肯定会一直把我的头部撞到墙上。