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.

[参考译文] RTOS/CC1310EMK:如何使用 Task_delete ();

Guru**** 2595770 points
Other Parts Discussed in Thread: SYSBIOS, CC1350

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/587344/rtos-cc1310emk-how-to-use-task_delete

器件型号:CC1310EMK

工具/软件:TI-RTOS

TI RTOS:tirtos_cc13xx_cc26xx_2_21_00_06

软件:用于 ARM7.7的 IAR

我要删除多个任务、

当我在    .cfg 文件中添加(Task.deleteTerminatedTasks = true;)时

编译器错误:

运行"c:/ti/xdctools_3_32_00_06_core/xs 时出错  
--xdcpath="c:/ti/tirtos_cc13xx_cc26xx_2_21_00_06/packages;c:/ti/tirtos_cc13xx_cc26xx_2_21_00_06/products/tidrivers_cc13xx_cc26xx_2_21_00_04/packages;c:/ti/tirtos_cc13xx_cc26xx_2_21_00_06/products/bios_6_46_01_37/packages;
C:/ti/tirtos_cc13xx_cc26xx_2_21_00_06/products/uia_2_01_00_01/packages "IAR.tools.configuro -c "C:\Program Files (x86)\IAR Systems\Embedded Workbench 7.5\ARM"-cc "C:\Program Files (x86)\IAR Systems\Embedded Workbench  
7.5\arm\bin\iccarm.exe"--device "CC1310F128"--compileOptions "-o E:\jinchaoli\GS511\Software_Design\examples\adc_Project\Debug\Obj --no_cSE --no_unroll --no_inline --no_code_motion --no_ba_scheduling --no_ta-ta_cassembly--no_a  
--debug --endian=little --cpu=Cortex-M3 -f E:\jinchaoli\GS511\Software_Design\examples\adc_Project/configPkg/compiler.opt.defs --diag_suppress=Pa050 -IC:/ti/tirtos_cc13xx_cc26xx_2_21_00_06/products/cc13xxware_2_04_03_17272  
-dewarm --debug --silent -e --fpu=None --dlib_config \"C:\Program Files (x86)\IAR Systems\Embedded Workbench 7.5\arm\inc\dlib_Config_Normal.h\"-OL"--linkOptions "-o E:\jinchaoli\GS511\Software_Design\example\
adc_Project\Debug\EXE\adc_project.out --map E:\jinchaoli\GS511\Software_Design\examples\adc_Project\Debug\List\adc_project.map --config E:\jinchaoli\GS511\Software_Design\example.\
ADC_Project/ADC_PROJECT_CC1310DK_7XD.ICF -f E:\jinchaoli\GS511\Software_Design\examples\ADC_Project/configPkg/linker.cmd c:/ti/tirtos_cc13xx_cc26xx_2_21_00_06/products/cc13xxware_2_04_03_17272/driverlib/bin/iar/driverlib.lib  
--silent --cpu=Cortex-M3 --entry=__IAR_program_start --redirect _printf=_PrintfSmall--redirect _scanf=_ScanfSmall-semihosting --entry __IAR_program_start --vfe"--profile release --projFile "E:\jini\GS511\Software\example
ADC_Project\ADC_project.EWP"
 
错误总数:1.
警告总数:0

当我在    .cfg 文件中添加(Task.deleteTerminatedTasks = 0;)时

编译器正常:

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您在 ROM 中使用内核(在下面的.cfg...see 中指定)、则无法在.cfg 中设置"Task.deleteTerminatedTasks = true;"。 由于内核位于 ROM 中、因此必须对配置做出一些决定。 注意:您可以自己调用 Task_delete。 此参数用于启用自动删除退出的任务(调用 Task_exit 或只是退出函数)。

    Todd

    VAR ROM = xdc.useModule('ti.sysbios.rom.ROM');
    ROM.romName = ROM.CC1350;// CC1350用于所有 CC13xx 器件

    如果您注释掉上述行、则可以设置使用"Task.deleteTerminatedTasks = true";注意:由于内核代码现在位于闪存中、应用程序的整体大小将会增加。

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

    非常感谢您的支持。

    您的意思是,如果 我 在 ROM 中使用内核 ,我不能使用 Task_delete (),如果使用 Task_delete (),我必须使用闪存存储内核? Task_delete ()、闪存存储器的内容是否会被删除?

    我在调试器中发现、几个周期的正常运行开始。 经过一段时间后、我的信标值不再减少。 同时,相应的任务不再执行,任务被阻止。查看图片。这是一个头痛的问题。

    这与 CFG 配置有任何关系吗?   ROM 中的 BIOS,“挂起的任务是基于先入先出的服务。”

    /*========================= 信标配置=================== *
    VAR 信标= xdc.useModule('ti.sysbios.knl.Semaphore');
    /*
     *启用对任务优先级挂起队列的全局支持。
     *
     *选择一项:
     * - true (默认值)
     *     这允许根据任务优先级为待处理的任务提供服务。
     *- 错
     *     待处理任务是基于先入先出的服务。
     *
     * 在 ROM 中使用 BIOS 时:
     *     此选项必须设置为 false。
     *
    //semaphore.supportsPriority = true;
    Semaphore.supportsPriority = false;

    /*
     *允许通过信标隐式布置事件、
     *禁用以保存其他代码。
     *
     *选择一项:
     * -正确
     *     这允许信标模块发布信标和事件
          *同步。
     * - false (默认值)
     *     必须显式发布事件以解除阻止任务。
     *
     * 在 ROM 中使用 BIOS 时:
     *     此选项必须设置为 false。
     *
    //semaphore.supportsEvents = true;
    Semaphore.supportsEvents = false;

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

    [引用 user4202186]\n 您的意思是,如果 我 在 ROM 中使用内核 ,则无法使用 Task_delete(),如果使用 Task_delete(),则必须使用闪存存储内核? Task_delete ()、闪存存储器的内容是否会被删除?

    否 在这两种情况下(ROM 中的内核或闪存中的内核)、您都可以使用 Task_delete。 您不能将 Task.deleteTerminatedTasks = true 与内核一起使用在 ROM 中。

    "Task.deleteTerminatedTasks = true;"将为您删除已终止的任务。 如果设置为 false、则如果要回收已终止任务的内存、则必须自己调用 Task_delete (如果任务调用 Task_exit 或退出任务函数、则会发生终止)。

    注意:Task_delete 获取 Task_handle also...common 错误的地址、只是传递到 Task_handle 中。

    Todd