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/LAUNCHXL-CC2650:UART/RTOS 日志

Guru**** 2038710 points
Other Parts Discussed in Thread: CC2650, SYSBIOS
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/582214/rtos-launchxl-cc2650-uart-rtos-log

器件型号:LAUNCHXL-CC2650
Thread 中讨论的其他器件:CC2650SYSBIOS

工具/软件:TI-RTOS

你好!

我想使用 UART 在 cc2650和 MSP430之间进行通信。 我从项目0开始、但它使用 UART 进行 RTOS 日志记录。 如果我通过禁用 UART、我只能将其用于我的目的  

#define XDC_RAUNITY_LOG_DISABLE_ALL、或者我是否仍可以将其用于通信?  

这是 main 中的 UART 初始化。

此致、

Mayer Tamás

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Mayer:
    是的、禁用 UART 记录。 您将需要删除对 UartLog_init()的调用。 您使用的是哪个 SDK 以及哪个版本?
    此致、
    Janet
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Janet、您好!

    我使用 的是 CCS。

    此外、我还有另一个问题。 我尝试使用 RTOS Analyzer/Execution Analyzis、但我不能正常工作、因为 它没有显示任何内容。 我复制到 适当的.cfg 文件此行:

    VAR LoggingSetup = xdc.useModule('ti.uia.sysbios.LoggingSetup');

    之后、它开始工作、但无法正常工作。

    我还有两条警告。

    1、

    说明

    xdc.runtime.Main:"C:/ti/tirtos_cc13xx_cc26xx_2_20_01_08/products/uia_2_00_06_52/packages/ti/uia/sysbios/LoggingSetup.xs ",第809行:xdc.runtime.Main:xdc.runtime.Main.common$.logger 已分配,LoggingSetup 将记录器重新分配给 ti.UIA.loggers.LoggerStopMode.Instancy#1 xdc.runtime.Main:"C:/ti/tirtos_cc13xx_cc26xx_2_20_01_08/products/uia_2_00_06_52/packages/ti/uia/sysbios/LoggingSetup.xs,第809行:xdc.runtime.Main:xdc.runtime.Main.common$.logger 已分配,LoggingSetup 将记录器重新分配给 ti.UIA.Loggers.LoggerStopMode.instance.logger#1

    资源

    app_ble_uartlog.cfg

    路径

    /project_zero_app_cc2650launchxl/tools

    类型

    C/C++

    2、

    说明

    xdc.runtime.Main.common$.logger 已被分配,LoggingSetup 将记录器重新分配给 ti.uIA.loggers.LoggerStopMode.instance#1

    资源

    app_ble_uartlog.cfg

    路径

    /project_zero_app_cc2650launchxl/tools

    位置

    xdc.runtime.Main

    类型

    XDCTools 配置标记

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Mayer:
    我不熟悉您在第一个帖子中提到的项目0、但看起来该项目的.cfg 文件会将日志记录配置为使用 UART。 是否可以附加.cfg 文件? 然后、我可以告诉您需要删除或更改哪些行。
    谢谢、
    Janet
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Janet、您好!

    这是.cfg 文件。

    /*********
    
    @文件 cc2640.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 内核事件模块。
    
    小组成员:WCS、BTS
    目标设备:CC2650、CC2640、CC1350
    
    
    
    版权所有(c) 2013-2016、德州仪器(TI)公司
    保留所有权利。
    
    
    只要
    满足以下条件、就允许以源代码和二进制形式重新分发和使用(无论是否修改):
    
    *源代码的重新分发必须保留上述版权
    声明、此条件列表和以下免责声明。
    
    *二进制形式的再发行必须复制上述版权
    注意、本条件列表和中的以下免责声明
    分发时提供的文档和/或其他材料。
    
    *德州仪器公司的名称和名称均不相同
    其贡献者可用于认可或推广衍生产品
    未经特定的事先书面许可。
    
    本软件由版权所有者和贡献者"按原样"提供
    、
    
    不承认任何明示或暗示的保证、包括但不限于对适销性和特定用途适用性的暗示保证。 在任何情况下、版权所有者或
    贡献者都不对任何直接、间接、偶然、特殊、
    模范、 或相应的损害(包括但不限于
    采购替代产品或服务;丧失使用、数据或利润;
    或业务中断)、但出于任何责任理论、
    无论是在合同中、严格责任还是在使用
    本软件时以任何方式产生的侵权行为(包括疏忽或其他原因)、
    即使被告知存在此类损坏的可能性。
    
    秘书长的报告
    发布名称:BLE_SDK_2_02_01_18
    发布日期:2016年5月06日22:17:28
    //*
    
    
    ========================= ROM 配置======================== //
    *
    *要在闪存中使用 BIOS,请注释掉下面的代码块。
    //
    if (typeof no_rom =='undefined'||(typeof no_rom!='undefined'&& no_rom == 0)
    ){
    var ROM = xdc.useModule('ti.sysbios.rom.ROM');
    if (Program.cpu.deviceName.match(/CC26/)}{
    rom.romName = rom.CC2650;
    }
    否则(Program.cpu.deviceName.match(/CC13/)){
    ROM.romName = ROM.CC1350;
    }
    }/*
    
    
    
    ========================= 引导配置=================== //
    if (typeof no_rom =='undefined'||(typeof no_ROM!='undefined'&& no_ROM == 0)
    {
    var Boot = xdc.useModule('ti.sysbios.family.arm.cc26xx.Boot');
    }
    //
    *此模块包含特定于系列的引导 API 和配置设置。
    *有关更多信息、请参阅 SYS/BIOS API 指南。
    //
    if (typeof no_rom =='undefined'||(typeof no_rom !='undefined'&& no_ROM == 0)
    {
    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_Address_A!='Undefined'& Owi_IMG_A = 0x06HAD_A
    
    = 1);m3IMG_A = 0x0610}
    
    否则、如果(类型 OAD_IMG_B!='未定义'& OAD_IMG_B = 1)
    {
    m3Hw.resetVectorAddress = 0x6010;
    }
    否则(类型 OAD_IMG_E!='未定义'& OAD_IMG_E = 1)
    {
    m3HwI.resetVectorAddress = 0x10;
    
    }
    
    则为0x3Hwi.ResetVectorAddress = 0x10;否则为0x0
    
    
    /*将中断矢量置于 RAM 的开头,以便在运行时配置中断*/
    m3Hwi.vectorTableAddress = 0x20000000;
    
    /* CC2650有50个中断*/
    m3Hwi.NUM_INTERRUPTS = 50;
    
    
    
    /*=========== 空闲配置========================= //
    var Idle = xdc.useModule('ti.sysbios.knl.Idle');
    //
    *空闲模块用于指定
    在系统中没有*其他任务正在运行时要调用的函数列表。
    *
    *此处添加的函数将在空闲任务内连续运行。
    *
    *函数签名:
    * void func (void);
    */
    ///idle.addFunc ("&myIdleFunc");
    
    
    
    /*=================== 内核(SYS/BIOS)配置=================== */
    var BIOS = xdc.useModule('ti.sysbios.BIOS');
    /*
    启用 BIOS 库中的断言。
    *
    *选择一个:
    *- true (默认值)
    * 启用断言以进行调试。
    *- false
    * 禁用断言以减小代码占用空间并提高性能。
    *
    *在 ROM 中使用 BIOS 时:
    * 此选项必须设置为 false。
    //
    //BIOS.assertsEnabled = true;
    BIOS.assertsEnabled = false;
    
    //
    *指定 BIOS 的默认堆大小。
    //
    if (typeof no_rom =='undefined'||(typeof no_ROM!='undefined'& no_ROM = 0)
    ){
    BIOS.heapSize = 1668;
    }
    
    //
    *一个用于确定 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;
    
    
    
    //*================== 内存配置=================== //
    var 内存= xdc.useModule('xdc.runtime.Memory');
    //
    *内存模块本身只为 IHeap
    
    模块(例如、 HeapMem、HeapBuf)。
    //
    //创建一个小型的“只分配”堆*/
    if (typeof no_rom!='undefined'& no_ROM!= 0)
    {
    var HeapMin = xdc.useModule('xdc.runtime.HeapMin');
    var heapMinParams = new HeapMinMin;参数:
    heapMinParams.size = 1668;
    var myHeapMin = HeapMinParin =
    Memory.defaultHeapInstance;= myapMinMin == myapMinParams.==
    ;= myapMin====mymyMate.===mymymyapMinParams.in=====mymymymymymyapMinParams.imum=======
    
    
    
    程序配置=================== IAR
    
    忽略*//* Program.stack。 使用
    * IAR Embedded Workbench 中的项目选项来改变系统堆栈大小。
    //
    if (typeof no_rom =='undefined'||(typeof no_rom !='undefined'&& no_ROM == 0)
    {
    Program.stack = 1024;
    Program.argSize = 0;
    }
    else
    {
    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;
    
    
    
    
    /*==== 事件配置=================== //
    if (typeof use_events!='undefined'&& use_events!= 0)
    {
    var events = 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;
    
    
    
    /*====== TI-RTOS 中间件配置================= */
    var mwConfig = xdc.useModule('ti.mw.Config');
    /*
    包括 TI-RTOS 中间件库
    */
    
    
    
    /*================== TI-RTOS 驱动程序的配置==== //
    var driversConfig = xdc.useModule('ti.drivers.Config');
    //
    *包含 TI-RTOS 驱动程序
    *
    选择一个:
    *- driversConfig.LibType_nonInstrumented (默认)
    * 使用针对封装和性能进行优化
    的 TI-RTOS 驱动程序库* 而不使用断言或日志。
    *- driversConfig.LibType_Instrumented
    * 使用 TI-RTOS 驱动程序库在启用断言和日志的情况下进行调试。
    //
    driversConfig.libType = driversConfig.LibType_nonetieded;
    //driversConfig.libType = driversConfig.LibType_Instrumented;
    
    
    
    //其余模块
    var Diags = xdc.useModule('xdc.runtime.Diags');
    var Main = xdc.useModule('xdc.runtime.Main');
    var Reset = xdc.useModule('xdc.runtime.Reset');
    
    
    //需要加载文本以格式化 Log_info/warning/error,但不用于 Log_print。
    text.isLoaded = true;
    
    //日志
    记录 var 日志= xdc.useModule('xdc.runtime.Log');
    
    //使用 ANSI 代码覆盖错误输出颜色,并使用更短的(file.c:line)格式。
    log.L_error ={
    mask:diags.status、
    级别:diags.error、
    MSG:"\x1b[31;1mERROR:\x1b[0m (%s:%d)%$S"
    };
    
    Log.L_info ={
    mask:diags.info、
    MSG:"\x1b[32;1mINFO:\x1b[0m (%s:%d)%$S"
    };
    
    Log.L_warning ={
    mask:diags.status、
    级别:diags.warning、
    MSG:"\x1b[33;1mWARNING:\x1b[0m (%s:%d)%$S"
    };
    
    //拉入 LoggerCallback
    var LoggerCallback = xdc.useModule('xdc.runtime.LoggerCallback');
    
    //让 LoggerCallback 调用我们的输出函数
    LoggerCallback.outputFxn ="&uartLog_outputFxn";
    
    //告诉空闲模块将 flush()函数添加到空闲循环(在电源之前)
    var flush= xdc.useModule('ti.sysbios.knl.Idle');//如果空闲未导入则添加。
    idle.addFunc ('&uartLog_flush');
    
    //创建 LoggerCallback 的静态实例并设置为默认主记录
    器 var logerParams = new LoggerCallback.Params ();
    logerParams.arg = 1;
    
    //仅用于 Main (不在 rtsc 模块中的代码)
    Main.common$.logger = LoggerCallback.Params (
    Defaults.common$.logger);createLogerLogerLoggring/ create Loggringringrams.rums = 1
    
    xdc.useModule('ti.uia.sysbios.LoggingSetup');
    
    
    //打开主模块中的 User1日志和信息(用户代码)。 关闭 User2以获得乐趣。
    Main.common$.diags_USER1 = Diags.always_on;
    Main.common$.diags_USER2 = Diags.always_off;
    Main.common$.diags_USER6 = Diags.always_on;
    Main.common$.diags_INFO = Diags.always_on; 

    此致、

    Mayer Tamás

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

    尊敬的 Mayer:

    尝试在.cfg 文件中替换此代码:

    // Remaining Modules
    var Diags = xdc.useModule('xdc.runtime.Diags');
    var Main = xdc.useModule('xdc.runtime.Main');
    var Reset = xdc.useModule('xdc.runtime.Reset');
    // Need Text loaded for formatting of Log_info/warning/error, but not for Log_print.
    Text.isLoaded = true;
    // Logging
    var Log = xdc.useModule('xdc.runtime.Log');
    // Override error output color with ANSI codes, and use shorter (file.c:line) format.
    Log.L_error =  {
        mask: Diags.STATUS,
        level: Diags.ERROR,
        msg: "\x1b[31;1mERROR:\x1b[0m (%s:%d) %$S"
    };
    Log.L_info = {
        mask: Diags.INFO,
        msg: "\x1b[32;1mINFO:\x1b[0m (%s:%d) %$S"
    };
    Log.L_warning = {
        mask: Diags.STATUS,
        level: Diags.WARNING,
        msg: "\x1b[33;1mWARNING:\x1b[0m (%s:%d) %$S"
        };
    // Pull in LoggerCallback
    var LoggerCallback = xdc.useModule('xdc.runtime.LoggerCallback');
    // Tell LoggerCallback to call our output function
    LoggerCallback.outputFxn = "&uartLog_outputFxn";
    // Tell the Idle module to add our flush() function to the idle loop (before Power)
    var Idle = xdc.useModule('ti.sysbios.knl.Idle'); // Add if Idle isn't already imported.
    Idle.addFunc('&uartLog_flush');
    // Create a static instance of LoggerCallback and set as default Main logger
    var loggerParams = newLoggerCallback.Params();
    loggerParams.arg = 1;
    // Only for Main (code that's not in an rtsc module)
    Main.common$.logger = LoggerCallback.create(loggerParams);
    //Defaults.common$.logger = LoggerCallback.create(loggerParams); // Use for all log events
    var LoggingSetup = xdc.useModule('ti.uia.sysbios.LoggingSetup');
    // Turn on USER1 logs and INFO in Main module (user code). Turn off USER2 for fun.
    Main.common$.diags_USER1 = Diags.ALWAYS_ON;
    Main.common$.diags_USER2 = Diags.ALWAYS_OFF;
    Main.common$.diags_USER6 = Diags.ALWAYS_ON;
    Main.common$.diags_INFO = Diags.ALWAYS_ON;
    使用 Just
    VAR LoggingSetup = xdc.useModule('ti.uia.sysbios.LoggingSetup');
    您还需要禁用 ROM 构建才能使用 UIA 日志记录。  注释掉.cfg 文件中的 ROM 配置代码以在闪存中使用 BIOS。
    此致、
    Janet