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.
工具/软件:Code Composer Studio
我在定制板上使用 CC1312R 芯片、并在刷写时使电路板正常工作存在问题。 我使用 的是 simplelink cc13x2_26x2_SDK 版本3.10.01.11。
当我使用 CCS 中的调试功能和 XDS110调试探针时、芯片会像应该那样通过 UART 发送数据。 但是、当我将.bin 刷写到芯片中时、我无法通过 UART 打印任何内容(这是查看电路板是否正在运行的唯一方法)。
我在从调试探针刷写和断开连接一次之后、已通过 UART 进行打印、但此后无法打印。
我将在 post-build 步骤中使用"${CCS_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin.bat ""${BuildArtiftFileName}"${BuildArtifactFileBaseName}_X_xx.bin""${CG_TOOL_ROOT}/bin/ofd470.exe ""${CG_TOOL_ROOT}/bin/hex470.exe ""${CCS_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin.exe 生成.bin。
另一个可能相关的问题是,当调试少数特定的 System_printf()调用时,有时我会通过 UART 获取垃圾值(只是一个简单的“从这里获取”字符串)。 问题似乎间歇性地发生。
我的代码如下:
/*! *@简介 主任务函数 * *@param A0 - *@param A1 - */ void appTaskFxn (UARg a0、UARg A1) { int32_t retval = 0; #ifndef power_MEAS #if defined (Board_display_use_UART) //初始化 UART0以进行制造商配置并测试 UART_init ();//调用 simplelink SDK /*启用 System_printf (..) UART 输出*/ UART_PARAMS_INIT (&uartParams); uartParams.波特 率= 9600; //将 UART 设置为读取超时。 readTimeout 单元是系统时钟节拍。 // clock_tick_period 以微秒为单位。 uartParams.readTimeout = UART_READ_TIMEOUT_seconds *(microseconds_per_second / clock_tick_period); uartParams.writeDataMode = UART_DATA_binary; uartParams.readDataMode = UART_DATA_binary; // Echo 会导致外部自动测试设备出现故障。 uartParams.readEcho = UART_ECHO_OFF; uartCfg = UART_OPEN (Board_UART0、&uartParams); //如果 UART_OPEN 失败 (uartCfg = NULL) 则停止{ while (1) { ; } } UartPrintf_init (uartCfg); #endif // Board_display_use_UART */ #endif // power_MEAS * ///??? BIOS_start 似乎清除了 RTC,所以初始化需要 //延迟 //??? 需要连接主机计算机时间(&secs_1970); //??? HWREG (AON_RTC_BASE + AON_RTC_O_SEC)= secs_1970; #ifdef TIMAC_AGAMA_FPGA /* FPGA Build 禁用功率限制*/ power_setConstraint (PowerCC26XX_IDLE_PD_Disallow); power_setConstraint (PowerCC26XX_SB_disallow); IOCPortConfigureSet (IOID_20、IOC_PORT_RFC_GPO0、IOC_STD_OUTPUT); IOCPortConfigureSet (IOID_18、IOC_PORT_RFC_GPI0、IOC_STD_INPUT); //配置射频内核 SMI 命令链路 IOCPortConfigureSet (IOID_22、IOC_IOCFG0_PORT_ID_RFC_SMI_CL_OUT、IOC_STD_OUTPUT); IOCPortConfigureSet (IOID_21、IOC_IOCFG0_PORT_ID_RFC_SMI_CL_IN、IOC_STD_INPUT); #endif #ifndef OSAL_PORT2TIRTOS /*初始化 iCall 模块*/ iCall_init(); #endif ////*从 CCFG 区域复制扩展地址*// memcpy (ApiMac_extAddr、(uint8_t *)&(__ccfg.CCFG_IEEE_MAC_0), // (APIMAC_SADDR_EXT_LEN / 2)); // memcpy (ApiMac_extAddr +(APIMAC_SADDR_EXT_LEN / 2)、(uint8_t *)&(_ccfg.CCFG_IEEE_MAC_1)、 // (APIMAC_SADDR_EXT_LEN / 2)); /*检查 CCFG IEEE 是否有效*// 只需使用硬件地址。 忽略 ccfg 文件中的内容。 // if (memcmp (apiMac_extAddr、dummyExtAddr、APIMAC_SADDR_EXT_LEN)=0) { /*否,它无效。 获取主要 IEEE 地址*/ memcpy (ApiMac_extAddr、(uint8_t *)(FCFG1_base + EXTADDR_OFFSET)、 (APIMAC_SADDR_EXT_LEN); } Task_sleep (300000);//睡眠3秒以使时钟保持稳定? 建议在线 System_printf ("在 appTaskFxn\r\n"中); retval = SysCtrlResetSourceGet (); System_printf ("复位源=%d\r\n"、retval); Task_sleep (0x2000); //初始化应用程序*/ #ifdef OSAL_PORT2tinit* ;#taskId_turateId*;#init*任务#t_turt_t_taskId* /*启动应用程序-永久循环*/ while (1) { System_printf ("在循环中..."); //等待1秒 Task_sleep (100000); } } int main (void) { Task_Params taskParams; int32_t retval = 0; #ifndef USE_DEFAULT_USER_CFG macUser0Cfg[0].pAssertFP = macHalAssertHandler; #endif /* LED 等与电路板相关的东西进行初始化 遵循 TI-RTOS 惯例 * PIN_init (BoardGpioInitTable); #if 已定义(POWER_MEAS) /*禁用外部闪存以进行功率测量*/ Board_shutdownExtFlash(); #endif //??? 即使不是 OAD、我们也会使用 SPI //#if defined (feature_BLE_OAD)|| defined (feature_native_OAD) spi_init(); //#endif i2cSetup (); //init_config_phy_id ();// macTaskInit 需要此信息。 //针对 SafeSense 集成删除 #ifdef OSAL_PORT2TIRTOS _macTaskId = macTaskInit (macUser0Cfg); #endif /*配置任务。 * Task_Params_init (&taskParams); taskParams.stack = appTaskStack; taskParams.STACKSIZE = APP_TASK_STACK_SIZE; taskParams.priority = app_task_priority; Task_construct (&appTask、appTaskFxn、&taskParams、NULL); #ifdef DEBUG_SW_TRACE IOCPortConfigureSet (IOID_8、IOC_PORT_RFC_TRC、IOC_STD_OUTPUT | IOC_CURRENT_4mA | IOC_SLEW_ENABLE); #endif /* debug_sw_trace * BIOS_start();//启用中断并启动 SYS/BIOS */ 返回(0); }
如果您需要任何其他信息、请告诉我。 感谢您对此提供的任何帮助。
您好!
您能否在 SDK 中重现 UART 驱动程序示例的相同问题? 只是想看看它们是否也有相同的问题。
谢谢、
您好、Ryan、
除了 Fi 问题之外、在尝试将 System_printf()链接到 UART 时、您还采取了哪些其他步骤 System_printf()在默认情况下不指向 UART、但还要求您向 TI-RTOS 内核配置添加一些设置。
我建议您只需尝试在器件上运行"uartecho"示例并执行相同的二进制导出步骤即可查看结果。
您好、Ryan、
您对我们的问题是否有任何更新?
您好、Ryan、
由于不活动、我将关闭此线程。 如果您仍然看到问题、请随时在此处继续发帖或使用"提出相关问题"打开新主题。
很抱歉,我的答复很晚,出现了一些事情,这个项目不得不搁置几个星期。
我发现当我在 uniflash 中单击"Verify Image"时、我收到错误" [ERROR] Cortex_M4_0:文件加载器:验证失败:地址0x00014CF0处的值不匹配请验证目标存储器和存储器映射"。
此错误是否是我的程序在调试中工作正常的原因(它实际上不会刷写器件)、但在刷写时不会这么做? 当我实际刷写固件时、我没有收到此错误、但它看起来甚至没有运行。
我尝试刷写示例 UART echo 项目、但它在验证映像时抱怨了类似的错误。 我可以在定制板上而不是 LaunchPad 上使用这些示例吗?
我再次对答复缓慢表示歉意。 感谢你的帮助。
您好、Ryan、
只要您确保引脚按照预期的方式设置、您就应该可以很好地刷写示例代码。 很难说出您为什么会遇到此错误、您是否有其他知道可以正常工作并可以测试相同图像的器件(如 LaunchPad)?
也许您可以与我分享您尝试刷写的图像、我也可以测试它们。
我已经解决了这个问题。
我切换到了隔离式 USB 转 UART 适配器(Microchip MCP2200)、而不是我以前使用的适配器、这解决了问题。
感谢你的帮助。