这章主要介绍了第一个linux驱动程序:统计单词个数。Linux系统将每一个驱动都映射成一个文件,这些文件称为设备文件或驱动文件,都保存在/dev目录中。大多数Linux驱动都有与其对应的设备文件,因此与Linux驱动交换数据就变成了与文件交换数据,也就是文件操作。

编写Linux驱动程序的步骤

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

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

第三步:指定于驱动相关的信息

第四步:指定回调函数

第五步:编写业务逻辑

第六步:编写Makefile文件

第七步:编译Linux驱动程序

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

安装Linux驱动:

insmod (驱动名,一般为后缀为.ko的文件)

查看word_count是否成功安装:

lsmod | grep  word_count

(卸载L inux驱动: rmmod word_count,这一步在你不需要的时候在卸载)

查看由Linux驱动输出的日志信息:

dmesg | grep word_count | tail –n

将驱动编译进Linux内核进行测试(使用word_count驱动的例子)

第一步:将word_count.c文件放入Linux内核源代码

第二步:修改Kconfig文件

第三步:修改Makefile文件(遵循makefile编辑规则)

第四步:设置.config文件(菜单配置即可)

第五步:编译Linux内核(进入有makefile文件的目录,执行make命令即可)

将word_count目录加入Linux内核源代码树的步骤

第一步:建立新的Kcinfig文件(这一步是文件的拖移)

第二步:修改Makefile文件

第三步:修改上层目录的Kconfig文件

第四步:修改上层目录的Makefile文件

Android深度探索-卷1第六章心得体会的更多相关文章

  1. Android深度探索-卷1第四章心得体会

    这一章的和三章的git用法有联系,so,吧上一章的git基本用法搞好了再来,具体的方法就是看书上网查,这里就不做详细步骤介绍了.这章就有点意思了,是源码的下载和编译,有能看的,能自己鼓捣的,本章介绍的 ...

  2. Android深度探索-卷1第五章心得体会

    S3C6410是由三星公司推出的一款低功耗.高性价比的RISC处理器,开发是,首先安装minicom串口调试工具: 第一步:检测当前系统是否支持USB转串口. Lsmod | grep usseria ...

  3. Android深度探索-卷1第三章心得体会

    第三章整章介绍了git,git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.通过配置git后可以很方便的找到需要的资源,更多的是代码和包,可以在本地建立版本库,为了 ...

  4. Android深度探索-卷1第七章心得体会

    创建LED驱动的设备文件 第一步:使用cdev_init函数初始化cdev 第二步:指定设备号.直接在代码指定或动态分配 第三步:使用cdev_add函数将字符设备添加到内核中的字符设备数组中 第四步 ...

  5. Android深度探索(卷1)HAL与驱动开发 虚拟环境的安装

    前言: 最近在看<Android深度探索(卷1)HAL与驱动开发>安装随书带的虚拟环境浪费了很多时间,说是虚拟环境的安装倒不如说是虚拟环境的导入,其实没什么技术含量,也没有什么复杂的,只是 ...

  6. Android深度探索-卷1第二章心得体会

    这章介绍了搭建Android开发环境的的搭建,主要是在Linux上搭建Android开发环境总体来说因为都是在Linux下开发的,so,只介绍了在Linux环境下的搭建在搭建过程中全是命令操作,和Wi ...

  7. Android深度探索-卷1第一章心得体会

     本章介绍了安卓系统移植与驱动开发的概述,安卓的系统架构有四层:1 Linux内核,2 c/c++代码库, 3 Android SDK API, 4 应用程序 在读的过程中看到了专业名词,查了查,长点 ...

  8. Android深度探索-卷1第九章心得体会

    在android系统中使用Linux 驱动有两种方式一种是通过传统的方式直接与Lmux 驱动交互,如,直接读写设备文件的数据.另外一种是Android特有的,就是通过HAL 模块.HAL 模块本质是通 ...

  9. Android深度探索(卷1)HAL与驱动开发

    第一章 介绍Android驱动开发和移植技术 主要对android和linux做了总体的介绍,让我们有了个感性的认识. 一.Android的四层系统架构: a) Linux内核:Android是基于L ...

随机推荐

  1. Shell脚本语言学习总结

    Shell 是一种脚本程序,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了. 编写第一个Shell 程序 在linux命令行执行 [root@iz2zeexr9tk4ckr7dp ...

  2. kmp(循环节)

    Cyclic Nacklace Problem Description CC always becomes very depressed at the end of this month, he ha ...

  3. Blocks题解(区间dp)

    Blocks题解 区间dp 阅读体验...https://zybuluo.com/Junlier/note/1289712 很好的一道区间dp的题目(别问我怎么想到的) dp状态 其实这个题最难的地方 ...

  4. python学习第十五天字典的创建及增删改查操作方法

    字典是python比较常见的数据类型,跟列表一样,比如的字典的创建,字典的常见的操作的方法,增加,删除,修改,查找等方法,字典的一共的数据方法为 keys()  values() fromkeys() ...

  5. 消息中间件-技术专区-RocketMQ架构原理

    RocketMQ是阿里开源的分布式消息中间件,跟其它中间件相比,RocketMQ的特点是纯JAVA实现:集群和HA实现相对简单:在发生宕机和其它故障时消息丢失率更低. 一.RocketMQ专业术语 P ...

  6. 【主机管理项目】-(models.py(一对多、多对多数据库创建代码))

    # -*- coding: utf-8 -*- from __future__ import unicode_literals from django.db import models class U ...

  7. CodeForces - 343D 树链剖分

    题目链接:http://codeforces.com/problemset/problem/343/D 题意:给定一棵n个n-1条边的树,起初所有节点权值为0,然后m个操作. 1 x:把x为根的子树的 ...

  8. linux shell 指令

    一.文件比较运算符 1. e filename 如果 filename存在,则为真 如: [ -e /var/log/syslog ] 2. -d filename 如果 filename为目录,则为 ...

  9. ThreadPoolExecuotor源码参考

    Executor --> ExecutorService --> AbstractExecutorService --> ThreadPoolExecuotor Executor接口 ...

  10. mysql 数据库连接状态查询

    查看当前数据库进程 show processlist