• 第六章随笔


    第六章:

         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驱动程序。

  • 相关阅读:
    SpringBoot Schedule 配置
    ElasticSearch与Spring Boot集成问题
    Mybaits使用
    Java生成随机验证码
    Netty-FastThreadLocal快在哪里呢?
    直方图反向投影学习-----个人理解(你究竟是不是凶手)
    zookeeper启动报 Unexpected exception, exiting abnormally 错误
    upload三种上传方式(上)---Servlet---post---commons-fileupload.1.2.1.jar方式请求上传文件
    request.getRealPath为什么会被代替
    Java2E中的路径问题
  • 原文地址:https://www.cnblogs.com/qiekaifanqie/p/5559243.html
Copyright © 2020-2023  润新知