10 虚拟串口在Linux下的使用问题

发布于 2020-12-18 10:07:54    浏览:327

问题:RTT虚拟串口(STM32H743的板子)连接windows没有问题,但是连接Ubuntu18.04的串口程序,在板子第一次上电时,能够正常连接并接收数据,但是一旦关掉串口(无论正常结束或者异常退出),再重新进行连接,可以正常打开串口,但是接收不到数据。
尝试:windows下有的软件需要主动打开DTR,在linux试了下没有解决问题。尝试了cutecom、minicom、还有使用asio进行读取,都存在一样的问题。有没有人遇到过相同的问题?谢谢!!

查看更多

humourous94
humourous94 2020-12-21
This guy hasn't written anything yet

我是这么用JLink的RTT调试的,可以正常调试:
1.menuconfig打开了shell功能,并设置rt_kprintf 的 console 为UART
2.main函数中添加

#include "SEGGER_RTT.h"
void rt_hw_console_output(const char* str) { SEGGER_RTT_WriteString(0, str); }/* 调用segger 输出函数 */
int main()
{
  SEGGER_RTT_ConfigUpBuffer(0, NULL, NULL, 0,SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL);
...
return 0;
}

3.terminal中使用JLinkGDBServer 和JLinkRTTClient两个程序,可以在shell中查看rt_kprintf的内容

4.用arm-none-eabi-gdb XXX.elf 进入gdb模式,输入 target remote localhost:2331 连接

然后就可以使用gdb单步调试了,至少能找到异常出现在哪
(我其实也不知道那个异常是什么,但是这样单步调试应该能更快把那个你定位问题点)

3 个回答
deepsky2020
deepsky2020 2020-12-18
This guy hasn't written anything yet

正常发数据的时候:RTT进入HAL_PCD_DataInStageCallback(), epnum==1分支

异常的时候,RTT执行:
HAL_PCD_SetupStageCallback()
HAL_PCD_DataInStageCallback(), epnum=0分支

不知道代表了什么?

fubaojun2006
fubaojun2006 2021-05-18
This guy hasn't written anything yet

确实,DTR 需要打开,这边我也遇到了

撰写答案

请登录后再发布答案,点击登录
关注者
0
被浏览
327

发布
问题

分享
好友

手机
浏览

扫码手机浏览