嵌入式笔试面试题库
文章平均质量分 63
写这篇文章的目的,希望以提问的形式,对自己以前的知识进行一个总结,并期待能给即将/已经踏入嵌入式领域的程序员提供一些学习上的帮助~
Evan_ZGYF丶
我在起点
展开
-
BSP开发|嵌入式|Linux驱动|笔试面试
写这篇文章的目的,希望以提问的形式,对自己以前的知识进行一个总结,并期待能给即将/已经踏入嵌入式领域的程序员提供一些学习上的帮助~嵌入式,软件,C语言,Linux,驱动,内核,开发,BSP,工程师,底层,后端相关,常见,频繁,常问,经典,项目,招聘,平台,学习,框架,职位,职业,架构,岗位,offer,校招,社招,企业笔试面试,面试笔试,笔试,面试,面经,笔经题目,大全,总结,概括,汇总,整理,集锦,理解,答案,常问问题,经验,分享,最常,归类,大纲原创 2020-12-01 22:43:00 · 13231 阅读 · 7 评论
-
【C语言】字符串和格式化输入/输出
字符常量‘x’和字符串常量“x”不同。区别一‘x’代表基本类型(char),而“x”代表派生类型(char数组);区别二是“x”实际由两个字符组成‘x’和‘\0’(占两个字符)。原创 2024-08-24 14:06:52 · 378 阅读 · 0 评论 -
嵌入式开发中常见的文件系统
本文主要介绍嵌入式开发中常用的文件系统类型。对比其差异性及优劣势,以便在后续开发时,选择更合适的嵌入式文件系统。原创 2023-11-27 21:20:18 · 2485 阅读 · 0 评论 -
【操作系统】操作系统的大端模式和小端模式
所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中;所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。原创 2023-11-07 15:09:21 · 760 阅读 · 0 评论 -
【进程与线程】进程与线程 Q&A
进程与线程常见知识点:原创 2023-11-07 06:30:17 · 746 阅读 · 0 评论 -
【UART】UART Q&A
UART常见知识点整理原创 2023-11-07 05:59:20 · 651 阅读 · 0 评论 -
【I2C】熟悉I2C的传输时序。根据I2C的时序图,标出每段时序对应的含义
熟悉I2C的传输时序。根据I2C的时序图,标出每段时序对应的含义原创 2023-11-07 05:38:33 · 1099 阅读 · 0 评论 -
做过哪些外设驱动?
面试被问到做过哪些I2C外设?把相关信息整理下,做一个归纳。原创 2023-10-26 16:06:51 · 832 阅读 · 0 评论 -
【面试】说出你的三个优点和三个缺点
面试的时候常被问到自己的三个优点及三个缺点原创 2023-10-26 13:57:43 · 1969 阅读 · 0 评论 -
【spi】 Q&A
【SPI】如何选择SPI的相位和极性?关于SPI从设备,在空闲的时候,是高电平还是低电平,即决定了CPOL是0还是1;然后再找到关于设备是在上升沿还是下降沿去采样数据,这样就是,在定了CPOL的值的前提下,对应着可以推算出CPHA是0还是1了。如果从设备也是一个SPI控制器,4种模式都支持,此时只要自己设置为某种模式即可。...原创 2021-10-31 21:53:21 · 1132 阅读 · 0 评论 -
【中断】自己写一个中断处理程序,需要注意哪些问题?
Linux中断知识汇总:【深入理解Linux内核】【中断】内容汇总帖目录什么是中断处理程序?注册中断处理程序编写中断处理程序编写中断处理程序的注意事项为什么在中断里不可以睡眠?为什么在中断里不可以使用耗时很长的函数?什么是中断处理程序?中断处理程序:在响应一个特定中断的时候,内核会执行一个函数,该函数叫做中断处理程序。产生中断的每一个设备都有一个相应的中断处理程序。中断处理程序是被内核调用来响应中断的,他们运行于中断上下文中,该上下文中的代码不可阻塞。我们一.原创 2021-04-28 22:19:26 · 6884 阅读 · 3 评论 -
【中断】异常和中断的关系、异常向量表和中断向量表的关系
Linux中断知识汇总:【深入理解Linux内核】【中断】内容汇总帖目录什么是异常?什么是中断?异常和中断的关系什么是异常向量表?什么是中断向量表?异常向量表和中断向量表的关系什么是异常?异常:因为内部或者外部的一些事件,导致处理器停下正在处理的工作,转而去处理这些发生的事件。当正常的程序执行流程发生暂时的停止时,称之为异常,例如处理一个外部的中断请求。从这句话中可以知道异常包括中断(单片机中的中断)+和运行模式的切换“中断”+资源访问“中断”。..原创 2021-04-27 23:50:45 · 4774 阅读 · 1 评论 -
【中断】发生硬件中断后,ARM处理器做了那些事情?
发生硬件中断后,ARM处理器做了那些事情?CPU自动保存处理器状态,即将中断发生时的CPSR寄存器内容保存到SPSR_irq寄存器中 CPU自动设置当前程序状态寄存器CPSR的低5位,使处理器进入特权模式中的IRQ模式(Linux不使用FIQ,只使用IRQ) 硬件自动关闭IRQ中断 将返回地址(PC)自动保存到LR_irq寄存器中 CPU自动的将程序计数器PC设置成异常中断向量表中的地址,进入相应的异常处理程序中处理中断 处理完中断后,恢复中断发生前的处理器状态,即将SPSR_irq寄存器中原创 2021-04-24 22:00:23 · 2035 阅读 · 2 评论 -
【中断】你对中断究竟有多了解?试着把中断的触发流程整理了一遍...
如果要你讲一下中断,你会怎么去描述一个中断的触发流程呢?最基础的可能就是:保护现场 - 中断处理 - 恢复现场...那保护现场做了什么事情?中断处理需要注意什么事情?恢复现场又做了什么事情?相对应的,关于中断,还有很多这样的问题:触发中断的因素有哪些? 各中断源如何向CPU提出中断请求? CPU如何区分是哪个中断触发的请求? 当多个中断源同时提出中断请求时,中断系统如何确定优先响应哪个中断请求? CPU在什么条件、什么时候、以什么方式来响应中断?..原创 2021-04-24 16:38:09 · 10754 阅读 · 5 评论 -
【中断】中断上下文、进程上下文
Linux中断知识汇总:【深入理解Linux内核】【中断】内容汇总帖目录中断上下文和进程上下文什么是中断上下文?什么是进程上下文?为什么要进行不同之间状态的切换?什么情况下进行用户态到内核态的切换?中断上下文代码中注意事项中断上下文和进程上下文进程上下文和中断上下文是操作系统中很重要的两个概念,这两个概念在操作系统课程中不断被提及,是最经常接触、看上去很懂但又说不清楚到底怎么回事的两个概念。造成这种局面的原因,可能是原来接触到的操作系统课程的教学总停留在一种浅层次.原创 2021-03-29 22:16:37 · 4573 阅读 · 1 评论 -
【操作系统】什么是RTOS?RTOS与普通操作系统的区别?
获取更多相关的笔试面试题,可收藏系列博文,持续更新中:C语言|BSP开发|嵌入式软件|Linux驱动|笔试面试题汇总帖什么是实时操作系统(RTOS)?什么样的系统可以被称作实时操作系统(RTOS)?Real-Time Operating System 实时操作系统实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行的操.原创 2021-02-28 20:44:35 · 5647 阅读 · 0 评论 -
【操作系统】优先级反转、优先级继承、优先级天花板
目录什么是优先级反转?什么是优先级继承?什么是优先级天花板?什么是优先级反转?高优先级任务被低优先级任务阻塞,导致高优先级任务迟迟得不到调度。但其他中等优先级的任务却能抢到CPU资源。举个栗子:进程A,进程B,进程C。优先级依次递增。进程C优先级最低,但进程C最先运行(占有锁),此时进程B运行,因为优先级比C高,因此抢占运行,过了一会进程A运行,原本进程A想要抢占进程B,但拿不到锁(被C占有锁),必须等待锁释放。但C又因为被进程B抢占,需要等待进程B结束..原创 2021-01-16 12:27:15 · 5743 阅读 · 6 评论 -
【C语言】写一个“标准“宏,已知数组table,求出table的元素个数
直接上答案:#define NTBL (sizeof(table)/sizeof(table[0]))解析:先算出总数组大小,再算出单个成员大小,除下来就是成员数量。(因为数组成员大小相同)收录于:C语言|BSP开发|嵌入式软件|Linux驱动|笔试面试题汇总帖...原创 2021-01-10 22:05:30 · 1974 阅读 · 1 评论 -
【C语言】写一个“标准”宏,实现交换两个参数值
直接上答案:#define SWAP(x,y) { \(x) = (x) + (y); \(y) = (x) - (y); \(x) = (x) - (y); \}解析:上面是一种不需要额外参数,实现x,y的值替换的方法。带入实例:x=1,y=2;x = x + y = 1 + 2 = 3; //这里x+y的和。y = x - y = 3 - 2 = 1; //(x在上一步已经变成3了)这里y就等于先前的x的值。x = x - y = 3 - 1 = 2;...原创 2021-01-10 22:04:43 · 2154 阅读 · 3 评论 -
【C语言】引用和指针的区别?
首先解释在C语言中,什么是引用:1、引用概念 引用是别名,必须在声明的时候初始化。即:是指一个已定义变量的别名。(一个内存空间,有两个名字都可以操作) 引用:在函数调用时,是变量的别名,不可以单独存在,使用时必须要初始化; 指针:本身有自己的地址,可以单独存在。引用和指针的区别:指针和引用都是地址的概念,指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。 程序为指针变量分配内存区域,而不为引用分配内存区域。 指针使用时要在前加 * ,引..转载 2021-01-10 17:35:23 · 3732 阅读 · 3 评论 -
【C语言编程】实现一个函数,判断字符串str2是否在字符串str1里
直接上源码,其实是仿照<string.h>库中的源码:char* strstr(register char* str1, register char* str2){ register char* bp; register char* sp; if (!*str2) return str1; while(*str1) { bp = str1; sp = str2; do { if (!*sp) return str1; }while(*b原创 2021-01-10 17:05:04 · 4030 阅读 · 8 评论 -
【C语言】使用一个宏实现输入两个参数并返回较小的一个
答案很短:#define MIN(x,y) ((x)>(y)?(x):(y))解析:其实也可以问类似的,比较两个参数并返回较大的一个。这边第一个可以考察三目运算符的含义:“? :”第二个考察细心程度把,需要考虑到负数等场景,因此需要用括号保护下。收录于:C语言|BSP开发|嵌入式软件|Linux驱动|笔试面试题汇总帖...原创 2021-01-10 15:47:46 · 4038 阅读 · 3 评论 -
【C语言】使用一个宏求结构体内一个变量相较于结构体的偏移?
答案很短:#define OFFSET(struct,m) (unsigned int)&(((struct*)0)->m)简单的解析:既然是偏移,那就需要一个首地址+偏移地址。那么首地址+偏移地址的计算就可以看成:&(((struct*)x)->m) -&(struct*)x;这里做了一个取巧,将首地址变成了(struct*)0;就可以简化成:&(((struct*)0)->m) -&(struct*)0 ---...原创 2021-01-10 15:23:17 · 1304 阅读 · 1 评论 -
linux在系统调用进入内核时,为什么要将参数从用户空间拷贝到内核空间?不能直接访问,或是使用memcpy吗?非要使用copy_from_user才行吗?
参考:Linux为什么一定要copy_from_user ?网上很多人提问为什么一定要copy_from_user,也有人解答。比如百度一下:但是这里面很多的解答没有回答到点子上,不能真正回答这个问题。我决定写篇文章正式回答一下这个问题,消除读者的各种疑虑。这个问题,我认为需要从2个层面回答 第一个层次是为什么要拷贝,可不可以不拷贝? 第二个层次是为什么要用copy_from_user而不是直接memcpy 为什么要拷贝拷贝这个事情是必须的,这个事情甚至都跟Lin.转载 2021-01-10 14:27:26 · 2622 阅读 · 0 评论 -
【同步与并发】自旋锁、信号量
首先讲应用场景:当某一个执行单元在使用一块共享资源时,是不能被打断的,否则会造成共享资源内的数据被另一个执行单元改变,造成无法预知的错误。为了预防以上可能产生的情景,就需要对这一块共享资源做保护措施。 保护共享资源的方式有很多,例如:中断屏蔽、自旋锁、信号量... 保护共享资源的互斥机制--中断屏蔽:通过local_irq_disable(禁止中断操作)/local_irq_s...原创 2018-05-24 13:21:24 · 869 阅读 · 1 评论 -
【C语言】i++和++i的区别是什么?哪个效率高?为什么?
写这篇文章主要的目的就是想把看到的一些好的C语言习题摘录下来。执行效率理论上,i++的执行效率比++i的执行效率要高。++i不用生成临时变量,而i++要生成临时变量。这个会因编译器有所区别,有的编译器会对这个流程进行优化。例如直接汇编相应的代码,结果如下:可以看到它们的执行效率是差不多的。执行逻辑i++表示先赋值后加1;i++实现的是,运算结束之后进行自加运算,换句话说这一句跑到分号之后才会有自加效果。++i表示先加1再赋值;++i正好相反,是在这一句的一开始就进行.原创 2021-01-03 22:55:59 · 5850 阅读 · 6 评论 -
【C语言】c语言练习题【2】(适合初学者)
《c语言练习题——基础2》1.从一个字符数组中读出相应的整数、实数2.将整数转换为相应的一个字符数组。分析:从个位提取数字,组合字符符号位的处理 12345=>"12345"3.字符串数组的冒泡排序,从小到大4.查找介于n1与n2(0(1)该数的十进制表示中有且仅有两个相同的数字位;(2)该数是素数5.编写函数void change(char原创 2016-08-31 19:56:10 · 1942 阅读 · 2 评论 -
【C语言】c语言练习题【3】(适合初学者)
《c语言练习题——基础3》1.对N行N列二维数组的每一行排序,偶数行(0当作偶数)由小到大排序,奇数行由大到小排序2.找出符合以下条件的Troitsky数,将该数的首位数字移动到末位数字之后得到的数是原数的整数倍例如:将142857的首位数字1移动到末位之后得到的数是428571,而428571=3*142857,因此142857是Troitsky数编原创 2016-08-31 19:56:54 · 1512 阅读 · 1 评论 -
【C语言】c语言练习题【4】(适合初学者)
《c语言练习题——基础4》1.编写函数void count(char a[],char w[][10],int n,int b[])。功能是:统计w指向的数组中的n个单词在a指向的字符串中各自出现的次数(将非字母字符看作单词分割符),拧将统计结果依次保存在b指向的数组中。2.编写函数int stat(int a[],int n,int c[][2])。a指向的数组中保存了由n个1位整原创 2016-08-31 19:57:41 · 1286 阅读 · 1 评论 -
【C语言】c语言练习题【整数算法训练】(适合初学者)
《c语言练习题——整数算法训练》1.题目:通过编程实现,统计1~n有多少个9 提示:n通过参数传入2.题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位.提示:用数组完成3.题目:输入5个数(含负数、小数)将它们按由小到大的顺序排列起来提示:需要排数的数字通过参数传递进来,例如:输入:./a原创 2016-08-31 19:58:24 · 1295 阅读 · 1 评论 -
【C语言】c语言练习题【递归和栈编程训练】(适合初学者)
《c语言练习题——递归和栈编程训练》1.题目: 利用递归方法实现一个函数,该函数能够实现n的阶乘,即 n! = n*(n-1)*…*3*2*1;2.题目:利用字符数组实现一个先入后出的栈结构,并提供栈操作的push和pop的接口3.题目:输入一个表达式字符串,如1+3*4-6,输出这个表达式的值.提示:需要建立两个栈结构,一个为整形存放操作数,另一个为字符型,存放运算符,运算原创 2016-08-31 19:59:09 · 2861 阅读 · 1 评论 -
【C语言】c语言练习题【字符串训练】(适合初学者)
《c语言练习题——字符串训练》1.题目: 请编写一个C函数,该函数将一个字符串逆序2.题目: 请编写一个C函数,该函数可以实现将一个整数转为任意进制的字符串输出3.题目: 输入一个字符串,计算字符串中子串出现的次数4.题目: 编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,及将句子中的单词位置倒置,而不改变单词内部结原创 2016-08-31 20:00:55 · 4462 阅读 · 2 评论 -
【C语言】c语言练习题【指针和链表训练】(适合初学者)
《c语言练习题——指针和链表训练》1.题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位.提示:用环形链表实现2.题目:创建两个学生链表,含有姓名、年龄的信息,一个链表存放男生,一个链表存放女生3.题目:将上面两个链表合并,按学生的年龄进行排序,合成新的链表4.题目:将上题中建立的链表进行反转,实现原创 2016-08-31 20:01:37 · 4548 阅读 · 2 评论 -
【C语言】C语言练习题【1】(适合初学者)
1.求a和b的最大公约数2.求100~200间的所有素数,每行打印5个素数3.将整数转换为10进制、2进制、16进制的数字串4.整数数组的冒泡排序(从小到大)5.计算字符串中的单词数。原创 2016-08-31 19:04:19 · 6970 阅读 · 4 评论 -
【TCP/IP协议】TCP/IP笔试面试题整理
参考: TCP协议灵魂12问目录能不能说一说 TCP 和 UDP 的区别?请简述TCP_SYN泛洪攻击的原理,并阐述如何应对SYN泛洪?能不能说一说 TCP 和 UDP 的区别?首先概括一下基本的区别:TCP是一个面向连接的、可靠的、基于字节流的传输层协议。而UDP是一个面向无连接的传输层协议。(就这么简单,其它TCP的特性也就没有了)。具体来分析,和UDP相比,TCP有三大核心特性:面向连接。所谓的连接,指的是客户端和服务器的连接,在双方互相通信...转载 2021-01-02 14:45:07 · 2081 阅读 · 1 评论 -
【同步与并发】【死锁】什么是死锁?产生死锁的原因及必要条件?如何避免死锁?
死锁问题分析 死锁就是多个进程(线程)因为等待别的进程已占有的自己所需要的资源而陷入阻塞的一种状态, 死锁状态一旦形成,进程本身是解决不了的,需要外在的推动,才能解决,最重要的是死锁不仅仅影响进程业务,而且还会占用系统资源,影响其他进程。 所以内核中设计了内核死锁检测机制,一旦发现死锁进程,就重启OS,快刀斩乱麻解决问题。 之所以使用重启招数,还是在于分布式系统中可以容忍单点崩溃,不能容忍单点进程计算异常,否则进行死锁检测重启OS就得不偿失了。什么是死锁 互斥...原创 2020-12-27 21:13:38 · 736 阅读 · 1 评论 -
【开发日常】【死锁】写一个简单的死锁demo
写一个简单的死锁demo#include <linux/module.h>#include <linux/kernel.h>static spinlock_t hack_spinA;static spinlock_t hack_spinB;void hack_spinAB(void){ printk("hack_lockdep:A->B\n"); spin_lock(&hack_spinA); spin_lock(&hack_sp原创 2020-12-27 21:07:22 · 908 阅读 · 1 评论 -
【PCIe】如何获取PCIe的BAR空间大小?
参考文章:本文的重点就是“如何获取BAR空间长度”,在此之前,先铺垫一些基础。基本原理:基地址寄存器(BAR)在配置空间(Configuration Space)中的位置如下图所示:其中Type0 Header最多有6个BAR,而Type1 Header最多有两个BAR。这就意味着,对于Endpoint来说,最多可以拥有6个不同的地址空间。但是实际应用中基本上不会用到...原创 2020-03-15 17:57:28 · 16959 阅读 · 5 评论 -
【总线】什么是并行传输?什么是串行传输?什么是异步传输?什么是同步传输?什么是等时传输?
什么是并行传输?什么是串行传输?什么是异步传输?什么是同步传输?什么是等时传输?并行传输:在并行传输中,使用多根并行的数据线一次同时传输多个比特。多根数据线,数据可以通过多条数据线同时传输,但需要注意数据同步。串行传输:在串行传输中,使用一根数据线传输数据,一次传输1个比特,多个比特需要一个接一个依次传输。一根数据线,将数据一位一位的传输。双方按照一定规则对数据进行解析。串行传输可分为异步传输、同步传输和等时传输。异步传输:没有时钟线,根据数据线上的电平变化,判断出起始信号与终止原创 2020-12-27 17:59:47 · 4932 阅读 · 1 评论 -
【I2C】I2C Q&A
I2C常见知识点整理...原创 2020-12-27 17:44:33 · 4041 阅读 · 3 评论
分享