嵌入式linuxandroid驱动工程师面试题总汇_第1页
嵌入式linuxandroid驱动工程师面试题总汇_第2页
嵌入式linuxandroid驱动工程师面试题总汇_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、嵌入式 linux android 驱动工程师 面试题总汇1. 嵌入式系统中断服务子程序 (ISR) 收藏 中断是嵌入式系统中重要的组成 部分,这导致了很 多编译开发商提供一种扩展 让标准 C 支持中断。具代表事 实是,产生了一个新的关键字 _interrupt 。下面的代码就使用了 _interrupt 关键字去定义了一个中断服务子程序 (ISR) ,请评论一下这段代码的。_interrupt double compute_area (double radius) double area = PI* radius * radius; printf(" Area = %f"

2、, area); return area; 1). ISR不能返回一个值。 2). ISR 不能传递参数。 3). 在许多的处理器 / 编译器中,浮 点一般都是不可重入的。有些处理器 / 编译器需要让额处的寄存器入栈,有些处 理器/编译器就是不允许在ISR中做浮点运算。此外,ISR应该是短而有效率的, 在 ISR 中做浮点运算是不明智的。 4). 与第三点一脉相承, printf() 经常有重 入和性能上的问题。2. C 语言中对位的操作,比如对 a 的第三位清 0 ,第四位置 1.本来应该会的, 一犯晕写反了,以后注意!#define BIT3 (1<<3)#define BIT

3、4 (1<<4)a &= BIT3; a |= BIT4;3. 考到 volatile 含义并举例:理解出错,举了很具体的例子,连程序都搬上去 了,有些理解不深的没举出来 volatile 表示这个变量会被意想不到的改变, 每次用他的时候都会小心的重新读 取一遍,不适用寄存器保存的副本。volatile 表示直接存取原始地址例:并行设备的硬件寄存器(状态寄存器)在多线程运行的时候共享变量也要时时更新一个中断服务子程序中访问到的的非自动变量(不太清楚,正在查找资料ing )4. 要求设置一绝对地址为 0x67a9 的整型变量的值为 0xaa66当时我的写法: #define

4、AA * (volatile unsigned long *)0xaa66AA = 0x67a9;答案:int *ptr =( int * )0xaa66 ;*ptr = 0x67a9 ;我感觉自己写的应该不算错吧(自我感觉,还请达人指正),我写的适合裸机下用,当做寄存器用,而答案就是适合在操作系统下的写法。1. linux 内核里面,内存申请有哪几个函数,各自的区别?2. IRQ和FIQ有什么区别,在CPI里面是是怎么做的?3.int *a;char *b;a 和 b 本身是什么类型?、b 里面本身存放的只是一个地址,难道是这两个地址有不同么?3. 中断的上半部分和下半部分的问题:讲下分成上半部分和下半部分的原因,为何要分?讲下如何实现?4. 内核函数mma的实现原理,机制?.驱动里面为什么要有并发、互斥的控制?如何实现?讲个例子?7. spinlock 自旋锁是如何实现的?8. 任务调度的机制?【二、本人碰到】1. 嵌入式 linux 和 wince 操作系统的特点和特性?2. 嵌入式 linux 中 tty 设备驱动的体系结构?3. 嵌入式设备,为加快启动速度,可以做哪些方面的优化?4. USB 设备的枚举过程?5. PSRAM SDRAMDDR D

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论