Android/Linux设备驱动调试指南:触摸屏


触摸屏作为电子产品的主要输入设备,应用非常广泛,而且工艺和技术都十分成熟,并且其调试也已经形成明显的产业分工的,驱动调试和firmware调试都有各自的专业人员负责。因此这里主要针对驱动调试部分进行说明,firmware调试因为涉及到各自厂商的特点和工具不一样,无法统一说明。
Continue reading "Android/Linux设备驱动调试指南:触摸屏"

Android 内核驱动路径快速查找指南


Android驱动路径大致与Linux类似,其主要的设备驱动路径如下记录。

一、显示驱动

  • 内容:包含LCD驱动和HDMI驱动
  • 位置:
    linux/include/linux/fb.h
    linux/drivers/video/fbmem.c
    linux/drivers/video/xxxfb.c


二、视频驱动

  • 内容:包含摄像头
  • 位置:
    linux/include/linux/videodev.h
    linux/include/linux/videodev2.h
    linux/drivers/media/v4l2-dev.c
    linux/drivers/media/v4l2-dev2.c


三、音频驱动

  • 内容:声音设备
  • 位置:
    linux/include/linux/soundcard.h
    linux/include/linux/sound.h
    linux/include/linux/asound.h
    linux/sound/sound_core.c
    linux/sound/sound.c


四、MTD设备驱动

  • 内容:内存芯片,小型存储卡,记忆棒等
  • 位置:
    linux/include/linux/mtd/mtd.h
    linux/drivers/mtd/mtdcore.c
    linux/drivers/mtd/mtdchar.c
    linux/drivers/mtd/mtdblock.c


五、input设备驱动

  • 内容:按键,触摸屏,鼠标,触摸板,重力感应器等。
  • 位置:
    linux/include/linux/input.h
    linux/drivers/input/input.c
    linux/drivers/input/event.c ; *.c; /*/*.c;# 根据设备不同有不同的文件或者文件夹
    linux/drivers/input/misc/*


Linux 内核的编译详细说明


到www.kernel.org主页下载到需要的内核后,按照Android 编译环境的配置的方法配置好编译环境就可以进行内核的编译,这里针对内核部分进行详细说明。

主要步骤

解压内核:按照记录:常用的shell指令(持续更新)第七条所述解压的方法对已经下载好的内核进行解压,一般解压指令如下:

tar -zxvf  linux-xxx.xx.tar.gz -C ./


清除前期残留:一般初次编译不需要清除,但多次编译或者修改较大时需要清除后编译,输入:make mrproer,另外根据情况不同,会有三种不同的清除方式,第二条会详细讲解。


修改配置编译:执行make xconfig(图形化界面) 或者 make menuconfig (菜单界面),修改对应的配置并保存。


设置文件关联:make dep 建立文件依赖关系(Linux-2.6内核以后,编译内核不再需要先执行这个命令)。


编译:输入 make zImage -j12 进行编译,编译完成后在arch/<CPU>/boot目录下就能找到编译完成的image文件。


ARM平台编译步骤:

make clean
make meunconfig ARCH=arm
make uImage ARCH=arm CROSS_COMPILE=arm-linux-

make clean / mrproper /distclean的区别:

make clean -- 删除多余的产生文件,保存.config

make mrporper -- 删除所有的产生文件和.config

make distclean -- 删除所有产生文件、.config和编辑备份文件补丁等。


 

Linux内核启动过程


在Bootloader将 Linux 内核映像拷贝到 RAM 以后,可以通过下例代码启动 Linux 内核:

  1. call_linux(0, machine_type, kernel_params_base)  

其中,machine_tpye 是Boot Loader检测出来的处理器类型, kernel_params_base 是启动参数在 RAM 的地址。通过这种方式将 Linux 启动需要的参数从 Boot Loader传递到内核。
Continue reading "Linux内核启动过程"