NXP MCU 技术william hill官网
直播中

张涛

7年用户 1301经验值
私信 关注
[问答]

调试S32G2 M核串口,Linflexd_Uart_Ip_AsyncReceive函数被阻塞了怎么解决?

产品方案为S32G274。目前使用LINFlexD_0作为核心A的调试串口,核心A使用的LINFlexD_0没有异常。LINFlexD_1为M核调试串口。M core存在的问题如下:
由于项目需要在不影响调试日志实时输出的情况下同时发送和接收数据,所以我们需要串口具有全双工特性和非阻塞接口。这些都符合手册中的条件,但在实际测试中与手册不符。
目前M核调试串口主要存在三个问题:
  • Linflexd_Uart_Ip_AsyncReceive 函数被阻塞(与接口的异步特性不一致)。
测试的串口数据接收接口为Uart_AsyncReceive,调用了Linflexd_Uart_Ip_AsyncReceive。该接口被描述为非阻塞接口,如下所示:



但在实际测试中,接口运行后会阻塞,直到接收到的数据达到指定长度。非阻塞特性与手册中描述的不同。

  • 数据接收底部未缓存数据导致超出设置缓冲区的接收数据丢失
测试中,当发送数据的实际长度大于接收数据的设定长度时,超出设定长度的数据将丢失。Uart_SetBuffer接口就是用来解决这个问题的。接口描述如下:


测试发现接口无法解决数据丢失的问题。
  • 串口数据接收时发送接口故障。(不符合全双工特性)
当前发送接口为Uart_AsyncSend。该接口调用 Uart_StartAsyncSend 函数。该函数的内部逻辑如下: 正在接收数据时,停止发送。


因此,我们不能同时发送和接收数据,这与手册中描述的全双工特性不同。
请检查它们。是否只能设置为LINFlexD_0作为M核的调试串口?如何调整?非常感谢!


更多回帖

发帖
×
20
完善资料,
赚取积分