关于/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的个人理解 的相关文章

  • Linux驱动之input输入子系统

    目录 前言 介绍 input dev结构体 输入子系统的使用流程 实例测试 前言 输入子系统用于实现Linux系统输入设备 鼠标 键盘 触摸屏 游戏杆 驱动的一种框架 Linux内核将其中的固定部分放入内核 驱动开发时只需要实现其中的不固定
  • ST-Llink与STM32最小系统开发板的线路连接

    ST Llink与STM32最小系统开发板的线路连接 1 ST Llink与STM32最小系统开发板的线路连接 ST Llink SWO STM32 SWDIO ST Llink SWCLK STM32 SWCLK ST Llink GND
  • GD32替换STM32后 写片上闪存(flash)失败的解决方法

    目录 型号 问题 解决办法 下载gd的fmc操作库 修改fmc文件 使用 擦除一页 写一页 型号 使用的GD32C103CB等引脚替换STM32F103CB 问题 使用hal库的flash操作接口 片上flash可以正常擦除 但是无法写入
  • 嵌入式系统开发项目管理

    项目生命周期五大阶段 1 项目启动阶段 1 项目可行性分析 一个成功的产品 应该从以下3个方面来观察评估 设计产品 商业行为 产品设计前 要做好市场调查和评估 要考虑产品的时效性 市场需求和技术可行性 产品设计结束后要写下详细的产品规格 技
  • 软件架构及几种典型框架

    什么是软件架构 什么是软件框架 很多时候 我们常常会混用架构和框架这两个词 实际上 广义上的架构和框架在概念上有很大的不同 架构给人的感觉 包容上更大 所以实际上架构是包含了框架的概念的 广义的架构应为一个系统的架构 不仅仅涉及软件中的技巧
  • 51单片机控制SG90舵机、MG90S舵机

    舵机的控制信号为周期是20ms 的脉宽调制 PWM 信号 其中脉冲宽度从0 5ms 2 5ms 相对应舵盘的位置为0 180度 呈线性变化 也就是说 给它提供一定的脉宽 它的输出轴就会保持在一个相对应的角度上 无论外界转矩怎样改变 直到给它
  • Keil5识别不到ST-Link的解决办法

    刚开始还以为是pack的问题 下载好多pack也没解决 后来发现其实是驱动的问题 从官网上下载驱动 之后进行基本的配置 如下所示 点击魔术棒标志 然后 然后 点击settings 点击add 添加自己的芯片类型 选择erase full c
  • 鸿蒙2.0都来了,一起把环境搭建起来!

    自4月底开始 鸿蒙2 0系统便迎来公测 6月2日将举行鸿蒙操作系统以及华为全场景新品发布会 届时会正式推出鸿蒙OS稳定版 针对华为发布的鸿蒙系统 网上评论褒贬不一 有吹捧的 有无脑黑的 在这里一口君就不做评价了 但是有2点 对任何一个新兴事
  • 十九、Linux驱动之虚拟网卡驱动

    1 基本概念 网络设备是完成用户数据包在网络媒介上发送和接收的设备 它将上层协议传递下来的数据包以特定的媒介访问控制方式进行发送 并将接收到的数据包传递给上层协议 与字符设备和块设备不同 网络设备并不对应于 dev目录下的文件 应用程序最终
  • 嵌入式软件开发

  • fedora图形界面与命令行模式切换方法

    fedora 进入命令行 终端 startx 在图形界面的控制台上输入 init 3 即可停止 xwindow 如果无法返回到终端 可以按住 alt ctrl f2 f6启动到新的控制台 然后结束掉tty1上的xwindow 结束xwind
  • OpenCV+VS2019打开和关闭电脑摄像头

    关于OpenCV和VS2019的配置 请参考博客以前的连接 OpenCV中主要使用videocapture来打开和关闭摄像头 https docs opencv org master d8 dfe classcv 1 1VideoCaptu
  • STM32F103基于spi实现OLED显示

    文章目录 一 原理 二 实现 1 显示中文 2 滚动显示 3 显示字符串 4 读取温湿度 5 显示温湿度 三 结果 1 开机显示欢迎信息 2 循环读取温湿度以及滚动显示我的id 四 总结 五 参考 六 源码 1 github 2 gitee
  • 深入浅出PID控制算法(三)————增量式与位置式PID算法的C语言实现与电机控制经验总结

    前文对PID算法离散化和增量式PID算法原理进行来探索 之后又使用Matlab进行了仿真实验 对PID三个参数又有了更深入的认识 接下来我们来使用C语言进行PID算法实现 并且结合控制电机的项目来深入学习 1 PID 算法C 语言原代码 先
  • 嵌入式Linux开发环境搭建-2-制作编译工具

    嵌入式Linux开发环境搭建 2 制作编译工具 一 安装基本开发环境 1 1 build essential安装 1 2 bison和flex 4 3 安装C函数库的man手册 二 安装交叉编译工具链 2 1 相关软件下载 2 2 修改一个
  • linux支持usb打印机

    配置CONFIG USB PRINTER y inux内核默认运行打印机 核 驱动 直接在配置上CONFIG USB PRINTER y添加上去就好了 make menuconfig 选上USB打印机选项 Device Drivers gt
  • 一文搞懂Linux内核页框回收(Page Frame Reclamation)

    页替换策略 Page Replacement Policy 每当讨论页替换策略 提及最多的就是基于LRU Least Recently Used 的算法 但严格来说这是不对的因为这些lists并不是严格按照LRU的顺序来维护的 在Linux
  • 【内核驱动】Linux概述

    00 目录 文章目录 00 目录 01 Unix简介 02 Linux简介 03 Linux发展史 04 单内核与微内核区别 05 Linux内核 06 Linux内核组成 07 Linux官方网站 08 附录 01 Unix简介 UNIX
  • 关于/dev/console的个人理解

    嵌入式开发里 首先需要配置一个串口 用于打印printk信息到控制台 以2440为例 这里的 dev console 设备号 5 1 就是控制台 用于printk信息输出到的设备 但是呢 dev console是个虚拟设备 他需要映射到真正
  • 开发板配置NFS服务

    文章目录 NFS介绍 NFS版本 NFS服务器和客户端 安装NFS 配置NFS服务器 启动NFS服务 挂载NFS共享 NFS安全性 NFS日志 开发板配置NFS环境 环境 操作前先关闭防火墙 配置过程 server端的配置 开发板的操作 常

随机推荐