CCS printf调试

CC32xx器件包括一个应用处理器和一个网络处理器

一、API Descriptions

1.Display_printf

1.1 IDE Console(Host)

DisplayHost没有调用限制。

#include <ti/display/Display.h>

Display_Handle display;
display=Display_open(Display_Type_HOST,NULL);
...
Display_printf(display,0,0,"Count=%d and it's address is 0x%x\n",count,&count);

1.2 UART

UART接口有两种类型:

  • DisplayUartAnsi:以占用空间为代价的功能丰富的模块。
  • DisplayUartMin:简单的UART管理,功能较少,但体积更小。大多数示例的默认值是DisplayUartMin。

如果使用的是RTOS,只能从task或pthread调用DisplayUart。如果不适用RTOS,可以从main调用DisplayUart。

#include <ti/display/Display.h>

Display_Handle display;
display=Display_open(Display_Type_UART,NULL);
...
Display_printf(display,0,0,"Count=%d and it's address is 0x%x\n",count,&count);

2.System_printf

仅当应用进程使用TI-RTOS时,System_printf才可用。

系统模块允许应用进程插入不同的系统代理。代理负责底层实现。两个主要的支持代理是SysMin和SysCallback。

可以在内核配置文档(例如.cfg文档)中分配代理。

System.SupportProxy=SysMin;

无论基础代理是什么,顶级System_printf都是相同的。

#include <xdc/runtime/System.h>

System_printf("Count=%d and it's address is 0x%x\n",count,&count);

SysMin(ROV/IDE控制台输出)模块将ASCII数据存储到内部缓冲区中。内部缓冲区的大小是可配置的。在指示这样做之前,数据不会刷新到CIO缓冲区。因此,SysMin不会像Display_printf或printf那样影响实时性能。

SysCallback(UART输出)模块允许用户插入一个类似putchFxn的函数,该函数在格式化完成后在System_printf中调用。

3.UART_PRINT

UART_PRINT仅在SimpleLink CC32xx SDK中可用。此API仅支持通过UART输出。

#include "uart_term.h"

InitTerm();
UART_PRINT("Count=%d and it's address is 0x%x\n",count,&count);

总结

APIRTOS DependencySummary
printfNone易于使用,使用默认设置时会影响实时性能
printf over UARTNone易于使用,具有可能的调用限制
Displat_printfNone附加设置,但灵活且独立于操作系统/IDE
System_printfTI-RTOS灵活且对应用进程的潜在影响最小
UART_PRINTNone仅在CC3220设备上可用
UARTprintfNo-RTOS使用非RTOS时在MSP432E4上可用

二、封装比较

1.控制台输出

以下是向IDE控制台和UART显示时不同调试API的比较,显示了添加一个调试调用的额外内存影响。测试字符串是以下字符串之一:

printf("This is a debug string %d,0x%x,%f\n",1,&someVariable,3.14);
Display_printf(display,0,0,"This is a debug string %d,0x%x,%f\n",1,&someVariable,3.14);
System_printf("This is a debug string %d,0x%x,%f\n",1,&someVariable,3.14);
UART_PRINT("This is a debug string %d,0x%x,%f\n",1,&someVariable,3.14);

 2.UART输出

 三、注意点

1.CC26x2R1开发板如图所示,要确保跳线帽的连接无误,这样才能烧录程序。

2.大多数示例都将SysCallback作为默认系统代理,而默认函数什么也不做。可以通过以下三种方式来将输出字符串放置在可以通过ROV查看的内部缓冲区中。

  • 将release.cfg文档更改以使用SysMin:最简单的方法,但应该看看是否会对使用此内核项目的其他项目产生影响。
  • 创建新的内核项目:复制粘贴release内核项目,重命名它,使用SysMin并将GPIO中断指向新的内核项目。这将最大限度地减少对其他项目的影响。
  • 移动到调试内核项目:调试内核项目使用SysMin以及许多其他调试功能。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值