24,IRQ****和FIQ有什么区别,在CPU里面是是怎么做的?
**答:**快速中断请求(Fast Interrupt Request,FIQ)
中断控制器去中断ARM核心,可以选择fiq和irq两种方式:
irq发生时,ARM处于irq模式。在irq模式期间,不可以再次被irq中断打断,也就是不能嵌套;但是可以被fiq打断;
fiq发生时,ARM处于fiq模式,在fiq模式期间,不可以再次被fiq中断打断,更不可能被irq模式打断。
在ARM11及以前版本中,一个中断控制器中只有一个中断能被设为fiq ;
综上所述,两个区别:
fiq的优先更高一些(跟irq相比);
fiq 的r8 r9 r10 r11 r12寄存器物理上是独立,进入fiq保护现场时,少保护这几个寄存器(我拷,这能节约多少时间?)
另外,linux直接没有用到ARM的fiq.
**25,**中断的上半部分和下半部分的问题:讲下分成上半部分和下半部分的原因,为何要分?讲下如何实现?
**答:**上半部分执行与硬件相关的处理要求快, 而有些驱动在中断处理程序中又需要完成大量工作,这构成矛盾,所以Linux有所谓的bottom half机制,中断处理程序中所有不要求立即完成的,在开中断的环境下,由底半程序随后完成.
Linux的底半处理实际上是建立在内核的软中断机制上的.
Linux 的底半 机制主要有Tasklet 和 work queue 以及 softirq ( 2.4内核则有BH , Task queue , softirq , tasklet 没有work queue),其实底半可以理解成一种工作的延迟。所以实际使用时跟timer机制基本上一个意思。
**26,**内核函数mmap的实现原理,机制?
**答:**mmap函数实现把一个文件映射到一个内存区域,从而我们可以像读写内存一样读写文件,他比单纯调用read/write也要快上许多。在某些时候我们可以把内存的内容拷贝到一个文件中实现内存备份,当然,也可以把文件的内容映射到内存来恢复某些服务。另外,mmap实现共享内存也是其主要应用之一,mmap系统调用使得进程之间通过映射同一个普通文件实现共享内存。
**27,**驱动里面为什么要有并发、互斥的控制?如何实现?讲个例子?
答:并发(concurrency)指的是多个执行单元同时、并行被执行,而并发的执行单元对 共 享资源(硬件资源和软件上的全局变量、静态变量等)的访问则很容易导致竞态(race conditions) 。 解决竞态问题的途径是保证对共享资源的互斥访问, 所谓互斥访问就是指一个执行单 元 在访问共享资源的时候,其他的执行单元都被禁止访问。 访问共享资源的代码区域被称为临界区, 临界区需要以某种互斥机 制加以保护, 中断屏蔽, 原子操作,自旋锁,和信号量都是 linux 设备驱动中可采用的互斥途径。
28,spinlock****自旋锁是如何实现的?
**答:**自旋锁在同一时刻只能被最多一个内核任务持有,所以一个时刻只有一个线程允许存在于临界区中。这点可以应用在多处理机器、或运行在单处理器上的抢占式内核中需要的锁定服务。
这里也介绍下信号量的概念,因为它的用法和自旋锁有相似的地方。linux中的信号量是一种睡眠锁。如果有一个任务试图获得一个已被持有的信号量时,信号量会将其推入等待队列,然后让其睡眠。这时处理器获得自由去执行其它代码。当持有信号量的进程将信号量释放后,在等待队列中的一个任务将被唤醒,从而便可以获得这个信号量。
**29,**任务调度的机制?
答:linux进程的调度时机大致分为两种情况:
一种是进程自愿调度;
另一种是发生强制性调度。
首先,自愿的调度随时都可以进行。在内核空间中,进程可以通过schedule()启动一次调度;在用户空间中,可以通过系统调用pause()达到同样的目的。如果要为自愿的暂停行为加上时间限制,在内核中使用schedule_time(),而在用户空间则使用nanosleep()系统调用。
参考:http://www.360doc.com/content/14/1216/10/14855936_433298555.shtml
**30,**嵌入式linux和wince操作系统的特点和特性?
答:支持多种硬件平台,wince差一点;
占有较少的硬件资源,wince对资源的要求更高;
高可定制性,wince做不到;
具有实时处理能力;
具备强大的网络功能,wince没有;
高安全性和高可靠性;
具有完善的嵌入式GUI和嵌入式浏览器;
实现嵌入式日志文件系统,具备断电保护能力;
能够提供完善的开发工具集;
能够快速启动。
参考:http://www.elecfans.com/emb/xitong/20111114244549.html
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!
友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!