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/LAUNCHXL2-RM57L:printf/ vsnprint crashs

Guru**** 2614265 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/779042/ccs-launchxl2-rm57l-printf-vsnprint-crashs

器件型号:LAUNCHXL2-RM57L

工具/软件:Code Composer Studio

您好!

为了进行调试,我想将 printf()与 SCI2结合使用。 为了使调试更易于使用,建议实施 sci_printf()函数:  

函数 sci_printf()。 但是如果我尝试使用它,则会在 vsnprintf()部分使用"DataEntry"中断的控制器 crashs。 我尝试增加堆栈+堆、但没有区别。

这是我的主函数。

int sbcMain (void)

{

sciInit();
gioInit();

gioSetBit (gioPORTB、6、gioGetBit (gioPORTB、6)^ 1);

//工作
uint8* text ="sciDisplayTest";
sciDisplayText (sciREG1、text、sizeof (text));


//这是一个崩溃的地方... b DataEntry
SCI_printf ("测试%d"、42);


if (xTaskCreate (vTaskHeartbeat、"vTaskHeartbeat "、configMINIMAL_STACK_SIZE、
null、
1、&xTask1Handle)!= pdTRUE)
{
/*无法创建任务*/
while (1)
;
}
if (xTaskCreate (vTask1、"Task1"、configMINIMAL_STACK_SIZE、NULL、1、
&xTask2Handle)!= pdTRUE)
{
/*无法创建任务*/
while (1)
;
}


vTaskStartScheduler();

while (42)
;

返回0;
}

int sci_printf (const char *_format、...)
{
字符 str[128];
int length =-1;

va_list argList;
va_start (argList、_format);

//长度= snprintf (str、sizeof (str)、_format、argList);
长度= vsnprintf (str、 sizeof (str)、_format、argList);

VA_END (argList);

如果(长度> 0)
{
sciSend (sciREG1、(unsigned) length、(unsigned char*) str);
}

} 

您能否为调试提供任何提示?

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

    vsnprintf 是 stdio 库的一部分:
    内部 vsnprintf (char * restrict、size_t、const char * restrict、va_list);

    "char *"类型的参数是否与"char *restrict"类型的参数兼容?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    不、这不是问题。

    实际上,我需要调整 STACKSIZE,尽管我已经在 Build->Arm Linker->Basic Options->Stack Size 中对其进行了设置。 我已经将其设置为0x1500。 (之前为0x800)。

    但您还需要在 HalCoGen->RAM->UserStack(0x1000中更改它,它提供的汇总堆栈也是0x1500!  


    感谢你的帮助

    弗洛里安