工具/软件:TI-RTOS
我正在使用 TI 15.4-Stack 示例传感器项目、SWRU488B 对此进行了介绍。 项目包括 System_printf ()路由到的 UART_printf 实用程序,我可以在 Putty 客户端中看到 System_printf ()输出。
我在 main.c 中包含了 XDC/runtime Log.h,并在 主任务中将 Log_info0 ()与 System_printf ()一起添加到无限循环中
while (1)
{
sensor_process();
system_printf ("hello world \n"r);
log_info0 ("hello again \n");
}
System_printf 正在打印、而 Log_info0未提供输出。
正如我从 RTSC-pedia 中发现的,日志函数生成日志事件,这些事件由 LoggerSys logger 处理,后者将 evens 路由到 System_printf()。 根据 RTCS-pedia 、我已将这行添加到.cfg 文件中
VAR Log = xdc.useModule("xdc.runtime.Log");
var Diags = xdc.useModule("xdc.runtime.Diags");
//为非模块启用"info"事件的运行时控制*/
var Main = xdc.useModule("xdc.runtime.Main");
Main.common$.diags_INFO = Diags.RUNTIME_ON;
//使用 LoggerSys ILogger 服务提供商*/
var Logger = xdc.useModule("xdc.runtime.LoggerSys");
/*为所有非模块代码创建和绑定记录器*/
Main.common$.logger = Logger.create();
我还对行进行了注释
// var ROM = xdc.useModule('ti.sysbios.rom.ROM');
// rom.romName = rom.CC1350;
并将 BIOS.logs Enabled 修改为 true 以避免注销编译
BIOS.logsEnabled = true;
这是我的完整.cfg 文件
/* SYSBIOS */
var useSysbiosInRom;
/*确定是否使用 TIRTOS ROM 代码*/
if (typeof no_rom =='undefined'||
(typeof no_rom!='undefined'&& no_ROM = 0)
{
useSysbiosInRom = true;
}
否则
{
useSysbiosInRom = false;
}
if (useSysbiosInRom)
{//
var ROM = xdc.useModule('ti.sysbios.rom.ROM');
// rom.romName = ROM.CC1350;
}
var Defaults = xdc.useModule('xdc.runtime.Defaults');
var Types = xdc.useModule('xdc.runtime.Types');
var Diags = xdc.useModule('xdc.runtime.Diags');
VAR Log = xdc.useModule("xdc.runtime.Log");
//使用 LoggerSys ILogger 服务提供商*/
var Logger = xdc.useModule("xdc.runtime.LoggerSys");
var Error = xdc.useModule('xdc.runtime.Error');
var Main = xdc.useModule('xdc.runtime.Main');
var Memory = xdc.useModule('xdc.runtime.Memory');
var SysCallback = xdc.useModule('xdc.runtime.SysCallback');
var System = xdc.useModule('xdc.runtime.System');
var text = xdc.useModule('xdc.runtime.Text');
if (sysbiosInRom)
{
var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
}
否则
{
var HeapMin = xdc.useModule('xdc.runtime.HeapMin');
}
var Reset = xdc.useModule('xdc.runtime.Reset');
var BIOS = xdc.useModule('ti.sysbios.BIOS');
var Clock = xdc.useModule('ti.sysbios.knl.Clock');
var Task = xdc.useModule('ti.sysbios.knl.Task');
var Semaphore = xdc.useModule('ti.sysbios.knl.Semaphore');
var Hwi = xdc.useModule('ti.sysbios.hal.Hwi');
var M3Hwi = xdc.useModule('ti.sysbios.family.arm.m3.Hwi');
//启用对非模块的"info"事件的运行时控制*
Main.common$.diags_INFO = Diags.Runtime_on;
/*为所有非模块代码创建和绑定记录器*/
Main.common$.logger = Logger.create();
//启用空闲任务(默认)。 */
Task.enableIdleTask = true;
//编译所有断言的*/
Defaults.common$.diags_ASSERT = Diags.always_off;
//不要在目标上加载模块的字符串名称*/
Defaults.common$.namedModule = false;
//允许 Mod_create()和 Mod_construct(),但不能删除()或析构()*/
Defaults.common$.memoryPolicy = types.create_policy;
/*不要在目标上加载诊断/描述性文本字符串*/
text.isLoaded = false;
//使用用户提供的最小回调提供程序*/
System.SupportProxy = SysCallback;
//不需要退出处理程序*/
System.maxAtexitHandlers = 0;
// main()和 Hwi、Swi 堆栈大小*/
Program.stack = 1280;
如果(useSysbiosInRom)
{
//不需要命令行参数 main (argc、argv)*/
Program.argSize = 0;
}
//构建 SYS/BIOS 的自定义优化版本*/
BIOS.libType = BIOS.LibType_Custom;
//不记录-全部编译*/
BIOS.logsEnabled = true;
//禁用 SYS/BIOS.AssertsCode =
false
/*减少任务优先级数量以保存 RAM */
Task.numPriorities = 6;
//设置默认任务堆栈大小-在未指定任务堆栈时使用*/
Task.defaultStackSize = 512;
//不检查堆栈是否溢出-节省周期(和功耗)并且闪存*/
Task.checkStackFlag = false;
/*禁用异常处理以保存闪存-在活动开发期间撤消*/
M3Hwi.enableException = true;
M3Hwi.exhandlerFunc ="&Main_exhandler";
M3Hwi.nvicCCR.UNALIGN_TRP = 0;
M3Hwi.nCCR.DIV_0_TRP = 0;
/*在空闲循环期间不检查
*中断溢出;* Hwi.checkStackFlag
/*最大限度地减少错误模块的闪存和 RAM 使用*/
Error.raiseHook =空;/* null = LOOP 函数的默认值。 例如、将"&myFxn"用于您自己的处理程序函数。 //
Error.maxDepth = 2;
//设置默认的 CPU 频率*/
BIOS.cpufreq.lo = 48000000;
//将复位向量放置在闪存的开始位置*/
M3Hwi.resetVectorAddress = 0x0;
//将中断向量放置在 RAM 的开始位置,以便在运行时配置中断*/
M3Hwi.vectorTableAddress = 0x20000000;
/* CC2650有50个中断*/
M3Hwi.NUM_INTERRUPTS = 50;
if ( useSysbiosInRom )
{//
创建一个小型的"只分配"堆*/
BIOS.heapSize = 1724;
}
否则
{
var heapMinParams = new HeapMinMinMats.Params;
heapMinParams.size = 1724;}myvar
= myapMapmyMatvs
=
xdc.useModule('ti.sysbios.knl.Swi');;myHeapMinMatwis = myHeapMinumin Memory.defaultHeapInstance;
BIOS.swiEnabled = true;
BIOS.includeXdcRuntime = true;
//任务无法基于优先级挂起*/
semaphore.supportsPriority = false;
//更改默认错误函数-仅旋转*/
Error.policyFxn = Error.policySpin;
// true:允许运行时创建例如 semaphores
* false:编译 BIOS 中的内存引用*/
BIOS.runtimeCreatesEnabled = true;
/*中止和退出函数-仅 SPIN */
System.ABortFxn = System.ABortSpin;
System.exitFxn = System.exitSpin;
/* CC13xx 启动模块*/
var Boot = xdc.useModule('ti.sysbios.family.arm.cc26xx.Boot');
Boot.driverlibVersion = 2;
Boot.customerConfig = false;
//Boot.checkBackdoor = true;
//时钟周期设置为10时
钟周期;如果未定义* Perticktick = 10;
/*空闲电源*
/ var 空闲= xdc.useModule('ti.sysbios.knl.Idle');
idle.addFunc ('&Power_idleFunc');
/* UART 输出*/idle.addFunc
('&UartPrintf_flush');
SysCallback.putchFxn ="&UartPrintf_puttutch;
此外、我在编译器预定义符号中将 XDC_runtime _Log_disable_all 更改为 X_XDC_runtime _Log_disable_all、但仍没有从 Log_info0 ()输出
我忘记或错过了什么?
