zoukankan      html  css  js  c++  java
  • 安卓移植和驱动开发第六章心得体会

    第六章 第一个LINUX驱动程序:统计单词个数

    统计单词数的word_count 驱动是本书实现的第一个完整的Linux 驱动。虽然word_count 驱动的功能并不复杂,但足以让以前从来接触过Linux 驱动的开发人员了解Linux 驱动的完整开发过程。本章不仅仅是介绍一个示例,还介绍了如何使用不同的方法测试Linux 驱动。这些方法主要以平台来区分。当然,要编写 Linux 驱动程序还需要更高级的功能。 如向打印机驱动写入数据时, 对于打印机 驱动来说,需要接收这些被写入的数据,并将它们通进 PC 的井口 USB 等端口发送给打印机。耍 , 实现这 一过程就需要 Linui驱动可以响应应用程序传递过来的数据。这就是 Linux驱动的事件,虽然存在 C 语言里没有事件的概念,但却有与事件类似的概念,这就是回调( callback)函数。因此, 编写 Linux 驱动最重要的一步就是编写函数, 否则与设备文件交互的数据将无法得到处理。

    关键步骤:

    编写Linux驱动程序的步骤

    第1 步:建立Linux 驱动骨架(装载和卸载Linux 驱动)

    骨架部分主要是Linux驱动的初始化和退出函数,代码如下:

    #include <linux/module.h>

    #include <linux/init .h>

    #include <linux/kernel.h>

    #include <linux/fs.h>

    #include <linux/miscdevice.h>

    #include <asm/uaccess .h>

    // 初始化Linux 驱动

    static int word_count_init(void)

    {

    //输出日志信息

    printk(“work_count_init_success ”);

    return 0;

    }

    //退出Linux 驱动

    static void word_count_exit(void)

    {

    // 输出日志信息

    printk (”word_count_init_exit_success ”);

    }

    // 注册初始化Linux 驱动的函数

    module_init(word_count_init);

    //注册退出Linux 驱动的函数

    module_exit (word_count_exit);

    第2 步:注册和注销设备文件

    # insmod word_count.ko       //安装Linux驱动

    # lsmmod | grep word_count      //查看word_count 是否成功安装

    # rmmod word_count      //卸载Linux 驱动

    # dmesg | grep word_count | tail –n 2        //查看由Linux 驱动输出的日志信息.

    也可以执行下面的命令获取自Linux 驱动输出的日志信息。

    # cat /var/log/syslog | grep word_count | tail -n 2

    第3 步:指定与驱动相关的信息

    模块作者:使用MODULE_AUTHOR 宏指定。

    模块描述:使用MODULE_DESCRIPTION 宏指定。

    模块别名:使用MODULE_ALIAS 宏指定。

    开源协议: 使用MODULE_LICENSE 宏指定。

    第4 步:指定回调函数

         不管Linux 驱动程序的功能多么复杂还是多么“酷”,都必须允许用户空间的应用程序与内核空间的驱动程序进行交互才有意义。而最常用的交互方式就是读写设备文件。通过file_operations.read 和file_operations. write 成员变量可以分别指定读写设备文件要调用的回调函数指针。

    第5 步:编写业务逻辑

    第6 步:编写Makefile 文件

    第7 步:编译Linux 驱动程序

    第8 步:安装和卸载Linux 驱动

  • 相关阅读:
    iOS高仿微信悬浮窗、忍者小猪游戏、音乐播放器、支付宝、今日头条布局滚动效果等源码
    iOS宇宙大战游戏、调试工具、各种动画、AR相册、相机图片编辑等源码
    android支付宝首页、蚂蚁森林效果、视频背景、校园电台、载入收缩动画等源码
    iOS天气动画、高仿QQ菜单、放京东APP、高仿微信、推送消息等源码
    android高仿抖音、点餐界面、天气项目、自定义view指示、爬取美女图片等源码
    Java_WebKit_ZC01
    Java_WebKit
    ZC_RemoteThread
    运行jar_测试代码
    运行jar_命令
  • 原文地址:https://www.cnblogs.com/suntao123/p/5561529.html
Copyright © 2011-2022 走看看