Other Parts Discussed in Thread: CC2564C
主题中讨论的其他器件:CC2564C、 MSP432P401R
工具/软件:Code Composer Studio
我使用与包含 CC2564C 芯片和音频编解码器的 PCB 堆叠的 MSP432 Launchpad 2.0。 软件库是 Samples 目录中的 A3DPDemo_SNK。 升级到 Bluetopia 4.2.1.1后、我可以连接到设备、一切正常。
但是、在添加其他功能后、程序不再适合主存储器。 在研究 了 TI 链接器命令文件入门之后 、我将两个目标文件(A3DPDemo_SNk.obj 和 btvs.obj)移动到了 SRAM_CODE 存储器范围中。 只有这样、MCU 才会在 BT 堆栈初始化期间遇到硬故障。 按照 本帖子中给出的指令 、我设法在硬件故障发生之前检查了调用堆栈和函数:HCI_VS_InitializeAfterHCIReset。 因此、我在内部放置一个断点并重新启动以进行调试。 单步执行对 VS_Update_UART_Baud_rate (BluetoothStackID、SpecifiedBaudRate)的调用后、会发生硬故障。 那么、我进入了该函数。 (缩短的)代码如下所示:
if ((BluetoothStackID)&&(波特率)&&(波特率<= CONTROLLER_MAX_HCI_BAUD_RATE) ){ /*写入波特率。 */ 。 RET_val = HCI_Send_Raw_Command (BluetoothStackID、OGF、OCF、sizeof (NonAlignedDWord_t)、(Byte_t *)&&波特率、 状态(&S)、长度(&L)、缓冲区、真); if ((ret_val = MapSendRawResults (ret_val、状态、长度、缓冲区))==0) { ... RET_val = HCI_RECONFIG_Driver (BluetoothStackID、false 和(DriverReconfigureData)); } } 否则 RET_val = BTPS_ERROR_INVALID_PARAMETER;
调试器单步进入 if-子 句(正确)并在其末尾调用 HCI_RECONFIGURE _Driver() 到目前为止还不错,但后来开始了一些奇怪的事情:
调试器进入 else-部分并在那里继续执行! 任何进一步的单步执行(使用 F6)似乎只是遵循源文件中的每个函数/语句。 到达 return 语句后、它不会返回、但会继续从源代码文件执行下一个函数。 我不会得到这个-查看变量的值也会产生错误的结果。 这里发生什么事了?
