目前使用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