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:程序在 printf()函数中挂起

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1105169/tms570lc4357-program-hangs-in-printf-function

器件型号:TMS570LC4357
主题中讨论的其他器件:HALCOGEN

我有一个在 FreeRTOS v9上运行的 Hercules 安全开发套件。 我使用的是 Code Composer Studio v11和 HALCoGen v4。
我的程序在 printf()中挂起。 SCI 工作正常。 我包含了 stdio.h 库。 构建代码时不会出现任何问题。 由于我对这个平台很陌生、我肯定会错过一些东西。

下面给出了一个测试代码片段

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "FreeRTOS.h"
#include "os_task.h"
#include "HL_sci.h"
#include "HL_het.h"
#include "HL_gio.h"
#include "stdio.h"
#include "HL_sys_common.h"
#define UART sciREG1
#define LENGTH 18
xTaskHandle xTas1kHandle, xTask2Handle;
uint8 TEXT[LENGTH] = {'B', 'u', 't', 't', 'o', 'n', ' ', 'i', 's', ' ', 'p', 'r', 'e', 's', 's', 'e', 'd', ' '};
void consolePrint(sciBASE_t *sci, uint8 *text, uint32 length){
while(length--){
while((sci->FLR & 0x4) == 4);
sciSendByte(sci, *text++);
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

有人能帮我解决这个问题吗? 任何建议均可获得采纳。

谢谢你。

此致
Ua

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

    您好、UA、

    printf()采用较大的堆栈,请 从 HALCoGen GUI 调整 STACKSIZE:

    HalCoGen->RAM->UserStack

    您可以更改 sys_core.asm 中手动定义的堆栈大小:

    _coreInitStackPointer_

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="45190" URL"~μ C/support/microcontrollers/arm-based microcontrollers-group/arm -based-microcontrollers/f/arm -based-microcontrollers-forum/1105169/tms570lc4357-program-hang-In-printf-function/4094780#4094780"] coreInitStack_[quote_pinter]

    感谢王杰的回复。 但它没有解决这个问题。

    案例1


    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    .def _coreInitStackPointer_
    .asmfunc
    _coreInitStackPointer_
    cps #17
    ldr sp, fiqSp
    cps #18
    ldr sp, irqSp
    cps #19
    ldr sp, svcSp
    cps #23
    ldr sp, abortSp
    cps #27
    ldr sp, undefSp
    cps #31
    ldr sp, userSp
    bx lr
    userSp .word 0x08000000+0x00000900
    svcSp .word 0x08000000+0x00000900+0x00000100
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


    情况2.

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    .def _coreInitStackPointer_
    .asmfunc
    _coreInitStackPointer_
    cps #17
    ldr sp, fiqSp
    cps #18
    ldr sp, irqSp
    cps #19
    ldr sp, svcSp
    cps #23
    ldr sp, abortSp
    cps #27
    ldr sp, undefSp
    cps #31
    ldr sp, userSp
    bx lr
    userSp .word 0x08000000+0x00050000
    svcSp .word 0x08000000+0x00050000+0x00000100
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    在这两种情况下,程序都在 printf()中挂起。

    谢谢你。

    此致
    Ua

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

    我的差。  请使用 Chester 的方法来增加任务1的堆栈大小。

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1105167/tms570lc4357-arm-based-microcontrollers-forum