主题中讨论的其他器件:SYSBIOS、 LAUNCHXL-CC26X2R1
工具/软件:TI-RTOS
您好!
对该线程的响应非常有用-同时我们意识到我们一直在使用发布配置、该配置抑制了许多可用的调试选项。
此后、我遇到了一个问题、导致我们的调试工作停止。 当我在构建配置之间工作时、我注意到 ble_release.cfg 文件中的代码模板、可以注释掉该代码以将 BIOS 置于闪存中、然后另一部分也可以检查我们的任务堆栈是否存在溢出情况:
/*========================= ROM 配置======================== //
*
*要在闪存中使用 BIOS,请注释掉下面的代码块。
//
var ROM = xdc.useModule('ti.sysbios.rom.ROM');
if (Program.cpu.deviceName.match(/CC26/)){
rom.romName = ROM.CC26X2;
}
否则(Program.cpu.deviceName.match(/CC13/)){
rom.romName = ROM.CC13X2;
}
/*========================= 任务配置=================== *
VAR 任务= xdc.useModule('ti.sysbios.knl.Task');
/*
*检查任务堆栈是否有溢出情况。
*
*选择一项:
*- true (默认值)
*在期间启用任务堆栈溢出情况的运行时检查
*上下文切换("从"和"到")
*-错
*禁用任务堆栈溢出情况的运行时检查。
*
*在 ROM 中使用 BIOS 时:
*此选项必须设置为 false。
*
Task.checkStackFlag = true;
//Task.checkStackFlag = false;
好的、对吧? 嗯、不是那么快。
在进行必要的修改以在我现在修改的.cfg 文件中排除/包含正确的代码后、我清理并重新编译了工程、在该工程中遇到了旧的"未解析的符号保留"错误。 即、以下内容未定义:
未定义的首次引用
符号
------ --------
TI_SYSBIOS_KNL_Mailbox_Params__init__S
TI_SYSBIOS_KNL_Mailbox_construct
TI_SYSBIOS_KNL_Mailbox_pend__E
TI_SYSBIOS_KNL_Mailbox_post__E
很明显、这些都是我们反复用于对多个外部硬件器件进行多个 I2C 和 SPI 操作的基本邮箱结构函数调用。 代码文件仍然存在、我可以使用 F3跳转到源文件、查看源文件和所有内容中的定义。 看起来、无论何时将 RTOS 放入闪存中、这些函数都不再被定义(或者只是不在 BIOS.obj 库中或其他库中)。 如果您取消注释"PUT BIOS IN ROM"部分并使用基于 ROM 的 RTOS、一切都将再次正常。
现在、我期待的有趣调试功能不可用、除非我大幅修改代码以排除邮箱使用... 这毫无意义。
作为一个持怀疑态度的人、我立即以为我做了一些错误的事情来破坏代码、这是我的错。 因此、我在 不同的工作区中打开了一个全新的 simple_peripheral 项目。 它在 Release 和 Debug 配置中都成功构建、 但不使用邮箱。 因此、我添加了结构和变量定义以及下面的一些初始化代码、并将其直接放入 SimplePeripheral_init 中、因此我知道它会尝试将其链接到中:
// TW 调试
typedef 结构体 I2C_InfoMsgObj{
uint8_t slave_addr;
uint8_t TX_length;
uint8_t* tx_data;
uint8_t rx_length;
uint8_t* rx_data;
} I2C_InfoMsgObj;
typedef 结构体 I2C_MailboxInfoMsgObj{
Mailbox_MbxElem;/*邮箱标头*/
I2C_InfoMsgObj obj;//信息邮箱*/
} I2C_MailboxInfoMsgObj;
I2C_MailboxInfoMsgObj i2cInfoBuffer[4];
Mailbox_StructI2C_mbxInfoStruct;
Mailbox_Handle I2C_mbxInfoHandle;
// TW 调试 Mailbox_Params mbxParams; Mailbox_Params_init (&mbxParams); mbxParams.buf =&i2cInfoBuffer; mbxParams.bufSize = sizeof (i2cInfoBuffer); Mailbox_con构(&I2C_mbxInfoStructt、 sizeof (I2C_InfoMsgObj)、4、&mbxParams、NULL); I2C_mbxInfoHandle = Mailbox_Handle (&I2C_mbxInfoStruct);
结果是调试配置发出了一个非常相似的错误、但仅包含前两个部分(因为我根本没有在挂起/后处理中复制)。
所有这些之后-问题就变成了、TI-RTOS 的闪存库映像是否未完成邮箱使用? 如何正确定义这些函数、以便能够进行正确的调试配置?
未定义的首次引用
符号
------ --------
TI_SYSBIOS_KNL_Mailbox_Params__init__S
TI_SYSBIOS_KNL_Mailbox_construct
