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.

[参考译文] 编译器/MSP430-GCC-opensource:MSP430-GCC CAN#39;t 对超过4K 的数组使用 memset

Guru**** 2265200 points
Other Parts Discussed in Thread: MSP430F5529, MSP430-GCC-OPENSOURCE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/731744/compiler-msp430-gcc-opensource-msp430-gcc-can-t-use-memset-for-more-than-4k-arrays

器件型号:MSP430-GCC-opensource
主题中讨论的其他器件:MSP430F5529

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

大家好、我在 Linux 上将 msp430f5529与 MSP430-GCC-opensource 一起使用、当我尝试将 buf[4096]设置为0时、就像这样

#define BUFSIZE 2048
uint8_t buf[BUFSIZE];
int main (void)
{
WDTCTL = WDTPW + WDTHOLD; //停止 WDT

memset (buf、0x00、sizeof (uint8_t)* BUFSIZE); 

程序将停留在 main 函数之前。当我调试时、我发现编译器将在 main 之前自动生成 memset、如果 BUFSIZE 太大(2048正常、但4096无法正常工作)。

为什么?

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

    启动代码会在 main 开始之前将所有未初始化的变量(如 buf)设置为0。  我猜看门狗计时器在启动期间会关闭。  我知道如何在 TI MSP430编译器使用的启动代码期间禁用看门狗。  我不知道如何使用 GCC MSP430编译器来实现它。  我将就此向您回复。

    谢谢、此致、

    乔治

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

    请尝试 此论坛主题末尾讨论的解决方案。

    谢谢、此致、

    乔治