首页 > 系统相关 >linux tty uart

linux tty uart

时间:2023-07-29 16:56:12浏览次数:36  
标签:control status tty uart base linux line modem

uart registers

I/O portRead (DLAB=0)Write (DLAB=0)Read (DLAB=1)Write (DLAB=1)
base RBR receiver buffer THR transmitter holding DLL divisor latch LSB DLL divisor latch LSB
base+1 IER interrupt enable IER interrupt enable DLM divisor latch MSB DLM divisor latch MSB
base+2 IIR interrupt identification FCR FIFO control IIR interrupt identification FCR FIFO control
base+3 LCR line control LCR line control LCR line control LCR line control
base+4 MCR modem control MCR modem control MCR modem control MCR modem control
base+5 LSR line status factory test LSR line status factory test
base+6 MSR modem status not used MSR modem status not used
base+7 SCR scratch SCR scratch SCR scratch SCR scratch

*from: https://www.lammertbies.nl/comm/info/serial-uart

 

uart hw driver

struct uart_port setup in probe func

设置serial_in/serial_out/handle_irq/set_termios函数指针,以及其它成员,比较关键的如下:

.iotype = UPIO_MEM,//成员表示该串口接口寄存器的地址类型,8位的内存地址
.regshift = 2,//在访问该串口接口的某个寄存器时,需把该寄存器的号左移多少位然后加基地址(不管是物理或虚拟地址)才能得能到这个寄存器的址址

.mapbase

.mapsize

.membase //ioremaped

static void 8250_mem_serial_out(struct uart_port *p, int offset, int value)
{
    offset = offset << p->regshift;
    writeb(value, p->membase + offset);
}

 

tty uart misc

查看ttyS0是否有开启

cat /sys/devices/platform/uart_control/uart_switch_status

执行结果如下:

001110220330

上面第3个字元如果为0,表示ttyS0是关闭的

Android系统开机过程中按ctrl c导致后面读stdin返回errno 5(IO error)

问题原因:sh启动比较晚

问题解决方案:sh启动要早,如果没有及时将read buf内的内容读走,可能会打乱tty driver,比如如下的启动时机(Android原生)

on init && property:ro.debuggable=1
    start console

 

标签:control,status,tty,uart,base,linux,line,modem
From: https://www.cnblogs.com/aspirs/p/17590078.html

相关文章

  • Linux Shell脚本中的空格
    =等号两边必须无空格,否则报错;如:i=$1和i=$1都是错误的。但是在()内部不限制如for((i=1;i<3;i=i+1))(())内外括号之间无空格,写成(())这样会报错。但内部括号不限制如s=$(($i+1))[]是条件判断式,所以前后内部都必须有空格。其内部元素之间必须有空格才能识别,否则一律......
  • linux文本编辑YCM报错
    linux文本编辑YCM报错刚从github安装了vimplus,可是发现存在不少的问题。索性给直接记录一下。TheycmdserverSHUTDOWN(restartwith':YcmRestartServer').ycm的readme中给出推荐版本需要注意一下。由于本人的python版本是3.10,所以出现了版本兼容的问题。原因是Python3......
  • 【Linux】Kali Linux 安全学习笔记(1) - Docker Kali 部署与安装软件
    由于最近要做安全方面的工作,经网友们的推荐选定了kalilinux作为实施平台。但vm直装的方式太过麻烦了,本次kalilinux将采用docker镜像的方式进行部署使用。直接使用run运行命令启动rolling镜像,若镜像不存在,docker会自动进行checkout到本地,如下图:dockerrun-itkal......
  • linux驱动模板
     最基本#include<linux/module.h>//需要测试是否还需要其他头文件staticint__initled_init(void){}staticvoid__exitled_exit(void){}module_init(led_init);//驱动初始化module_exit(led_exit);//驱动退出MODULE_LICENSE......
  • Nexpose v6.6.208 for Linux & Windows - 漏洞扫描
    Nexposev6.6.208forLinux&Windows-漏洞扫描Rapid7VulnerabilityManagement,ReleaseJul27,2023请访问原文链接:https://sysin.org/blog/nexpose-6/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org您的本地漏洞扫描程序搜集通过实时覆盖整个网络,随......
  • Linux 下的 OpenGL 之路(九):天空盒、反射和折射
    前言搞定了天空盒,才算是真正完成了场景的搭建,以后再要进行什么样的图形学测试,都可以在这个场景下进行。比如后面的反射、折射就是这样的例子。写完这篇,我决定暂时结束这个系列。主要是因为我太懒了,居然拖拖拉拉拖了两年。其实可以探索的内容还有很多,比如阴影啊、HDR啊、辉光啊、......
  • 瑞芯微|rk3568 uart快速上手
    一、调试环境平台:rk3568kernel:4.19.232SDK:rk_android11.0_sdkBoard:rk3568-evb1-ddr4-v10二、rk3568uart控制器1.特性:rk3568UART控制器特性如下:-UART控制器通道:UART0~UART8【datasheet好像写的有问题】-包含2组64字节的FIFO,用于接收和传输-支持流控......
  • linux获取子文件和子目录
    linux获取子文件和子目录#include<dirent.h>#include<sys/stat.h>#include<string>#include<vector>#include<stdio.h>//#include<android/log.h>#defineTAG"[demo]"//#defineLOGD(...)__android_log_print(AND......
  • ffmpeg 编译安装android和linux
    ffmpeg编译安装android和linux下载:https://github.com/FFmpeg/FFmpeghttps://www.ffmpeg.org/download.htmlenvirenmentndk:https://github.com/android/ndk/wiki/Unsupported-Downloadssudoapt-getinstallbuild-essentialpkg-configsudoapt-getintalllibx264-dev......
  • linux tar命令之小知识-解压指定层级目录以及指定文件
    我们以解压k8s二进制源码文件为例,只解压出第三层级目录下的kube-apiserver、kube-controller-manager、kubectl、kubelet、kube-proxy、kube-scheduler这几个文件。k8s源码文件目录结构,目录实在太多了,我删除了大部分,不在这里显示[root@k8s-master01tmp]#treekubernetesku......