关于/dev/console的个人理解

2023-11-17

嵌入式开发里, 首先需要配置一个串口,用于打印printk信息到控制台,以2440为例
这里写图片描述
这里的/dev/console(设备号 5, 1),就是控制台,用于printk信息输出到的设备, 但是呢,
/dev/console是个虚拟设备, 他需要映射到真正的tty设备, 比如2440,会映射到 ttySAC0
arm335x,会映射到ttyO0,所以内核为了统一方便,就统称命名为/dev/console,之后根据不同的平台在具体的进行映射
还以2440为例子:
2440平台架构定义了默认的串口配置:

static struct console s3c24xx_serial_console =
{
    .name       = S3C24XX_SERIAL_NAME, //"ttySAC"
    .device     = uart_console_device,
    .flags      = CON_PRINTBUFFER,
    .index      = -1,
    .write      = s3c24xx_serial_console_write,
    .setup      = s3c24xx_serial_console_setup
};

在内核初始化,会初始化控制台(console)设备
1.首先分析传入的uboot参数, 即”console=ttySAC0”
之后 分解出 name= ttySAC, index为0
3.对比 uboot传入的”ttySAC”与s3c24xx_serial_console .name是否相等
相等的话,即注册console设备

static struct uart_driver s3c24xx_uart_drv = {
    .owner      = THIS_MODULE,
    .dev_name   = "s3c2410_serial", //显示在/dev下的名字
    .nr     = 3,
    .cons       = S3C24XX_SERIAL_CONSOLE,
    .driver_name    = S3C24XX_SERIAL_NAME,
    .major      = S3C24XX_SERIAL_MAJOR, //204
    .minor      = S3C24XX_SERIAL_MINOR,//64
};

根据上面的驱动结构体可以看出,要注册的驱动设备号为 204, 64, 即index为0的设备
s3c2410_serial0
即 ttySAC0 对应2440架构的—-> /dev/s3c2410_serial0(204, 64) 设备
其中 ttySAC对应的是2440结构
0对应第1个设备
ttySAC0 —>/dev/s3c2410_serial0
ttySAC1 —>/dev/s3c2410_serial1
ttySAC2 —>/dev/s3c2410_serial2
总结:
1.uboot的传入参数 console=”ttySAC0”, 即ttySAC0不是真正的设备, 通过ttySAC来对应平台(因为不同平台对应的名字 不一样), 0代表第1个设备
2./dev/console指向 (204, 64)的设备, 具体根据平台搜索代码默认的定义
这里写图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于/dev/console的个人理解 的相关文章

  • max 3485 使用方法详解

    芯片管脚介绍 1 1 1号引脚为RO 通常与MCU UART控制器的RX相连接 用于接收对端数据 1 2 2号引脚为RE RE对RO起控制作用 RE为低电平 RO可接收数据 RE为高电平时 RO不接收数据 1 3 3号引脚为DE DE对 D
  • STM32软件加密

    摘要 知识产权的保护 如何让自已辛勤的劳动成果不被别人抄袭 采用有效的手段对IC加密是值得每一个设计者关注的问题 当然 有人说 没有解不了密的IC 的确 解密是一项技术 只要有人类在不断的研究 它就有破解的一天 但是加密后的IC会增加破解的
  • 【面试】嵌入式软件与非嵌入式软件、设备驱动与裸机驱动开发区别

    嵌入式软件开发与非嵌入式软件开发区别 设备驱动开发与裸机驱动开发区别 嵌入式开发与传统单片机开发区别 如果面试遇到这样的问题 三个问题的答案一致 答 我认为嵌入式软件与非嵌入式软件 设备驱动开发与裸机驱动开发 嵌入式开发与传统单片机开发 的
  • 51单片机控制SG90舵机、MG90S舵机

    舵机的控制信号为周期是20ms 的脉宽调制 PWM 信号 其中脉冲宽度从0 5ms 2 5ms 相对应舵盘的位置为0 180度 呈线性变化 也就是说 给它提供一定的脉宽 它的输出轴就会保持在一个相对应的角度上 无论外界转矩怎样改变 直到给它
  • Android如何配置init.rc中的开机启动进程(service)

    开篇 为什么写这篇文章 先说下我自己的情况 我是个普通的学生 之前在学校一直做Android应用开发 找实习的时候也一直想找相关的工作 来到现在这家公司以后 由于业务调整 被领导安排去做底层开发 本来我对底层的东西一无所知 加上其实并不感兴
  • Keil5识别不到ST-Link的解决办法

    刚开始还以为是pack的问题 下载好多pack也没解决 后来发现其实是驱动的问题 从官网上下载驱动 之后进行基本的配置 如下所示 点击魔术棒标志 然后 然后 点击settings 点击add 添加自己的芯片类型 选择erase full c
  • 如何修改dmesg log buffer size

    需要修改 Linux 内核源码中的一个控制 log buffer size 的宏 CONFIG LOG BUF SHIFT buffer size 是 2 shift 加大这个就可以 一 配置 make menuconfig General
  • fedora图形界面与命令行模式切换方法

    fedora 进入命令行 终端 startx 在图形界面的控制台上输入 init 3 即可停止 xwindow 如果无法返回到终端 可以按住 alt ctrl f2 f6启动到新的控制台 然后结束掉tty1上的xwindow 结束xwind
  • git上传文件到远程分支

    1 进入文件目录 kernel 执行make distclean 清除配置文件 2 查看所在分支 git branch a 3 查看远程分支 git branch r 3 添加文件到分支 git add git commit m XXXX
  • linux 动态库搜索路径优先顺序以及Makefile 编译设置

    一 linux 下 动态库搜索路径优先顺序 编译目标代码时指定的动态库搜索路径 环境变量LD LIBRARY PATH指定的动态库搜索路径 配置文件 etc ld so conf中指定的动态库搜索路径 配置后要运行 ldconfig命令才能
  • sd卡详细资料

    1 简介 SD卡是基于flash的存储卡 SD卡和MMC卡的区别在于初始化过程不同 SD卡的通信协议包括SD总线和SPI两类 SD卡使用卡内智能控制模块进行FLASH操作控制 包括协议 安全算法 数据存取 ECC算法 缺陷处理和分析 电源管
  • Linux驱动-编译驱动模块的Makefile和脚本

    Makefile内容 ARCH arm CROSS COMPILE arm poky linux gnueabi 也可以同时编译多个模块 obj m export symbol o export symbol1 o export symbo
  • 【内核驱动】Linux概述

    00 目录 文章目录 00 目录 01 Unix简介 02 Linux简介 03 Linux发展史 04 单内核与微内核区别 05 Linux内核 06 Linux内核组成 07 Linux官方网站 08 附录 01 Unix简介 UNIX
  • Windows中杀死占用某个端口的进程

    最近写项目 总是出现端口被占用的问题 原来傻傻的把电脑重启一下 终于有一天受不了了 想要想办法解决 刚开始从网上找了好多教程 发现不行 开始自己尝试 终于 成功的将占用端口的进程杀掉 在此记录下过程 以8080端口为例 第一步 打开cmd命
  • C语言实现DFT计算

    文章目录 一 DFT计算公式 二 DFT程序实现 一 DFT计算公式 这里就不对DFT概念进行叙述 直接上计算公式 其中N为DFT点数 公式如此 但是在程序中并非如此运算 而是利用欧拉公式对DFT的计算公式进行了转化 转换后公式变为 利用转
  • STM32开发——简介、开发环境(Keil5、CubeMX)、HAL库

    目录 1 简介 初识STM32 2 开发环境 2 1使用Keil5 2 2使用STM32CubeMX 3 标准库与HAL库区别 4 推挽输出与开漏输出 1 简介 初识STM32 什么是单片机 单片机 Single Chip Microcom
  • Linux内核文件系统知识大总结

    1 文件系统特点 文件系统要有严格的组织形式 使得文件能够以块为单位进行存储 文件系统中也要有索引区 用来方便查找一个文件分成的多个块都存放在了什么位置 如果文件系统中有的文件是热点文件 近期经常被读取和写入 文件系统应该有缓存层 文件应该
  • 【STM32】输入捕获实验原理

    目录 输入捕获原理框架 输入捕获实验工作原理 1 滤波 2 设置捕获极性 3 设置输入捕获映射通道 4 预分频 5 中断开启 输入捕获有关库函数及操作 1 通道初始化函数 TIM ICInit 2 通道极性设置 TIM OCxPolarit
  • 定时器详解

    1 什么是定时器 timer 定时器实际上就是Soc当中的一个内部外设 1 定时器与计数器 定时器常与计数器扯到一起 计数器也是soc当中的一个内部外设 计数器顾名思义是用来计数的 就和我们的秒表一样 秒表实际上就是一个计数器 每隔一个单位
  • lv12 交叉编译工具链 7

    目录 1 交叉编译 1 1 镜像来源 1 2 编译原理 1 3 编译过程 编辑 1 4 交叉编译 1 5 交叉编译工具链获取 2 ELF文件格式 编辑3 BIN文件格式 4 交叉编译工具链常用工具 4 1 size命令举例 4 2 rm命令

随机推荐