linux驱动面试题

  • 格式:docx
  • 大小:54.72 KB
  • 文档页数:8

下载文档原格式

  / 14
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

linux驱动面试题2

1.什么是GPIO?

general purpose input/output

GPIO是相对于芯片本身而言的,如某个管脚是芯片的GPIO脚,则该脚可作为输入或输出高或低电平使用,当然某个脚具有复用的功能,即可做GPIO也可做其他用途。

也就是说你可以把这些引脚拿来用作任何一般用途的输入输出,例如用一根引脚连到led的一极来控制它的亮灭,也可以用一根(一些)引脚连到一个传感器上以获得该传感器的状态,这给cpu提供了一个方便的控制周边设备的途经。如果没有足够多的gpio管脚,在控制一些外围设备时就会力有不逮,这时可采取的方案是使用CPLD来帮助管理。

2.触摸屏的硬件原理?

/Article/Maintain/Technology/175945932.htm

/u2/78837/showart_1186312.html

触摸屏的主要三大种类是:电阻技术触摸屏、表面声波技术触摸屏、电容技术触摸屏。

电阻触摸屏的主要部分是一块与显示器表面非常配合的电阻薄膜屏,这是一种多层的复合薄膜,它以一层玻璃或硬塑料平板作为基层,表面图有一层透明氧化金属(ITO氧化铟,透明的导电电阻)导电层,上面在盖有一层外表面硬化处理、光滑防擦的塑料层、它的内表面也涂有一层ITO涂层、在他们之间有许多细小的(小于1/1000英寸)的透明隔离点把两层导电层隔开绝缘。当手指触摸屏幕时,两层导电层在触摸点位置就有了接触,控制器侦测到这一接触并计算出(X,Y )的位置,再根据模拟鼠标的方式运作。这就是电阻技术触摸屏的最基本的原理。

表面声波技术是利用声波在物体的表面进行传输,当有物体触摸到表面时,阻碍声波的传输,换能器侦测到这个变化,反映给计算机,进而进行鼠标的模拟。

电容技术触摸屏利用人体的电流感应进行工作。用户触摸屏幕时,由于人体电场,用户和触摸屏表面形成以一个耦合电容,对于高频电流来说,电容是直接导体,于是手指从接触点吸走一个很小的电流

3.在Linux C中,ls这个命令是怎么被执行的?

使用fork创建一个进程或exec函数族覆盖原进程。

4.在一个只有128M内存并且没有交换分区的机器上,说说下面两个程序的运行结果

1,

#define MEMSIZE 1024*1024

int count = 0;

void *p = NULL;

while(1) {

p = (void *)malloc(MEMSIZE);

if (!p) break;

printf("Current allocation %d MB\n", ++count);

}

2,

while(1) {

p = (void *)malloc(MEMSIZE);

if (!p) break;

memset(p, 1, MEMSIZE);

printf("Current allocation %d MB\n", ++count);

}

第一道程序分配内存但没有填充,编译器可能会把内存分配优化掉,程序死循环;第二道,程序分配内存并进行填充,系统会一直分配内存,直到内存不足,退出循环。

5.请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句

搞的比较复杂。主要思想就是a-b的值的最高位是否为0;但是又得考虑整数溢出的问题,所以很复杂。不知道哪位大侠有更好的办法,指点指点。

1.#include

2.

3.#define ZHENG(i)((i>> 31)== 0)

4.#define FU(i)((i>> 31)!= 0)

5.#define COMPARE(a,b)((ZHENG(a)&& FU(b))||(((ZHENG(a)&& ZHENG(b))||(FU(a)&&FU(b)))&&((((a)-(b))>> 31)== 0)))

6.

7.void main()

8.{

9. int a = 0x80000001;

10. int b = 0x6FFFFFFF;

11.

12. if(COMPARE(a,b))

13. {

14. printf("a >= b\n");

15. }

16. else

17. {

18. printf("a < b\n");

19. }

20.}

1、LINUX下的Socket套接字和Windows下的WinSock有什么共同点?请从C/C++语言开发的角度描述,至少说出两点共同点。(10分,说得好的每点加5分,没有上限。精通SOCK编程者破格录用。)

本题的目的就是考考应试者的SOCK功底,以及应用能力。答案可谓是五花八门,但是答对的少得可怜。其实答案很多,也很好回答。可见面试者功底确实一般,对SOCK编程只是一知半解。更有甚者,把TCP/IP的原理搬出来讲了一大堆,却无一条符合要求。

参考答案:

第1题,答中一个得5分,答出其它正确答案的,也得5分。

a)都基于TCP/IP协议,都提供了面向连接的TCP SOCK和无连接的UDP SOCK。

b)都是一个sock结构体。

c)都是使用sock文件句柄进行访问。

d)都具有缓冲机制。

2、请编写一个标准Shell脚本testd,实现如下功能:

A、在Linux操作系统启动的时候,自动加载/mnt/test/test程序。

B、当test异常退出之后,自动重新启动。

C、当test程序重启次数超过100次,自动复位操作系统。

假设你所拥有的资源:

A、目标机器是一台具有标准shell的嵌入式计算机,CPU为ARM7 56MB,内存16MB,软件环境基于Linux2.6.11和BusyBox1.2构建。

B、当前已有11个用户进程在运行,占用了大部分的CPU时间和内存,你可使用的内存只有2MB左右,CPU时间由系统分派。

(本题满分20分,程序15分,注释5分。程序不能运行的0分,能够运行但有BUG的10分,能够正确无误的运行的15分。清楚编写注释的5分。)