BSP开发|嵌入式|Linux驱动|笔试面试

本文通过提问形式总结了嵌入式领域的核心知识点,涵盖C语言、操作系统、Linux驱动等内容,并提供了丰富的笔试面试题,适合嵌入式程序员学习参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

期待收藏~~~~!!!


写这篇文章的目的,希望以提问的形式,对自己以前的知识进行一个总结,并期待能给即将/已经踏入嵌入式领域的程序员提供一些学习上的帮助~


本文于2020/12/1开始编辑,预计可能有一年的时间持续投入,每周都会添加一些问题,不断地更新和完善。


涉及但不限于:
C语言经典题(数据结构,指针,…)
操作系统(调度,同步与并发,中断,内存,文件系统,…)
Linux驱动(设备树,)
网络(…)
存储(…)
总线(I2C,SPI,UART,USB,PCIe,…)


C语言

【C语言】请描述一个可执行程序占用的内存分为哪几个区?每个分区各自的作用?
【C语言】谈谈内存分配中的(.data)段和(.bss)段的区别?为什么要分.data段和.bss段?
【C语言】谈谈内存分配中的堆和栈的区别?为什么要有堆区和栈区呢?
【C语言】解释局部变量、全局变量、静态变量的含义
【C语言】static关键字的作用?
【C语言】const关键字的作用?
【C语言】register关键字的作用?
【C语言】extern关键字的作用?
【C语言】volatile关键字的作用?
【C语言】inline关键字的作用?
【C语言】有关Sizeof的经典笔试面试题
【C语言】有关Point指针的经典笔试面试题
【C语言】字符串和格式化输入/输出
【C语言】什么是指针函数?什么是函数指针?他们之间有什么区别?
【C语言】strcpy是安全的吗,那strncpy又一定是安全的吗。手写memcpy实现的时候,需要考虑到什么问题
【C语言】谈谈了解哪几种排序方法?实现原理是什么?
【C语言】提高C代码运行效率的方法有哪些?列举几个提高代码执行效率的方法
【C语言】结构体复制与赋值、浅拷贝与深拷贝相关问题
【C语言】引用和指针的区别?
【C语言】i++和++i的区别是什么?哪个效率高?为什么?
【C语言】i++和i=i+1哪个效率更高?为什么?
【C语言】源程序->可执行程序,需要执行哪几个步骤?
【C语言】写一个“标准”宏,求结构体内一个变量相较于结构体的偏移?
【C语言】写一个“标准”宏,实现输入两个参数并返回较小的一个
【C语言】写一个“标准”宏,实现交换两个参数值
【C语言】写一个"标准"宏,已知数组table,求出数组的元素个数
【C语言】其他宏相关笔试题

【C语言编程】请自己实现一个strlen函数
【C语言编程】请自己实现一个strcmp函数
【C语言编程】请自己实现一个memcmp函数
【C语言编程】请自己实现一个strcpy函数
【C语言编程】请自己实现一个memcpy函数
【C语言编程】实现一个函数,判断字符串str2是否在字符串str1里
【C语言编程】用C语言写一个能让系统崩溃的程序


操作系统

【操作系统】什么是RTOS?实时操作系统与普通操作系统的区别?
【操作系统】什么是优先级反转?如何解决优先级反转?
【操作系统】什么是优先级继承?
【操作系统】什么是优先级天花板?
【操作系统】优先级继承和优先级天花板的区别?
【操作系统】如何判断CPU是大端模式还是小端模式?
【操作系统】大端模式如何转换为小端模式?

【中断】什么是异常?什么是中断?
【中断】什么是异常向量表?什么是中断向量表?
【中断】什么是中断上下文?什么是进程上下文?
【中断】请描述从进程上下文到中断上下文的切换过程
【中断】什么是中断底半部?
【中断】中断底半部的实现机制有哪些?如何选择合适的下半部机制?
【中断】请描述一下中断的响应过程?
【中断】发生硬件中断后,ARM处理器做了那些事情?
【中断】写一个中断处理程序,需要注意哪些问题?
【中断】为什么在中断里不可以睡眠?
【中断】为什么在中断里不可以使用耗时很长的函数?

【进程线程】什么是进程、线程,有什么区别?
【进程线程】多进程、多线程的优缺点?
【进程线程】有哪些进程间通信方法?
【进程线程】有哪些线程间通讯方法?

【内存】linux在系统调用进入内核时,为什么要将参数从用户空间拷贝到内核空间?不能直接访问,或是使用memcpy吗?非要使用copy_from_user才行吗?

【同步与并发】什么是信号量?信号量原理是什么?信号量有什么优缺点?
【同步与并发】什么是互斥锁?互斥锁原理是什么?互斥锁有什么优缺点?
【同步与并发】什么是自旋锁?自旋锁原理是什么?自旋锁有什么优缺点?
【同步与并发】互斥锁和信号量的区别是什么?
【同步与并发】互斥锁和自旋锁的区别是什么?
【同步与并发】为什么要使用自旋锁和信号量?说说自旋锁、信号量的应用场景?
【同步与并发】什么是死锁?产生死锁的原因及必要条件?如何避免死锁?
【同步与并发】写一个简单的死锁demo


总线

【总线】什么是并行传输?什么是串行传输?什么是异步传输?什么是同步传输?什么是等时传输?

I2C总线

【I2C】I2C常见知识点整理
【I2C】熟悉I2C的传输时序。根据I2C的时序图,标出每段时序对应的含义
【I2C】在中断函数中能否使用I2C传输?为什么?
【I2C】I2C的传输速率有哪几种?如何设置?如何获取?
【I2C】移植/开发过哪些I2C外设?

SPI总线

【SPI】SPI常见知识点整理
【SPI】如何选择SPI的相位和极性?
【SPI】做过哪些SPI外设?

UART总线

【UART】UART常见知识点整理

PCIe总线

【PCIe】如何获取PCIe设备的BAR空间长度?

USB总线


网络

【网络】IP报文头部最少占多少字节?介绍一下 IP报文头部的字段
【网络】UDP报文头部占最少占少字节?介绍一下UDP报文头部的字段
【网络】请问ICMP是什么协议?处于哪一层?
【网络】请问ARP是什么协议?处于哪一层?
【网络】IP地址冲突会导致什么问题?
【网络】MAC地址冲突会导致什么问题?
【网络】能不能说一说 TCP 和 UDP的区别?

TCP

【网络】TCP报文头部最少占多少字节?介绍一下 TCP报文头部的字段
【网络】请简述TCP三次握手的过程?
【网络】请简述TCP四次挥手的过程?
【网络】请简述TCP_SYN泛洪攻击的原理,并阐述如何应对SYN泛洪?
【网络】能不能说说TCP报文中时间戳的作用?
【网络】TCP的超时重传时间是如何计算的?
【网络】能不能说一说 TCP 的流量控制?
【网络】能不能说说 TCP 的拥塞控制?
【网络】能不能说说 Nagle 算法和延迟确认?
【网络】如何理解 TCP 的 keep-alive?


嵌入式

位运算
请你描述uboot的编译流程
请你描述Uboot的启动流程
[请你描述Linux的启动流程]
使用过哪些文件系统?描述不同文件系统各自的优劣势


开放题

你觉得驱动最难的是哪部分?为什么?
说说你的三个优点和三个缺点


获取更多相关的笔试面试题,可收藏系列博文,持续更新中:
C语言|BSP开发|嵌入式软件|Linux驱动|笔试面试题汇总帖

回答: 在Linux驱动开发中,有一些常见的笔试题。其中包括关于内核裁剪、中断和轮询的效率比较,以及中断和DMA的区别,还有关于设备驱动程序中注册和注销中断处理程序的函数等。 1. 关于内核裁剪,可以通过选择需要的硬件驱动来缩小启动Linux系统的大小。这样可以减少系统的兼容性和灵活性,同时也可以统计驱动模块的耗时时间,对耗时较长的模块驱动进行优化。\[1\] 2. 中断和轮询的效率比较,中断方式相对于轮询方式更高效。中断方式可以使CPU在等待外部事件时处于空闲状态,而轮询方式需要不断地查询设备状态,会占用CPU的大量时间。因此,通常情况下,我们会选择中断方式来实现驱动。\[1\] 3. 中断和DMA的区别在于它们的应用场景和工作方式。中断是一种异步的事件处理机制,当设备发生某个事件时,会触发中断请求,CPU会立即响应并处理中断。而DMA(直接内存访问)是一种数据传输方式,它可以在不占用CPU的情况下,直接将数据从设备传输到内存或者从内存传输到设备。在Linux设备驱动程序中,可以使用request_irq()函数来注册和free_irq()函数来注销中断处理程序。\[2\] 4. 在Linux设备驱动程序中,platform平台设备驱动是基于设备总线驱动模型的。Linux设备模型是对系统设备组织架构进行抽象的一个数据结构,旨在为设备驱动进行分层、分类、组织,更加有益于移植。它可以降低设备多样性带来的Linux驱动开发的复杂度,同时还可以处理设备热拔插和电源管理等功能。\[3\] 希望以上回答对您有所帮助。如果还有其他问题,请随时提问。 #### 引用[.reference_title] - *1* *2* *3* [Linux驱动笔试知识](https://blog.csdn.net/qq_24093081/article/details/127397889)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Evan_ZGYF丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值