第六章随笔

第六章:

     1、什么是驱动程序:

     a、编写Linux驱动最重要的一步就是编写回调函数,否则与设备文件交互的数据将无法得到处理;

     2、编写Linux驱动程序的步骤:

     a、建立linux驱动骨架(装载和卸载Linux驱动);

module_init和 module_exit;

     b、注册和注销设备文件:

在初始化工作的函数中完成建立设备文件misc_register;

     c、指定与驱动相关的信息;

    d、指定回调函数;

     e、编写业务逻辑;

    f、编写makefile文件(Linux内核源代码的编辑规则通过makefile文件定义的);

     g、编写Linux驱动程序:Linux驱动程序可以直接编译内核,也可以作为摸板单独编译;

     h、安装和卸载linux驱动;

     3、第一个linux驱动:

     a、编写linux驱动程序前的准备工作;

     b、编写linux驱动程序的骨架(初始化和退出驱动):

     linux系统将内存分为了用户空间和内核空间,这两个空间的程序不能直接访问,printf函数运行在用户空间,printk函数运行在内核空间。如果用户空间的程序要访问内核空间的驱动程序,用户空间的程序通过设备文件与驱动程序进行交互即可。

    安装linux驱动:#insmod word_count.ko

    查看word_count是否安装成功:#lsmod | grep word_count

    卸载linux驱动:#rmmod word_count

    查看由linux驱动输出的日志信息:#dmesg | grep word_count /tail -n 2;

    c、指定与驱动相关的信息:

    执行#modinfo word_count.ko来查看word_count.ko的信息。depends表当前驱动的依赖、vermagic表示当前linux驱动模板在哪个linux内核版本下编译。

    d、注册和注销设备文件;

    e、指定回调函数

    file_operations.read   file_operations.write成员变量可以指定读写设备文件要调用的回调函数指针。

     f、实现统计单词的算法;

     g、编译、安装、卸载linux驱动的程序。

     4、使用多种方法测试linux驱动程序:

     a、使用Ubuntu linux测试linux驱动;

     b、在android模拟器中通过原生的c程序测试linux驱动;

android模拟器在直接运行普通的linux程序的两个条件:android模拟器,开发板或手机需要root权限;可执行文件需要交叉编译器进行编译,使支持arm处理器。

     c、使用android NDK 测试linux驱动;

     d、使用Java代码直接测试设备文件来测linux驱动;

     e、使用eclipse开发和测试linux驱动程序。

原文地址:https://www.cnblogs.com/qiekaifanqie/p/5559243.html