问:
我知道最新 RTOS SDK 中的已知问题,如版本说明中所述。在最新版本发布后是否发现了任何其他已知问题?
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 SDK 中的已知问题,如版本说明中所述。在最新版本发布后是否发现了任何其他已知问题?
答:
版本说明中描述了截至最新 RTOS SDK 版本 (6.3) 所发现的已知问题。
下面列出了 6.3 版本之后所发现的已知问题以及相应的解决方案/权变措施。
问题:
CSL_rtcSetCompensationVal() 应该加载以下 RTC 补偿寄存器:RTCSS_COMP_LSB_REG 和 RTCSS_COMP_MSB_REG。但是,它使用与 RTCSS_COMP_LSB_REG 中相同的值加载 RTCSS_COMP_MSB_REG。
此问题是由于 csl\src\ip\rtc\V0\cslr_rtc.h 中的宏 CSL_RTC_COMP_MSB_RTC_COMP_MSB_SHIFT 定义错误导致的:
#define CSL_RTC_COMP_MSB_RTC_COMP_MSB_SHIFT ((uint32_t)(0U)) |
解决方案:
将宏 CSL_RTC_COMP_MSB_RTC_COMP_MSB_SHIFT 重新定义为
#define CSL_RTC_COMP_MSB_RTC_COMP_MSB_SHIFT ((uint32_t)(8U)) |
问题:
PDK 中的 CCS 示例工程应该针对 TI-RTOS 用例或裸机用例进行构建。但是,这些工程并未针对裸机用例进行构建。
例如,需要执行以下步骤来为裸机重新编译 GPIO_LedBlink_iceAMIC110_armTestProject 工程:
/* Program.global.echo = Task.create("&gpio_test", task0Params); */ |
Osal.osType = "nonos" |
由于这些更改,重新编译项目时会出现以下错误:
js: "C:/ti/pdk_am335x_1_0_17/packages/ti/osal/package.xs", line 70: Error: Soc is not defined |
解决方案:
按照此常见问题解答从头开始创建基于 PDK 的裸机应用工程。
在 Windows 10 中,从顶级 makefile 重新编译 PDK 失败。请参阅此 E2E 主题 ,了解详细信息和权变措施。
问题:
当传输数据非常小时,UART LLD 中可能会出现竞态条件,如下所述:
object->writeSize = (size_t)UART_writeData_v1(handle, (int32_t)(transaction->count)); |
由于传输数据很小,只有 1 个字节,传输瞬间就已完成,并发出 UART ISR2 中的标志 TXFIFO_EMPTY_STS(这是一个状态位,而不是一个中断位)。
object->txDataSent = TRUE; UARTInt2Enable(hwAttrs->baseAddr, UART_INT2_TX_EMPTY); // set bit EN_TXFIFO_EMPTY in UART IER2 register |
if (object->txDataSent == TRUE) { intType = UARTInt2StatusGet(hwAttrs->baseAddr); // read bit TXFIFO_EMPTY_STS in UART ISR2 if ((intType & UART_INT2_TX_EMPTY) != 0U) { UARTInt2Disable(hwAttrs->baseAddr, UART_INT2_TX_EMPTY); // reset bit EN_TXFIFO_EMPTY in UART IER2 UART_v1_callback(handle, (bool)false); object->writeTrans = NULL; object->txDataSent = FALSE; } } |
解决方案:
在 ISR 中添加一个额外检查,确保只有在启用了 TX_EMPTY 中断时才将 txDataSent 设置为 FALSE:
if ( ((intType & UART_INT2_TX_EMPTY) != 0U) &&(HW_RD_REG32(baseAddr + UART_IER2) & UART_IER2_EN_TXFIFO_EMPTY_MASK) ) { UARTInt2Disable(hwAttrs->baseAddr, UART_INT2_TX_EMPTY); /* Call back to application if in callback mode */ UART_v1_callback(handle, (bool)false); object->writeTrans = NULL; object->txDataSent = FALSE; } |