嵌入式驱动开发工程师面试经典笔试题

时间:2013-07-12 11:32来源:网络资源 作者:larran 点击:
   以下是嵌入式驱动开发工程师面试的几道经典笔试题:

   1.什么是GPIO?
    general purpose input/output
    GPIO是相对于芯片本身而言的,如某个管脚是芯片的GPIO脚,则该脚可作为输入或输出高或低电平使用,当然某个脚具有复用的功能,即可做GPIO也可做其他用途。
    也就是说你可以把这些引脚拿来用作任何一般用途的输入输出,例如用一根引脚连到led的一极来控制它的亮灭,也可以用一根(一些)引脚连到一个传感器上以获得该传感器的状态,这给cpu提供了一个方便的控制周边设备的途经。如果没有足够多的gpio管脚,在控制一些外围设备时就会力有不逮,这时可采取的方案是使用CPLD来帮助管理。

    2.触摸屏的硬件原理?
    http://www.51touch.com/Article/Maintain/Technology/175945932.htm
    http://www.cublog.cn/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;但是又得考虑整数溢出的问题,所以很复杂。不知道哪位大侠有更好的办法,指点指点。
    #include <stdio.h>
    #define ZHENG(i) ((i >> 31) == 0)
    #define FU(i) ((i >> 31) != 0)
    #define COMPARE(a,b) ((ZHENG(a) && FU(b)) || (((ZHENG(a) && ZHENG(b)) || (FU(a) && FU(b))) && ((((a) - (b)) >> 31) == 0)))
    void main()
    {
    int a = 0x80000001;
    int b = 0x6FFFFFFF;
    if(COMPARE(a,b))
    {
    printf("a >= b\n");
    }
    else
    {
    printf("a < b\n");
    }
    }
分享到:
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)

凌阳教育【凌阳科技旗下教育品牌】——专业的嵌入式、linux高端运维、人工智能Python培训机构,“按班公布学员就业去向”的诚信机构

关注我们:

咨询电话:134-6659-6362或010-62981113(转2617) 服务监督电话:010-62981113-2800

京ICP备09010168号  京公网安备11010802010586号

北京总部:北京市海淀区上地信息产业基地中黎科技园1号楼3层A段

Copyright © 2019 SunplusEdu Inc. All Rights Reserved