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/CC1352R:TI RTOS 中 System_printf 存在错误

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/889798/ccs-cc1352r-bug-in-system_printf-in-ti-rtos

器件型号:CC1352R

工具/软件:Code Composer Studio

吹扫码不打印0字符,但挂起:

#include 

#include 
#include 
#include 
#include 
#include 
#include 

Task_handle taskHandle;

void taskFxn (UArga、UArgb){
System_printf ("taskFxn started.\n");
System_printf ("-%c-.\n"、0);//<<<<<<<<<<<<<<<<<<<<<<<< 此行不起作用。
System_printf ("taskFxn 退出。\n");
system_flush();
}

int main()
{
/*调用驱动程序初始化函数*/
Board_init();

system_printf ("hello world\n");

Task_Params taskParams;
ERROR_Block EB;

/*配置包任务。 *
Task_Params_init (&taskParams);
ERROR_INIT (&EB);
taskParams.STACKSIZE = 512;
taskParams.priority = 3;
taskHandle = Task_create (taskFxn、&taskParams、&EB);

BIOS_start();
返回(0);
}

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

    您是否尝试增大堆栈大小? 在任何不会打印"0"零字符的情况下、您都要求它打印 NUL-所有位为零-这是不可打印的。 但它不应挂起。

    如果要将0x00打印为字符、则需要使用%d

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

    是的,我知道0 !='0',这不显示任何内容,因为0是不可打印的。 我想将0打印为字符、然后它挂起。 问题源于我打印的缓冲区可以是0或其他内容、因此是背景。 因此、我仍然认为这是一个但是。 它与该堆栈大小无关。

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

    Robert、

    我只是尝试了这个、它没有挂起。 以下是调用以下函数后的输出(注意:C 已设置为"C"):

    System_printf ("-%c-.\n"、0);
    System_printf ("-%c-.\n"、c); 

    您使用的是哪个 SDK 版本? 是否可以附加.cfg?  

    Todd

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

    我运行的是3.40.0.2和.cfg attached.e2e.ti.com/.../8371.hello.cfg

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

    谢谢。

    我看到 main()中正在发生损坏。 在.cfg 中将系统堆栈设置为512 (这会覆盖链接器命令文件设置)。 系统堆栈用于 main (然后在 BIOS_start 函数内用于 Hwi 和 Swi)。 Task_create 正在烧断堆栈、因为您在.cfg 中启用了 HeapTrack。 虽然调试工具很有用、但它会在分配内存时导致更多的堆栈使用。 我将系统堆栈大小增加到1024、并看到峰值为520。 因此、某处发生了一些损坏。

    您是否可以增大系统堆栈大小或取消使用 HeapTrack、然后重试?

    Todd

x 出现错误。请重试或与管理员联系。