记录一个串口模块没有回包的问题

一个偶发的串口模块不回包

问题的焦点是有没有发包

还是有没有回包

watch -n 1 后面这一串 发现rx没有变化 但是tx是正常在增加的

cat /proc/tty/driver/ttyAMA I grep '7:'

7: uart:PL011 reV2 mmio:0x18062000 irq:19 tx:1192969 rx:30416 RTS|DTR|DSR|CD|RI

打印这串信息的源码

复制代码
grep -n "uart_line_info" drivers/tty/serial/serial_core.c

static void uart_line_info(struct seq_file *m, struct uart_driver *drv, int i)
{
        struct uart_state *state = drv->state + i;
        struct tty_port *port = &state->port;
        enum uart_pm_state pm_state;
        struct uart_port *uport;
        char stat_buf[32];
        unsigned int status;
        int mmio;

        mutex_lock(&port->mutex);
        uport = uart_port_check(state);
        if (!uport)
                goto out;

        mmio = uport->iotype >= UPIO_MEM;
        seq_printf(m, "%d: uart:%s %s%08llX irq:%d",
                        uport->line, uart_type(uport),
                        mmio ? "mmio:0x" : "port:",
                        mmio ? (unsigned long long)uport->mapbase
                             : (unsigned long long)uport->iobase,
                        uport->irq);

        if (uport->type == PORT_UNKNOWN) {
                seq_putc(m, '\n');
                goto out;
        }

        if (capable(CAP_SYS_ADMIN)) {
                pm_state = state->pm_state;
                if (pm_state != UART_PM_STATE_ON)
                        uart_change_pm(state, UART_PM_STATE_ON);
                spin_lock_irq(&uport->lock);

   seq_printf(m, " tx:%d rx:%d",
                                uport->icount.tx, uport->icount.rx);
                if (uport->icount.frame)
                        seq_printf(m, " fe:%d", uport->icount.frame);
                if (uport->icount.parity)
                        seq_printf(m, " pe:%d", uport->icount.parity);
                if (uport->icount.brk)
                        seq_printf(m, " brk:%d", uport->icount.brk);
                if (uport->icount.overrun)
                        seq_printf(m, " oe:%d", uport->icount.overrun);

////////////////////////

驱动代码里面计数

cat ./drivers/tty/serial/amba-pl011.c | grep ount.rx

uap->port.icount.rx++;

uap->port.icount.rx += dma_count;

pl011_fifo_to_tty

相关推荐
开发者联盟league1 小时前
在ubuntu上使用apt方式安装gitlab
linux·ubuntu·gitlab
青梅橘子皮1 小时前
Linux---虚拟地址空间
linux·运维·算法
晚风予卿云月1 小时前
【Linux】进程控制(一)—进程创建、进程终止与信号全流程详解
linux·运维·服务器·后端开发
roman_日积跬步-终至千里1 小时前
【架构实践(1)】架构师如何正确理解业务
运维·架构
skywalk81631 小时前
在Ubuntu安装明道名部署Playground web网页
linux·运维·ubuntu
Dontla2 小时前
WSL2 docker-desktop发行版介绍(用于运行Docker引擎(Docker Engine))(docker-desktop-data)
运维·docker·容器
爱和冰阔落2 小时前
Linux/Windows 双平台通关:YOLOv8 目标检测从模型选型到跨平台部署实战
linux·windows·yolo
小蜗牛的路2 小时前
Linux redhat 7在线安装docker、下载docker依赖、离线安装docker
linux·运维·docker
游戏开发爱好者82 小时前
Linux 自动上传 App Store Connect:把 IPA 上传流程接进CI工作流
linux·运维·ios·ci/cd·小程序·uni-app·iphone