良许Linux教程网 干货合集 几道简单的Linux驱动相关面试题,你看你会几题?

几道简单的Linux驱动相关面试题,你看你会几题?

一、Linux基础

1、任意3种网络操作的Linux命令,并说明他们的含义

1. ifconfig 命令

ifconfig 命令用于查看和配置 Linux 系统的网络接口。

要查看所有网络接口及其状态,可以使用 ifconfig -a 命令。
而要启动或停止某个特定接口,可以使用 up 和 down 命令,比如 ifconfig eth0 up 和 ifconfig eth0 down。

2. iptables 命令

iptables 是一个用于配置 Linux 内核防火墙的命令行工具,其功能非常强大。
对于开发人员来说,掌握如何开放端口是非常重要的。

3. netstat 命令

netstat 命令在Linux系统中用于显示网络状态。
通过使用 netstat 指令,你可以了解整个系统的网络情况。

4. ping 命令

ping 命令用于检测主机的网络连接。
执行 ping 指令会发送 ICMP 数据包并等待主机回应,通过这个过程可以确定主机的网络功能是否正常运作。

5. telnet 命令

Linux telnet命令用于远端登入。

执行telnet指令开启终端机阶段作业,并登入远端主机。

2、Linux支持的文件类型

  • 普通文件类型 –
  • 目录文件类型 d
  • 块设备文件类型 b
  • 字符设备类型 c
  • 套接字文件类型 s
  • FIFO管道文件类型 p
  • 链接文件类型 l

二、Linux系统编程

1、 嵌入式操作系统进程间有哪些同步通信服务?

Linux进程间通信方式主要有

  1. 信号(signal)
  2. 信号量
  3. 管道(pipe)、流管道(s_pipe)、有名管道(FIFO)。
  4. 消息队列
  5. 共享内存
  6. 套接字(本地的还有域套接字)

三、ARM

1. 请问ARM支持哪几种异常类型?

异常源分类

要进入异常模式,一定要有异常源,ARM规定有7种异常源:

异常源 描述
Reset 上电时执行
Undef 当流水线中的某个非法指令到达执行状态时执行
SWI 当一个软中断指令被执行完的时候执行
Prefetch 当一个指令被从内存中预取时,由于某种原因而失败,如果它能到达执行状态这个异常才会产生
Data 如果一个预取指令试图存取一个非法的内存单元,这时异常产生
IRQ 通常的中断
FIQ 快速中断

2、请简述什么是中断?中断发生后,CPU做了哪些操作

中断:是指CPU在执行程序的过程中,出现了某些突发事件时CPU必须暂停执行当前的程序,转去处理突发事件,处理完毕后CPU又返回源程序被中断的位置并继续执行。

中断发生后,ARM核的操作步骤可以总结为4大步3小步。

4大步3小步

  1. 保存执行状态:将CPSR复制到发生的异常模式下SPSR中;
  2. 模式切换:
  • CPSR模式位强制设置为与异常类型相对应的值,
  • 处理器进入到ARM执行模式,
  • 禁止所有IRQ中断,当进入FIQ快速中断模式时禁止FIQ中断;
  1. 保存返回地址:将下一条指令的地址(被打断程序)保存在LR(异常模式下LR_excep)中。
  2. 跳入异常向量表:强制设置PC的值为相应异常向量地址,跳转到异常处理程序中。

3、什么是GPIO?

general purpose input/output  

GPIO是相对于芯片本身而言的,如某个管脚是芯片的GPIO脚,则该脚可作为输入或输出高或低电平使用,当然某个脚具有复用的功能,即可做GPIO也可做其他用途。

也就是说你可以把这些引脚拿来用作任何一般用途的输入输出,例如用一根引脚连到led的一极来控制它的亮灭,也可以用一根(一些)引脚连到一个传感器上以获得该传感器的状态,这给cpu提供了一个方便的控制周边设备的途经。如果没有足够多的gpio管脚,在控制一些外围设备时就会力有不逮,这时可采取的方案是使用CPLD来帮助管理。

4、IIC引脚名称及功能?

  • SDA 数据线,用于传输数据
  • SCL 时钟线,用于同步数据

5、IIC的S、P信号如何发出?

image-20240429200726295
image-20240429200726295

每次通信都必须由主设备发起,当主设备决定开始通讯时,需要发送开始(S)信号,需要执行以下动作;

  1. 空闲时SCL默认是高电平;
  2. 将SDA线从高压电平切换到低压电平;
  3. 然后将SCL从高电平切换到低电平。 在主设备发送开始条件信号之后,所有从机即使处于睡眠模式也将变为活动状态,并等待接收地址位。 当双方决定结束通讯时,需要发送停止(P)信号,需要执行以下动作;
  4. 先将SDA、SCL设置为低电平;
  5. 然后将SCL从低电平切换到高电平;
  6. 将SDA从低电平切换到高电平。 在停止条件信号之后,I2C总线即处于空闲状态。

6、SPI引脚名称及功能?

串行时钟线(SCK)、 主机输入/从机输出数据线MISO、 主机输出/从机输入数据线MOSI 从机选择线SS

(有的SPI接口芯片带有中断信号线INT或INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)

image-20240429200714699
image-20240429200714699

四、驱动

1、查看驱动模块中打印信息应该使用什么命令?如何查看内核中已有的字符设备的信息?如何查看正在使用的有哪些中断号?

    1. 查看驱动模块中打印信息的命令:
 dmesg
    1. 查看加载模块信息可以用
lsmod

已经分配的字符设备块设备号信息可以查看下面文件

cat /proc/devices

内核会为每一个驱动模块建立一个文件夹,如下:

ls /sys/module/
    1. 显示当前使用的中断号
cat /proc/interrupts

2、如何手动创建字符设备?并简述主设备号和次设备号的用途。

创建字符设备命令如下:

mknod chartest c 4 64,

mknod : 创建设备节点
chartest :设备节点名字
c : 字符设备,
4 : 主设备号
64: 次设备号

1)主设备号:主设备号标识设备对应的驱动程序。虽然现代的linux内核允许多个驱动程序共享主设备号,但我们看待的大多数设备仍然按照“一个主设备对应一个驱动程序”的原则组织。

次设备号:次设备号由内核使用,用于正确确定设备文件所指的设备。依赖于驱动程序的编写方式,我们可以通过次设备号获得一个指向内核设备的直接指针,也可将此设备号当作设备本地数组的索引。

比如:

 硬件平台可能又4个串口,他们驱动非常类似,区别仅仅是个字对应的SFR基地址不同,
 那么我们可以让着几个串口共用同一个串口设备驱动
 通过次设备号来区别具体是哪一个串口

3、内核中使用共享资源时,为了使之满足互斥条件,通常有哪些方法?

原子操作,自旋锁,信号量,互斥锁

4、Linux内核包括那几个子系统?

Linux内核主要由进程调度(SCHED)、内存管理(MM)、虚拟文件系统(VFS)、网络接口(NET)和进程间通信(IPC)5个子系统组成

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部