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/CC2640R2F:如何使用 simple_peripheral 项目的执行分析?

Guru**** 2952510 points

Other Parts Discussed in Thread: SYSBIOS, CC2640R2F, CC2640

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/949514/ccs-cc2640r2f-how-to-use-execution-analysis-with-simple_peripheral-project

器件型号:CC2640R2F
Thread 中讨论的其他部件:SYSBIOS、 CC2640

工具/软件:Code Composer Studio

我已经学习了 TI-RTOS 基础教程、并了解 了工具→RTOS 分析器→执行分析工具的使用情况。  但是、这仅在 hello 工程中起作用、因为工程中包含用于启用日志记录的 hello.cfg 文件。

我想查看 simple_peripheral 项目中每个任务的时间、以了解处理器在工作模式与空闲/睡眠模式之间花费的时间。  但是打开执行分析工具会显示一个窗口、要求我提供自定义 UIA 文件。  在哪里可以生成或查找允许我继续并查看该工具的文件?  谢谢你。

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

    您好!

    以下是几个月前我为 CC26X2/CC13X2编写的一些指南、您可能可以利用它:

    1.在 C:\ti\中下载并解压缩 UIA ( 此处提供 UIA)
    启动 CCS 并安装找到的新产品。 出现提示时重新启动 CCS。
    在项目中、向 UIA 添加产品依赖项
    4.通过 在.cfg (或.xscfg)文件的末尾添加以下行来修改.cfg (或.xscfg)文件:
    对于 CC2640R2F、这些内容略有不同、您必须修改 kernel\tirtos\packages/ti\UIA\SysBIOS\LoggingSetup.XDC
    让我们知道它是怎么发展的!
    此致、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我正在尝试按照此步骤操作、我已经下载并安装了 UIA。

    如何向项目添加依赖项?  显示 UIA 的唯一位置是在“项目属性”->“常规”下,有两个“产品”选项卡,我可以选中两个选项卡上的“系统分析器”(UIA 目标)框。  是这样吗?

    接下来、我不知道要编辑哪个.cfg 文件、工程的工具文件夹中有一个名为 app_ble.cfg 的文件、但该文件所做的只是从 SDK 中导入几个其他文件。  一个称为"cc2640_R2_csdk.cfg "、当我找到该文件时、它看起来是添加您提到的代码行的正确位置。

    我设置 BIOS.logsEnabled = true;我还注释了代码块以在闪存中使用 BIOS (如 TI-RTOS 基础教程中所述)、然后在底部添加了代码行。 (我已经查看了您提到的名为 LoggingSetup.XDC 的文件、但没有看到我应该如何处理它)

    所有这些之后、Execution Graph 工具仍然只是告诉我我我的项目未正确设置:

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

    图像看起来没有显示:

    我尝试添加依赖项的第一个图像: 第二个错误 UIA 设置的图像:

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

    您好!

    您所做的事情对我来说似乎是正确的。

    在尝试打开 RTOS 分析器时、您是否在调试模式下运行程序? 在尝试在不运行调试会话的情况下打开 RTOS 分析器时、我至少会重现您的问题。

    此致、

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

    是的、我处于调试模式。  我实际上找到了这个对某些人有所帮助的主题: https://e2e.ti.com/support/wireless-connectivity/bluetooth/f/538/t/646420?RTOS-CC2640R2F-Could-not-detect-UIA-configuration

    现在、我可以打开 Execution Graph 和 Live Session 视图。  但它们不会填充数据。  我在以下主题中阅读 :https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/773948?RTOS-TMS320F28069-UIA-is-not-showing-any-data-in-Live-Session-Execution-graph-and-CPU-Load 、我应该检查 ROV 以查看 LoggerStopMode 中是否有记录。  我已检查、SYSBIOS 系统记录器没有列出任何记录、表明我的记录设置有问题。  我的问题是什么?

    我已包含.cfg 文件以供参考。  我假设这是要更改的正确文件吗?  

    /*********
    
    @文件 cc2640_r2_csdk.cfg
    
    @CC26xx 的 TI RTOS 配置文件简介
    
    导入的符号
    注意:这些符号是在--cfgArgs 选项之后定义的。
    在 IAR 中、这是在预编译步骤的末尾完成的。 在 CCS 中、这是
    在 Properties->Build->XDCtools-Advanced options->Configuration 中完成
    脚本参数。 可以使用多个符号将它们分隔为
    逗号("、")。
    
    默认情况下、TI RTOS 在 ROM 中以 RTOS 构建、中断向量启动
    地址0x0处、并且仅使用 ROM 内核模块。
    
    NO_ROM: 当被设定为一个非零值时、RTOS 建立在闪存中
    ROM
    OAD_IMG_A:设置为非零值时、中断向量设置为
    其片上 OAD 映像 A 的预期位置
    OAD_IMG_B:设置为非零值时、中断向量设置为
    其片上 OAD 映像 B 的预期位置
    OAD_IMG_E:设置为非零值时、中断向量设置为
    外部闪存 OAD 的预期位置。
    USE_Events:生成 RTOS 内核事件模块。
    SECURE_FW_IMG:当设置为非零值时、中断矢量将设置为
    安全固件映像的预期位置。
    
    组:WCS、BTS
    目标设备:cc2640r2
    
    
    
    版权所有(c) 2013-2020、德州仪器(TI)公司
    保留所有权利。
    
    
    只要
    满足以下条件、就允许以源代码和二进制形式重新分发和使用(无论是否修改):
    
    *源代码的重新分发必须保留上述版权
    声明、此条件列表和以下免责声明。
    
    *二进制形式的再发行必须复制上述版权
    注意、本条件列表和中的以下免责声明
    分发时提供的文档和/或其他材料。
    
    *德州仪器公司的名称和名称均不相同
    其贡献者可用于认可或推广衍生产品
    未经特定的事先书面许可。
    
    本软件由版权所有者和贡献者"按原样"提供
    、
    
    不承认任何明示或暗示的保证、包括但不限于对适销性和特定用途适用性的暗示保证。 在任何情况下、版权所有者或
    贡献者都不对任何直接、间接、偶然、特殊、
    模范、 或相应的损害(包括但不限于
    采购替代产品或服务;丧失使用、数据或利润;
    或业务中断)、但出于任何责任理论、
    无论是在合同中、严格责任还是在使用
    本软件时以任何方式产生的侵权行为(包括疏忽或其他原因)、
    即使被告知存在此类损坏的可能性。
    
    秘书长的报告
    
    
    (小部分 /
    
    var rtos_in_ROM;
    var OAD_IMG_TYPE;
    var use_secure_fw_IMG;
    
    if (Program.build.cfgArgs!=空)
    {
    if (typeof Program.build.cfgArgs.no_ROM ='未定义'||
    (typeof Program.build.cfgArgs.NO_ROM!='未定义'&&
    program.build.cfgArgs.no_ROM = 0)
    ){
    RTOS_IN_ROM = true;
    }
    否则
    {
    RTOS_IN_ROM = false;
    }
    
    if (typeof Program.build.cfgArgs.OAD_IMG_A!='未定义'&&
    program.build.cfgArgs.OAD_IMG_A = 1)
    {
    OAD_IMG_TYPE ="A";
    }
    否则(typeof Program.build.cfgArgs.OAD_IMG_B!='Undefined'&&
    program.build.cfgArgs.OAD_IMG_B = 1)
    {
    OAD_IMG_TYPE ="B";
    }
    否则为(typeof Program.build.cfgArgs.OAD_IMG_E!='未定义'&&
    program.build.cfgArgs.OAD_IMG_E = 1)
    {
    OAD_IMG_TYPE ="E";
    }
    
    if (typeof Program.build.cfgArgs.SECURE_FW_IMG!='未定义'&&
    program.build.cfgArgs.SECURE_FW_IMG = 1)
    {
    use_secure_fw_IMG = true;
    }
    
    否则
    {
    rtos_in_rom = true;
    use_secure_fw_IMG = false;
    }
    
    /*=================== ROM 配置======================== //
    *
    *要在闪存中使用 BIOS,请注释掉下面的代码块。
    //
    //if (rtos_in_rom)
    //{
    // var ROM = xdc.useModule('ti.sysbios.rom.ROM');
    // if (Program.cpu.deviceName.match(/CC26/)}{
    // ROM.romName = ROM.CC2640R2F;
    //}
    //否则(Program.cpu.deviceName.match(/CC13/){
    // rom.romName = rom.CC1350;
    //}
    //}
    
    
    
    //*=== 引导配置=================== //
    if (rtos_in_ROM)
    {
    var Boot = xdc.useModule('ti.sysbios.family.arm.cc26xx.Boot');
    }
    //
    *此模块包含特定于系列的引导 API 和配置设置。
    *有关更多信息、请参阅 SYS/BIOS API 指南。
    //
    if (rtos_in_ROM)
    {
    Boot.driverlibVersion = 2;
    Boot.customerConfig = false;
    }
    
    /*=================== 时钟配置======================== //
    var Clock = xdc.useModule('ti.sysbios.knl.Clock');
    //
    *当使用 Power 和 calibrateRCOSC 时设置为 true,应将其设置为10。
    *时钟模块使用的计时器支持 TickMode_dynamic。 这使我们
    *能够将节拍周期设置为10us、而不会产生额外
    的*中断开销。
    *
    *注意:calibrateRCOSC 参数在电源配置中设置
    * "Board.c"文件中的结构。
    */
    Clock.tickPeriod = 10;
    Clock.swiPriority = 5;
    
    
    /*==== 类型配置=================== */
    var types = xdc.useModule('xdc.runtime.Types');
    /*
    此模块定义了在
    * xdc.runtime 软件包中使用的基本常量和类型。
    //
    
    
    
    /*========================= 默认值(模块)配置=================== //
    var Defaults = xdc.useModule('xdc.runtime.Defaults');
    //
    *允许在目标上加载模块名称的标志。 模块名称
    *字符串放置在.const 段中以用于调试。
    *
    *选择一个:
    *- true (默认值)
    * 将此参数设置为 true 将在.const
    *中包含名称字符串 部分、以便更容易调试错误和断言。
    *- false
    * 将此参数设置为 false 将减小.const
    *中的占用空间 部分。 因此、错误和断言消息将包含
    * "未知模块"前缀、而不是实际的模块名称。
    *
    *在 ROM 中使用 BIOS 时:
    * 此选项必须设置为 false。
    //
    //Defaults.common$.namedModule = true;
    Defaults.common$.namedModule = false;
    
    //编译所有断言的*/
    //Defaults.common$.diags_ASSERT = Diags.always_off;
    
    //允许 Mod_create()和 Mod_construct(),但不允许 delete()或析构()*/
    Defaults.common$.memoryPolicy = types.create_policy;
    
    
    
    /*=========== 错误配置=================== //
    var Error = xdc.useModule('xdc.runtime.Error');
    //
    *调用此函数以处理所有引发的错误,但与
    * Error.raiseHook 不同,此函数负责使用
    适当初始化的 Error_Block 完全处理*错误。
    *
    *选择一个:
    *- Error.policyDefault (默认值)
    * 使用已初始化的 Error_Block 结构和日志*调用 Error.raiseHook
    使用模块的记录器时出错。
    *- Error.PolicySpin
    * 在 while (1)循环中捕获以最小化目标
    的简单替代方法* 封装尺寸。
    * 使用 Error.PolicySpin 时、将不会调用 Error.raiseHook。
    //
    //Error.PolicyFxn = Error.PolicyDefault;
    Error.PolicyFxn = Error.PolicySpin;
    
    //
    *如果 Error.PolicyFxn 设置为 Error.PolicyDefault,则
    每当错误模块引发错误时,都会调用此函数*。
    *
    *选择一个:
    *- Error.print (默认值)
    * 为了更方便
    *、错误通过 System_printf()进行格式化和输出 调试。
    *-空
    * 通过 while (1)存根函数捕获错误。 此选项会减少
    * 代码占用量。
    *-非空函数
    * 调用自定义用户函数时出错。 请参阅错误模块文档
    * 以了解更多详细信息。
    //
    //Error.raiseHook = Error.print;
    Error.raiseHook =空;
    //Error.raiseHook ="&myErrorFxn";
    
    //
    *如果 Error.policyFxn 设置为 Error.PolicyDefault,此选项适用于
    * Error.raiseHook 函数可被递归
    调用的最大次数*。 此选项限制了无限递归的可能性
    、*可能导致栈溢出。
    *默认值为16。
    */
    Error.maxDepth = 2;
    
    
    
    /*========================= Hwi 配置=================== //
    var halHwi = xdc.useModule('ti.sysbios.hal.Hwi');
    var m3Hwi = xdc.useModule('ti.sysbios.family.arm.m3.Hwi');
    //
    *在空闲循环中检查 Hwi (系统)堆栈溢出。
    *
    *选择一个:
    *- true (默认值)
    * 检查系统堆栈在空闲循环期间溢出的顶字和
    * 如果检测到错误、则会引发错误。
    *- false
    * 禁用运行时检查可提高运行时性能并产生
    * 减小了闪存尺寸。
    //
    //halHwi.checkStackFlag = true;
    halHwi.checkStackFlag = false;
    
    //
    *当
    检测到硬件异常时,以下选项会改变系统的行为*。
    *
    *选择一个:
    *- Hwi.enableException = true
    * 此选项会使默认的 m3Hwi.excHandlerFunc 函数完全
    * 解码异常并将寄存器转储到系统控制台。
    * 此选项会在错误模块中引发错误并显示
    * ROV 中出现异常。
    *- Hwi.enableException = false
    * 此选项通过不解码或打印
    *来减少代码占用 系统控制台异常。
    * 但是、它仍会在错误模块中引发错误、并显示
    * ROV 中出现异常。
    *- Hwi.exHandlerFunc =空
    * 这是节省代码空间的最积极的选择;但
    它* 很难调试异常。 它将闪存空间减小
    了* 发生异常时插入默认 while (1)陷阱。 此选项
    * 不会导致错误模块出错。
    //m3Hwi.enableException
    = true;
    //m3Hwi.enableException = false;
    m3Hwi.excHandlerFunc =空;
    
    //
    *在除以零时启用硬件异常生成。
    *
    *选择一个:
    *- 0 (默认值)
    * 在除以0
    *- 1
    *时禁用硬件异常 在除以零时启用硬件异常
    */
    m3Hwi.nvicCCR.DIV_0_TRP = 0;
    //m3Hwi.nvicCCR.DIV_0_TRP = 1;
    
    //
    *为无效的数据对齐启用硬件异常生成。
    *
    *选择一个:
    *- 0 (默认值)
    * 禁用数据对齐的硬件异常
    *- 1
    * 为数据对齐启用硬件异常
    */
    m3Hwi.nvicCCR.UNALIGN_TRP = 0;
    //m3Hwi.nvicCCR.UNALIGN_TRP = 1;
    
    //在闪存开始时放置复位矢量*/
    if (OAD_IMG_TYPE ="A")
    {m3Hwi.UNALIGN_TRP = 1;//将复位矢量放在闪存开始处*/ if (OAD_IMG_IMG_0_AD_AD_AD_AD_AD_AD_AD_AD_AD_AD_AD_ADDREST_AD_AD_AD_AD_ADTREMPT_0|
    = 0x000B)
    
    
    
    = 0x3HETRY= 0x3_
    
    否则、如果(use_secure_fw_IMG)
    {
    m3Hwi.resetVectorAddress = 0x0070;
    }
    否则
    {
    m3Hwi.resetVectorAddress = 0x0;
    }
    
    //将中断矢量放置在 RAM 的开始位置、以便在运行时配置中断*/
    m3Hwi.vectorTableAddress = 0x20000000;
    
    // CC2650具有50个中断=NUM=/=/==_Hwi=./=./=./=./=./=./././././=./././././=././.
    
    
    
    
    空闲配置========================= //
    var Idle = xdc.useModule('ti.sysbios.knl.Idle');
    //
    *空闲模块用于指定
    在系统中没有*其他任务正在运行时要调用的函数列表。
    *
    *此处添加的函数将在空闲任务内连续运行。
    *
    *函数签名:
    * void func (void);
    *//idle.addFunc
    ("&myIdleFunc");
    /*允许电源管理*/
    idle.addFunc ('&Power_idleFunc');
    
    
    
    /*=========== 内核(SYS/BIOS)配置=================== */
    var BIOS = xdc.useModule('ti.sysbios.BIOS');
    /*
    启用 BIOS 库中的断言。
    *
    *选择一个:
    *- true (默认值)
    * 启用断言以进行调试。
    *- false
    * 禁用断言以减小代码占用空间并提高性能。
    *
    *在 ROM 中使用 BIOS 时:
    * 此选项必须设置为 false。
    //
    //BIOS.assertsEnabled = true;
    BIOS.assertsEnabled = false;
    
    //
    *用于确定 xdc.runtime 源是否包含在自定义
    *构建的 BIOS 库中的标志。
    *
    *选择一个:
    *- false (默认值)
    * 预构建的 xdc.runtime 库由相应的目标
    *提供 用于构建应用。
    *- true
    * xdc.runtime 库源将包含在自定义 BIOS
    中* 库。 此选项在两个代码
    中生成最高效的库* 封装和运行时性能。
    //
    //BIOS.includeXdcRuntime = false;
    BIOS.includeXdcRuntime = true;
    
    //
    * SYS/BIOS 运行时以库的形式提供
    *与应用程序链接*。
    SYS/BIOS 产品随附了该库的几种形式。
    *
    *选择一个:
    *- BIOS.LibType_Custom
    * 针对代码大小和
    *进行了高度优化的定制构建库 运行时性能。
    *- BIOS.LibType_Debug
    * 自定义构建的库、该库未进行优化
    、可用于* 使用调试器单步执行 API。
    *
    //
    BIOS.libType = BIOS.LibType_Custom;
    //BIOS.libType = BIOS.LibType_Debug;
    
    //
    *运行时实例创建启用标志。
    *
    *选择一个:
    *- true (默认值)
    * 允许在运行时调用 Mod_create()和 Mod_delete (),*
    需要一个用于动态内存分配的默认堆。
    *- false
    * 通过禁止 Mod_create()和 Mod_delete ()来减少代码占用空间
    * 调用的函数。 对象实例通过
    *构造 mod_construct()并通过 Mod_析 构函数()析构。
    *
    *在 ROM 中使用 BIOS 时:
    * 此选项必须设置为 true。
    */
    BIOS.runtimeCreatesEnabled = true;
    //BIOS.runtimeCreatesEnabled = false;
    
    /*
    启用 BIOS 库中的日志。
    *
    *选择一个:
    *- true (默认值)
    * 启用日志以进行调试。
    *- false
    * 禁用日志记录以减少代码占用空间并改善运行时间
    * 性能。
    *
    *在 ROM 中使用 BIOS 时:
    * 此选项必须设置为 false。
    */
    BIOS.logsEnabled = true;
    //BIOS.logsEnabled = false;
    
    BIOS.swiEnabled = true;
    
    
    
    /*=========== 程序配置=================== IAR
    
    忽略*//* Program.stack。 使用
    * IAR Embedded Workbench 中的项目选项来改变系统堆栈大小。
    //
    if (RTOS_IN_ROM)
    {
    Program.stack = 1024;
    Program.argSize = 0;
    }
    否则
    {
    Program.stack = 512;
    }
    
    
    
    /*=== 信标配置=================== //
    var semaphore = xdc.useModule('ti.sysbios.knl.Semaphore');
    //
    *启用对任务优先级挂起队列的全局支持。
    *
    *选择一个:
    *- true (默认值)
    * 这允许根据任务优先级为待处理的任务提供服务。
    *- false
    * 待处理任务是基于先入先出的服务。
    *
    *在 ROM 中使用 BIOS 时:
    * 此选项必须设置为 false。
    //
    //semaphore.supportsPriority = true;
    semaphore.supportsPriority = false;
    
    //
    *允许通过信号量隐式布置事件,
    *禁用以保存其他代码。
    *
    *选择一个:
    *- true
    * 这允许信标模块发布信标和事件
    * 同步。
    *- false (默认值)
    * 必须显式发布事件以解除任务阻止。
    *
    *在 ROM 中使用 BIOS 时:
    * 此选项必须设置为 false。
    //
    //semaphore.supportsEvents = true;
    semaphore.supportsEvents = false;
    
    
    
    
    /*==== 事件配置=================== */
    var 事件= xdc.useModule('ti.sysbios.knl.Event');
    
    
    
    /*========================= Swi 配置=================== //
    var Swi = xdc.useModule('ti.sysbios.knl.Swi');
    //
    *软件中断是一个包含
    要*执行的函数和优先级的对象。 软件中断被优先化、优先任务
    *并被硬件中断服务例程抢先。
    *
    *包括此模块是为了允许在用户的应用程序中使用 Swi。
    */
    swi.numPriorities = 6;
    
    
    
    /*========================= 系统配置=================== //
    var System = xdc.useModule('xdc.runtime.System');
    //
    *当系统异常退出时调用中止处理程序。
    *
    *选择一个:
    *- System.AbortStd (默认)
    * 调用 ANSI C 标准'abort()'来终止应用程序。
    *- System.AbortSpin
    * 在 while (1) trap
    *中无限循环的轻量级中止函数 功能。
    *-自定义中止处理程序
    * 用户定义的函数。 请参阅*的系统模块说明文件
    详细信息。
    //
    //System.ABortFxn = System.ABortStd;
    System.ABortFxn = System.ABortSpin;
    //System.ABortFxn =“&myAbortSystem”;
    
    //
    *系统正常退出时调用 Exit 处理程序。
    *
    *选择一个:
    *- System.exitStd (默认)
    * 调用 ANSI C 标准'exit()'来终止应用程序。
    *- System.exitSpin
    * 在 while (1) trap
    *中无限循环的轻量级退出函数 功能。
    *-自定义退出函数
    * 用户定义的函数。 请参阅*的系统模块说明文件
    详细信息。
    //
    //System.exitFxn = System.exitStd;
    System.exitFxn = System.exitSpin;
    //System.exitFxn ="&myExitSystem";
    
    //
    *最小化系统模块中的退出处理程序数组。 System 模块包括
    *一个在 System_atexit()中注册的函数数数组,System_exit()
    调用该函数组。 默认值为8。
    //
    System.maxAtexitHandlers = 0;
    
    //
    * System.SupportProxy 定义了 System
    *函数的低级实现,例如 System_printf ()、System_flush ()等
    *
    *选择一对:
    *- SysMin
    * 此模块维护一个内部可配置的循环缓冲
    器、该缓冲器* 存储输出,直到调用 System_flush()。
    * 循环缓冲区的大小通过 SysMin。bufSize 设置。
    *- SysCallback
    * SysCallback 允许系统 API 的用户定义实现。
    * SysCallback 支持代理的代码占用空间更小
    、可以是* 用于提供定制 System_printf 服务。
    * 默认的 SysCallback 函数指向存根函数。 请参阅
    * SysCallback 模块的文档。
    //
    ///var SysMin = xdc.useModule('xdc.runtime.SysMin');
    //SysMin。bufSize = 128;
    //System.SupportProxy = SysMin;
    var SysCallback = xdc.useModule('xdc.runtime.SysCallback');
    System.SupportProxy = SysCallback;
    //SysCallback.abortFxn =[&myUserAbort];
    //SysCallback.exitFxn ="&myUserFlushFlushn";/myUserFlushFlush
    =";/myUserExit ="
    //SysCallback.putchFxn ="&myUserPutch";
    //SysCallback.readyFxn ="&myUserReady";
    
    
    
    /*=========== 任务配置=================== //
    var Task = xdc.useModule('ti.sysbios.knl.Task');
    //
    *检查任务堆栈是否存在溢出情况。
    *
    *选择一个:
    *- true (默认值)
    * 在
    *期间启用任务堆栈溢出情况的运行时检查 上下文切换("从"和"到")
    *- false
    * 禁用任务堆栈溢出条件的运行时检查。
    *
    *在 ROM 中使用 BIOS 时:
    * 此选项必须设置为 false。
    //
    //Task.checkStackFlag = true;
    Task.checkStackFlag = false;
    
    //
    *设置创建任务时的默认任务堆栈大小。
    *
    *默认值取决于所使用的器件。 减小默认堆栈
    *大小可节省更多内存。
    */
    Task.defaultStackSize = 512;
    
    /*
    启用空闲任务。
    *
    *选择一个:
    *- true (默认值)
    * 创建优先级为0的任务、该任务调用空闲挂钩函数。 此
    * 选项必须设置为 true 才能获得 Power
    *提供的节能效果 模块。
    *- false
    * 未创建空闲任务。 此选项占用的内存较少、为 no
    * 需要额外的默认任务堆栈。
    * 若要在没有空闲任务的情况下通过电源模块实现节能
    、请执行* 将 Idle.run 添加为 Task.allBllockedFunc。
    //
    Task.enableIdleTask = true;
    //Task.enableIdleTask = false;
    //Task.allBlockedFunc = Idle.run;
    
    //
    *如果 Task.enableIdleTask 设置为 true,则该选项设置空闲任务
    的*堆栈大小。
    *
    *减小空闲堆栈大小可节省更多内存。
    */
    Task.idleTaskStackSize = 512;
    
    /*
    减少任务优先级的数量。
    *默认值为16。
    *减少任务优先级的数量可节省内存。
    */
    Task.numPriorities = 6;
    
    
    
    /*========================= 文本配置=================== //
    var text = xdc.useModule('xdc.runtime.Text');
    //
    *这些字符串放置在.const 段中。 将此参数设置为
    * false 将节省.const 段中的空间。 错误、断言和日志消息
    *将打印原始 ID 和 args、而不是格式化的消息。
    *
    *选择一个:
    *- true (默认值)
    * 此选项将测试字符串加载到.const 中、以便于调试。
    *- false
    * 此选项可减小.const 占用空间。
    //
    //text.isLoaded = true;
    text.isLoaded = false;
    
    
    
    
    //剩余模块
    var Diags = xdc.useModule('xdc.runtime.Diags');
    var Main = xdc.useModule('xdc.runtime.Main');
    var Reset = xdc.useModule('xdc.runtime.Reset');
    
    var LoggingSetup = xdc.useModule('ti.uia.sysbios.LoggingSetup');
    LoggingSetup.enableTaskProfiler = true;
    LoggingSetup.sysLoggerSize = 2048;
    LoggingSetup.loadLogging = false;
    

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

    您好!

    以下是我正在使用的所有行:

    VAR LoggingSetup = xdc.useModule('ti.uia.sysbios.LoggingSetup');
    LoggingSetup.loadLogging = false;
    //LoggingSetup.loadLoggerSize = 256;
    LoggingSetup.mainLoggerSize = 512;
    LoggingSetup.sysbiosLoggerSize = 2048;
    LoggingSetup.sysbiosSwiLogging = true;
    LoggingSetup.sysbiosHwiLogging = true;
    LoggingSetup.sysbiosSemaphoreLogging = true;
    LoggingSetup.enableTaskProfiler = true;
    

    您可能还会错过:

    VAR Load = xdc.useModule('ti.sysbios.utils.Load');
    Load.windowInMS = 100;//配置为每100ms 记录一次,而不是默认的500ms 周期。
    

    此致、

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

    我尝试了这些代码行、但仍然没有发生任何情况。  事实上、今天我重新开始尝试并从头开始构建另一个 simple_peripheral 项目、现在我在 ROV 中收到此消息:"MODULE ti.UIA.loggers.LoggerStopMode 在 simple_peripheral_cc2640r2lp_app.out 的配置中不存在"、因此现在 LoggerStopMode 不再显示。

    我觉得看到我个人项目的执行图不会发生。

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

    您好!

    请尝试访问以下链接: https://processors.wiki.ti.com/index.php/UIA_2.0_LoggingSetup

    此致、

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

    您好 Erik、

    使用我提供的最后一个链接时、您的结果是什么? 您是否有新结果要分享?

    此致、