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.

[参考译文] CC1312R7:堆栈的堆栈指针#39;CSTACK'(当前为0x200216A0)在堆栈范围之外(0x20023800至0x20024000)

Guru**** 2484615 points


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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1187561/cc1312r7-the-stack-pointer-for-stack-cstack-currently-0x200216a0-is-outside-the-stack-range-0x20023800-to-0x20024000

器件型号:CC1312R7

大家好、

我正在尝试使用 TI 的 AESECB 加密库、在使用 IAR 进行调试时遇到 CSTACK 超出堆栈范围错误(运行时)。

我尝试在 ICF 文件中更改堆栈大小、但 它太大、也没有帮助。

以下是我尝试执行的代码:

AESECB 句柄;
CryptoKey 加密密钥;
int_fast16_t 加密 Result;
uint8_t 明文[]={0x6b、0xc1、0xbe、0x2、0x2e、 0x40、0x9f、0x96、
0xe9、0x3D、0x7E、0x11、0x73、 0x93、0x17、0x2a、
0xae、0x2D、0x8a、0x57、0x1E、 0x03、0xac、0x9C、
0x9e、0xb7、0x6f、0xac、0x45、 0xaf、0x8e、0x51};
uint8_t 密文[32];
uint8_t 密钥材料[16]={0x2b、0x7E、0x15、0x16、0x28、 0xae、0xd2、0xa6、
0xab、0xf7、0x15、0x88、0x09、 0xCF、0x4f、0x3c};
句柄= AESECB_OPEN (0、NULL);
if (handle == NULL){
//处理错误

CryptoKeyPlaintext_initKey (加密密钥、密钥材料、sizeof (密钥材料));
AESECB 操作;
AESECB _操作_初始化(&operation);
operation.key =加密密钥(&C);
operation.input =纯文本;
operation.output =密文;
operation.inputLength = sizeof (明文);
EncryptionResult = AESECB_oneStepEncrypt (handle、&operation);
if (加密 Result!= AESECT_STATUS_SUCCESS){
//处理错误

//生成的密文应为:
// 0x3a、0xd7、0x7B、0xb4、0x0d、 0x7a、0x36、0x60、
// 0xa8、0x9e、0xca、0xf3、0x24、 0x66、0xef、0x97、
// 0xf5、0xd3、0xd5、0x85、0x03、 0x69、0x9d、
// 0xe7、0x85、0x89、0x5a、0x96、 0xFD、0xBA、0xaf
AESECB_CLOSE (句柄);

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

    我从 TI 示例复制的代码、我看到驱动程序初始化"AESCBC_INIT()" 部分丢失、这导致了问题、在打开之前调用 init 可解决问题!!