zoukankan      html  css  js  c++  java
  • 第6章 第一个Linux驱动程序:统计单词个数

    编写一个Linux的一般步骤:

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

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

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

    第4步:指定回调函数

    第5步:编写业务逻辑

    第6步:编写Makefile文件

    第7步:编译Linux驱动程序

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

        在编写Makefile文件时obj-m表示将Linux驱动作为模块(.ko文件)编译,而obj-y是将Linux驱动编译进Linux内核;obj-m或obj-y需要使用":="赋值。通过make menuconfig命令可以配置每一个驱动及其他内核程序是否允许编译进内核。Linux系统内存分为了用户空间和内核空间,这两个空间的程序不能直接访问。printf函数运行在用户空间,printk函数运行在内核空间,因此,属于内核程序的Linux驱动是不能直接访问printf函数的,而用户空间的程序

    也不能直接调用printk函数。如果使用模块方式编译Linux驱动程序,需要

    使用M指定驱动程序所在的目录。例如:查看由Linux驱动输出的日志信息所使用如下命令:

          # dmesg | grep word_count | tail -n 2

      或

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

        使用modinfo查看.ko文件的信息,设备文件由主设备号和次设备号描述。

  • 相关阅读:
    C#中索引器的实现过程,是否只能根据数字进行索引?
    重载与覆盖的区别?
    C#中 property 与 attribute的区别?
    C#可否对内存进行直接的操作?
    在c#中using和new这两个关键字有什么意义?
    secs/gem协议
    框架2
    C#开发框架学习
    C#两种数据类型
    泛型参数
  • 原文地址:https://www.cnblogs.com/zgen1/p/5547784.html
Copyright © 2011-2022 走看看