几道Linux驱动相关面试题,你会几题?

34468bdc57d3def403a357780e333741.jpeg

1

一、Linux基础

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

1. ifconfig 命令

ifconfig 用于查看和配置 Linux 系统的网络接口。
查看所有网络接口及其状态:ifconfig -a 。
使用 up 和 down 命令启动或停止某个接口:ifconfig eth0 up 和 ifconfig eth0 down 。

2. iptables 命令

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

3. netstat 命令

Linux netstat命令用于显示网络状态。

利用netstat指令可让你得知整个Linux系统的网络情况。

4. ping 命令

Linux 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信号如何发出?

cb7426f3b858d02124d5a2b8eff467ea.png每次通信都必须由主设备发起,当主设备决定开始通讯时,需要发送开始(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)

ae6fd3b5444c5cf3b47202d830fd8b39.png

四、驱动

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个子系统组成

eafcd85a74311a59390b8e0aaf6b3ec4.jpeg

bfcd9caf62b55df1868538ab00e2e310.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/463669.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决Too many open files问题

转载:https://blog.csdn.net/zhuwinmin/article/details/72730288 当用linux做高并发服务器时,会遇到"Too many open files"的错误。 Linux是有文件句柄限制的(open files),而且Linux默认不是很高&#xf…

树莓派的这十年

来源 | 新智元编辑 | 袁榭 好困刚刚过完10岁生日的树莓派,早已褪去了当年廉价电脑教具的外衣,一跃成为全球业界首屈一指的微型电脑品牌。为啥叫「Raspberry Pi」?从某种意义上讲,「树莓」这个命名方式其实很单纯,因为大…

layui 在springboot2.x 时,页面展示不了layui的问题

[[]]是thymeleaf的内联表达式,在script上加 th:inline"none" 即可 报错信息 转载于:https://www.cnblogs.com/SeaWxx/p/10287505.html

ArcGIS Flex API 中的 Flex 技术(一)--事件

作者:Flyingis 本文严禁用于商业目的,如需转载请注明作者及原文链接,其他疑问请联系:dev.vip#gmail.com 在ArcGIS Flex API中探索Flex使用是一种不错的学习方法,可以相互辅助理解ArcGIS Flex API和Flex&#…

C++11 bind注意事项(传引用参数的时候)

默认情况下,bind的那些不是占位符的参数被拷贝到bind返回的可调用对象中。 当需要把对象传到bind中的参数中时,需要使用ref或者cref。 例如:

四元數與旋轉

为什么80%的码农都做不了架构师?>>> 在討論「四元數」之前,我們來想想對三維直角座標而言,在物體旋轉會有何影響,可以擴充三維直角座標系統的旋轉為三角度系統(Three-angle system)&#xff0c…

玩一下数组

来源:嵌入式大杂烩数组是最基本的数据结构,关于数组的面试题也屡见不鲜,本文罗列了一些常见的面试题,仅供参考。目前有以下18道题目。数组求和求数组的最大值和最小值求数组的最大值和次大值求数组中出现次数超过一半的元素求数组…

将GDB中的输出定向到文件

将所有栈信息保存到文件11中 在gdb中: set logging file 11 set logging on thread apply all bt set logging off 结束之后,在相关目录下查看11文件

不生孩子能怎么办?

你会选择不婚或者丁克的生活吗?你是否也想过未来养老的问题呢?如果想过,你对此又有什么规划呢?欢迎留言讨论!本文原创公众号:不会笑青年,授权转载请联系微信(laughyouth369),授权后&…

__attribute__((always_inline))

__attribute__((always_inline))的意思是强制内联,所有加了__attribute__((always_inline))的函数再被调用时不会被编译成函数调用而是直接扩展到调用函数体内,例子如下: define inline __attribute((always_inline))的意思就是用 inline 代…

应用程序池优化配置方案(IIS7、IIS7.5)

定义: 是将一个或多个应用程序链接到一个或多个工作进程集合的配置,该池中的应用程序与其他应用程序被工作进程边界分隔, 一、一般优化方案 1.基本设置 【1】队列长度:默认1000,将原来的队列长度65535 【2】启动32位应…

深圳的房价跌了

我很久没有关注深圳的房价了,上一篇关于深圳房价的文章好像还是几个月之前的,几个月之前,我一个同学买房,跟我咨询了下,然后就写了一篇文章。现在不要着急买房这篇文章从那个时候到现在已经一年了,前几天跟…

Springboot 使用Mybatis对postgreSQL实现CRUD

目录结构 1、创建一个springboot项目 选择Web、Mabatis、postgreSQL 2、在application中写入配置文件 1 #配置数据源 2 spring.datasource.platformpostgres 3 spring.datasource.urljdbc:postgresql://127.0.0.1:5432/postgres 4 spring.datasource.usernamepostgres 5 spring…

不得不说,这是我面过的最优秀的Linux运维!

Linux可以说是运维之“本”。无论中小企业还是大厂,现在的企业有95%甚至更多是使用Linux服务器。而对于Linux运维来说,Linux基础越扎实、会的工具越多,能解决的问题就越多,技术也能走的更远。Linux,甚至可以说是进入IT…

一个中科大「差生」的8年程序员工作总结

今年终于从大菊花厂离职了,离职前收入大概60w不到吧!在某乎属于比较差的,今天终于有空写一下自己的职场故事,也算是给自己近8年的工作做个总结复盘。近8年有些事情做对了,也有更多事情做错了,在这里记录一下…

Java IO File

#file file的一些方法,因为windows和Linux开发环境的问题,在file中最好统一用 / 输出流操作 转载于:https://www.cnblogs.com/cykfory/p/10294981.html

gtest使用例子

最近使用gtest进行单元测试,采用打桩的形式。关于gtest的详细说明就不多说了,网上的资料一大堆。主要讲解使用时的参数如何配置以及遇到的问题。下面的例子模拟是加、减、乘、除四则运算,前提是不知道加、减、乘、除四则运算是如何实现的。 …

游戏开发中的数学和物理算法(7):角度 vs 弧度

我们通常使用的笛卡尔坐标系统,角点通常在(0,0),即原点。初始边在x轴正半轴,终边与初始边成夹角。初始边逆时针旋转为正值,顺时针旋转为逆值。数学表示:角度:degreeradian*180/π 弧度:radiandegree*π/18…

一个小老板的春天

大家周末好继续之前说的采访专栏,前两天和一个做生意的朋友聊天,总结了一些内容分享给大家,觉得不错的点赞收藏起来,可能后面你自己当老板了会用到。我这个老板的名字和公司名字我就不说出来了,他现在做的是细分领域&a…

SharePoint GridView的使用2——DataSourceView的使用

首先创建一个abstract类,继承Microsoft.SharePoint.WebControls.DataTableDataSourceView。之后基于这个类可以创建多个显示不同数据的的DataSourceView,在上文的DataSource控件中有个ViewName属性,可以通过这个属性来区分不同的DataSourceVi…