ttysac1 java_ttySAC0与/dev/tts/0是否对应同一个物理设备串口0
这确实有些混乱:
1. 命令行参数“console=ttySAC0”与/dev/目录没有任何关系,它被用来选择从哪个设备输出内核、驱动的printk信息:
①.
在内核kernel/printk.c中,有这一行代码:
__setup("console=", console_setup);
对于命令行参数“console=ttySAC0”,console_setup函数会将设备名(name)、索引(index)解析出来:
名为ttySAC,索引为0──表示第一个设备
②. S3C2410的串口驱动文件drivers/serial/s3c2410.c中,有如下数据结构:
1882 static struct console s3c24xx_serial_console =
1883 {
1884 .name = S3C24XX_SERIAL_NAME, // 这个宏被定义为"ttySAC"
1885 .device = uart_console_device, // init进行、用户程序打开/dev/console时用到
1886 .flags = CON_PRINTBUFFER, // 打印先前在log_buf中保存的信息
1887 .index = -1, // 表示使用哪个串口由命令行参数决定
1888 .write = s3c24xx_serial_console_write, // 串口控制台的输出函数
1889 .setup = s3c24xx_serial_console_setup // 串口控制台的设置函数
1890 };
①、②的名字(name)、索引(index)两相比较,刚好相符,所以printk信息就会通过②中的s3c24xx_serial_console_write函数输出。
2. 至于/dev目录下哪个设备文件与具体设备对应,这取决于设备文件的主、次设备号,而不是它们的名字。
①.
同样是在S3C2410的串口驱动文件drivers/serial/s3c2410.c中,有如下数据结构:
static struct uart_driver s3c24xx_uart_drv = {
.owner = THIS_MODULE,
.dev_name = "s3c2410_serial",
.nr = 3,
.cons = S3C24XX_SERIAL_CONSOLE,
.driver_name = S3C24XX_SERIAL_NAME,
.major = S3C24XX_SERIAL_MAJOR, // 主设备号为204
.minor = S3C24XX_SERIAL_MINOR, // 次设备号为64,这指第1个串口;第2个为65
};
②. 使用ls -l命令查看/dev目录下的某个设备文件,比如:
$ ls -l /dev/tts/0
如果它的主设备号为204、次设备号为64,那么就对应第一个串口
ttysac1 java_ttySAC0与/dev/tts/0是否对应同一个物理设备串口0相关推荐
- 2021-05-28 新唐M051芯片--串口0,定时器
1.系统初始化 void SYS_Init(void) {/* Unlock protected registers */SYS_UnlockReg(); //操作寄存器解锁{ //切换外部晶振--& ...
- Vue报错Module build failed Error Node Sass version 6.0.1 is incompatible with ^4.0.0.解决方案
Vue报错Module build failed: Error: Node Sass version 6.0.1 is incompatible with ^4.0.0.解决方案 错误提示: ERRO ...
- oracle 11.2.0.3RAC升级到11.2.0.4
oracle 11.2.0.3RAC升级到11.2.0.4 一.GRID集群软件升级 二.Oracle数据库软件升级 注意 照着大佬的教程一步一步做的 ,升级完看也挺简单,可能会出现一些突发状况,这个 ...
- linux cron记录时间,crontab每分钟,5,10分钟,每小时,每天零点,每周日0点,每月1号0点,每年1月1日执行脚本,linux shell定时任务...
crontab每分钟,5,10分钟,每小时,每天零点,每周日0点,每月1号0点,每年1月1日执行脚本,linux shell定时任务 在linux系统里做维护和开发时, 经常会遇到要用crontabl ...
- JZ2440 v3.0 linux-3.4.2 busybox1.20.0内核 和 文件系统移植 修改分区大小 yaffs2文件系统补丁 开源资源查找
文章目录 零.平台 + 软件版本 + 烧写 平台 和 版本 烧写 一.编译系统的一堆命令 1. 编译uboot 2. 编译内核 3. 文件系统 yaffs2 额外的,自启动脚本配置 + 自动配置网卡 ...
- BigchainDB 2.0 区块链数据库白皮书 V1.0
BigchainDB 2.0 区块链数据库白皮书 V1.0(by hwg 参考百度翻译) 摘要 1.BigchainDB 2.0 设计目标 1.1. 完全去中心化和拜占庭容错 1.2.不可篡改(Imm ...
- Python将小于0的书数换成0的几种方式
>>> import numpy as np >>> a = np.random.randint(-5, 5, (5, 5)) >>> a arr ...
- aix oracle 10.2.0.1 升级 10.2.0.4,安装oracle 10.2.0.4 on aix 6.1的不同之处
根据Oracle Database Installation Guide 10g Release 2 (10.2) for AIX 5L Based Systems (64-Bit)文档,在AIX 6 ...
- 创建符合标准的、有语意的HTML页面——ASP.NET 2.0 CSS Friendly Control Adapters 1.0发布...
ASP.NET 2.0提供了非常多的Web开发中常用到的复杂控件,例如Menu.GridView.Login等.虽然这些控件使用方法极为简单,且功能异常强大,但若你查看一些由这些控件所生成的HTML代 ...
- mysql-4.0.20 use on scounix 5.0.7 error :dynamic linker:..:could not open libgthreads.so help!!!!
周五, 2007/07/06 - 17:28 - zhenghz mysql-4.0.20 use on scounix 5.0.7 error :dynamic linker:..:could no ...
最新文章
- LoadRunner本机录制http协议程序遇到的问题以及解决方法
- 菜单项onCreateOptionsMenu()和onOptionsItemSelected()的使用
- C#中Brush、Color、String相互转换
- FatMouse's Speed hdu 1160(动态规划,最长上升子序列+记录路径)
- 读保护_混合ASIL系统中不同安全等级模块间的边界保护
- bootstrap-select动态生成数据,设置默认选项(默认值)
- odex vdex art区别
- Arcpy 去除shp文件ZM值代码及工具箱
- java.lang.UnsatifiedLinkError错误一例:不同虚拟机之间的库不能共用
- 3ds max 2020 vray 5.0 渲染设置
- 基于springboot的医院门诊管理系统
- Spring MVC+ Spring + Mybatis “三大框架”介绍
- 小米兰亭pro ttf_小米10Pro使用体验(三)
- 关于MOVE_BASE的map坐标到UTM坐标变化的理解
- java 定时任务 cron
- AMBA_AXI总线详解
- 软件工程---团队作业4
- echarts世界地图中英文转换
- ESP32 开发笔记(四)LVGL控件学习 Canvas 画布控件
- Mac 截图工具 iShot Pro - 软件介绍、下载安装详细教程
热门文章
- 支持向量机总结(SVM)
- php数据回显是什么意思,关于mysql:php脚本回显部分php而不是什么意图
- 比 CMD 更强大的命令行:WMIC 后渗透利用(系统命令)
- 注解的引入以及注解的使用
- python中bif是什么_python类与对象(BIF详细分析及实例讲解)
- Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
- Unity编辑器:自定义编辑器样式——GUIStyle
- 2018年5月26日笔记
- kernelchina.org内核研究
- Event Listener's Adapter Classes