TI中文支持网
TI专业的中文技术问题搜集分享网站

如何使用CCS的TI-RTOS profiling tools查看task stack 最高使用率?

目前使用simple_peripheral工程,添加PTM之后,再添加一个自定义的task。由于CC2640 RAM空间不足,导致iphone与CC2640配对失败。因此,目前需要利用CCS查看task stack 最高使用率,以便于调节 task stack size。请问如何使用TI-RTOS profiling tools这个工具查看task stack 最高使用率?

1、根据SDK中的官方文档《TI-RTOS Overview》,可知CCS中的 TI-RTOS profiling tools可以查看peak task stack usage,如图1所示。该工具在CCS中的位置如图2所示。请问如何使用这个工具查看task stack 最 高使用率? SDK中的官方文档《TI-RTOS Overview》的链接见附件4。

图1

图2

2、我的代码配置步骤如下:
(1)在simple_peripheral工程中添加PTM,具体的添加方法,参见帖子1和帖子2,其链接见附件4。

(2)继续在simple_peripheral工程中添加自定义的task。代码如下所示:

/************************ main.c 文件 ***************************************/
#define COM_TASK_STACK_SIZE512
#define COM_TASK_PRIORITY2

uint8_t comTaskStack[COM_TASK_STACK_SIZE];
Task_Struct comTaskStruct;

int main()
{Task_Params comTaskParams;Task_Params_init(&comTaskParams);comTaskParams.stack = comTaskStack;comTaskParams.stackSize = COM_TASK_STACK_SIZE;comTaskParams.priority = COM_TASK_PRIORITY;RegisterAssertCback(AssertHandler);PIN_init(BoardGpioInitTable);#ifdef ICALL_JTuser0Cfg.appServiceInfo->timerTickPeriod= Clock_tickPeriod;user0Cfg.appServiceInfo->timerMaxMillisecond  = ICall_getMaxMSecs();#endifICall_init();ICall_createRemoteTasks(); /* Start tasks of external images - Priority 5 */Task_construct(&comTaskStruct, COM_Task_Fxn, &comTaskParams, NULL);/* Start task for NPI task */if(PIN_getInputValue(CC2640R2_LAUNCHXL_SPI0_SRDY)){NPITask_createTask(ICALL_SERVICE_CLASS_BLE);}GAPRole_createTask();/* Kick off profile - Priority 3*/SimpleBLEPeripheral_createTask();/* Priority 1*/BIOS_start();/* enable interrupts and start SYS/BIOS */return 0;
}


/************************ com_task.c 文件 ***************************************/

void COM_Task_Fxn(UArg a0, UArg a1)
{uint32_t COMTask_events;uint8_t read_test_length = 0;uint8_t read_test_buf[SPI_FRAME_DATA_LEN_MAX]={0x00,};COM_Task_inititializeTask();for (;;){.............}
}


static void COM_Task_inititializeTask(void)
{Event_Params evParams;Event_Params_init(&evParams);Event_construct(&spiEvent, &evParams);SPISyncEvent = Event_handle(&spiEvent);COM_TL_initTL();

}

(3)添加自定的task的步骤,参照SDK中的官方文档《Initializing a Task》,如图3所示。关键是 task stack size 不可小于 512 bytes,且task priority不可高于GapRole task。SDK中的官方文档 《Initializing a Task》的链接见附件4。

图3

3、我的代码调试结果如下:
(1)使用CCS的ROV功能,可以看到新建的任务初始化成功,如图4所示:

图4

(2)从图4中可知,任务初始化成功,而且可以看到stack Base。目前CC2640的SRAM为20kB,如图5所示。

图5

4、附件
(1)SDK中的官方文档《TI-RTOS Overview》的链接
file:///C:/ti/simplelink_cc2640r2_sdk_1_40_00_45/docs/blestack/ble_user_guide/html/cc2640/rtos-overview.html#

(2)SDK中的官方文档《Initializing a Task》的链接
file:///C:/ti/simplelink_cc2640r2_sdk_1_40_00_45/docs/blestack/ble_user_guide/html/cc2640/rtos-overview.html#initializing-a-task

(3)帖子1

(4)帖子2

(5)PTM测试教学视频链接

(6)simplelink_cc2640r2_sdk_1_40_00_45 可从如下路径下载:

(7)CC2640R2 launchpad 可从这里购买:

5、开发环境
CCS:Code Composer Studio 7.2.0
SDK:simplelink_cc2640r2_sdk_1_40_00_45
hardware:CC26640R2 launchpad develop kit
系统:win7 64 位

Susan Yang:

回复 heng fu:

很高兴您能解决问题!
更多关于 Task Profiler的信息,您可以参考www.ti.com/…/spruh43f.pdf

赞(0)
未经允许不得转载:TI中文支持网 » 如何使用CCS的TI-RTOS profiling tools查看task stack 最高使用率?
分享到: 更多 (0)