嵌入式培训
美国上市嵌入式培训机构

400-111-8989

热门课程

嵌入式驱动开发题3道

  • 时间:2017-07-19
  • 发布:嵌入式培训
  • 来源:企业面试题

嵌入式驱动开发题3道:

1、linux驱动有哪些分类?

2、自旋锁和信号量在互斥使用时需要注意哪些?在中断服务程序里面的互斥是使用自旋锁还是信号量?还是两者都能用?为什么?

3、驱动中操作物理绝对地址为什么要先ioremap?

题1、答案:

Linux设备驱动的分类

(1)字符设备。

(2)块设备。

(3)网络设备。

字符设备指那些必须以串行顺序依次进行访问的设备,如触摸屏、磁带驱动器、鼠标等。块设备可以用任意顺序进行访问,以块为单位进行操作,如硬盘、软驱等。字符设备不经过系统的快速缓冲,而块设备经过系统的快速缓冲。但是,字符设备和块设备并没有明显的界限,如对于Flash设备,符合块设备的特点,但是我们仍然可以把它作为一个字符设备来访问。网络设备在Linux里做专门的处理。Linux的网络系统主要是基于BSDunix的socket机制。在系统和驱动程序之间定义有专门的数据结构(sk_buff)进行数据的传递。系统里支持对发送数据和接收数据的缓存,提供流量控制机制,提供对多协议的支持。

题二答案:

使用自旋锁的进程不能睡眠,使用信号量的进程可以睡眠。中断服务例程中的互斥使用的是自旋锁,原因是在中断处理例程中,硬中断是关闭的,这样会丢失可能到来的中断。

题三答案:

因为内核没有办法直接访问物理内存地址,必须先通过ioremap获得对应的虚拟地址。

上一篇:嵌入式开发工程师的面试技巧
下一篇:嵌入式工程师面试题
选择城市和中心
贵州省

广西省

海南省