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.

[参考译文] 编译器/TMS570LC4357:TMS570LC4357

Guru**** 2535750 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/759530/compiler-tms570lc4357-tms570lc4357

器件型号:TMS570LC4357

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

您好!

我想在芯片上运行一个糟糕的程序。 我面临两个主要问题:

第一个是,如果我以这种方式进行阵列初始化:  

xmss_params 参数;
// TODO 测试更多不同的 OID
uint32_t OID = 0x00000001;

//对于 WOTS,我们使用 XMSS 或 XMSSMT 无关紧要。 *
xmss_pars_OID (&params、OID);

unsigned char seed[params.n]; 

程序进入无限循环。

我手动定义了数组的大小。 例如  

unsigned char seed[32]; 

这是不切实际的。 它是另一种解决方案吗?

-第二个问题是:当我向主函数添加代码行时,程序在第一行停止,并且调试器指示这些代码行数据条目:

resetEntry
b resetEntry
undefEntry
b undefEntry
svcEntry
b svcEntry
预取 Entry
b prefetchEntry
DataEntry
b DataEntry
b 相位中断
LDR PC、[PC、#-0x1b0]
LDR PC、[PC、#-0x1b0]

当我删除最后的代码行并最小化主函数的大小时、错误消失。

Bests、

Rachel。

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

    至于使用可变长度声明此本地数组...

    [引用 user="Soundes Marzougui"] unsigned char seed[params.n];[/引用]

    这是一种称为可变长度数组的功能。  简而言之、我将其称为 VLA。  TI ARM 编译器支持 VLA。  但是、它会调用 RTS 库中的一个特殊函数、该函数最终会调用 malloc。  因此、您需要确保分配了足够的堆存储器、否则会无提示地失败。  请参阅 此论坛主题 以了解相关讨论。  该主题涉及 MSP430上的 VLA、但同样的概念适用于 TI ARM 编译器。

    Soundes Marzougui 说:
    以解决我手动定义数组大小的问题。

    我意识到这不是理想的。  但它比 VLA 简单得多。  我怀疑这是您的最佳选择。

    关于...

    [引用 user="Soundes Marzougui"]当我向主函数添加代码行时,程序会在第一行停止,调试器会指示这些代码行数据条目:

    我怀疑此失败的根本原因发生在早得多的时候、并导致程序以不受控制的方式执行。  它最终在中断矢量中停止、这正是调试器向您展示的内容。

    [引用 user="Soundes Marzougui"]当我删除最后一行代码时

    我不确定您说添加代码行或删除代码行是什么意思。  请给出具体示例。

    谢谢、此致、

    乔治