zoukankan      html  css  js  c++  java
  • Android深度探索--HAL与驱动开发----第十章读书笔记

    一、打印内核调试信息:printk

      Printk函数用法与printf函数类似,只不过printk函数运行在内核空间,printf函数运行在用户空间,printk函数在printk.c文件中实现。

      Printk函数的原型如下:asmlinkage int printk(const char *fmt,...)

      第1个参数表示格式字符串,后面是可变参数。第一个参数值前面加尖括号包含的数字表示输出的日志级别,共有8个级别,在linux/kernel.h头文件中定义。

    嵌入式Linux的调用技术

    调试方法:设置断点、逐步跟踪代码、输出调试信息。

    打印讷河调试信息:printk。Printk函数运行在内核空间,printk函数运行在用户空间。Linux驱动这样的Linux内核程序只能使用printk函数输出调试信息。

    Asmlinkage int printk(const char *fmt, …)第一个参数表示格式字符串,后面是可变参数。

    虽然使用printk函数可以很方便的将纤细写入日志文件或控制台,但是大量使用printk函数频繁操作日志文件或控制台设备文件会严重影响Linux驱动的性能。防止printk函数降低Linux驱动的性能

    通过虚拟文件系统进行数据交互。在Linux文件系统中,/proc经常被用来作为内核空间与用户空间进行数据交互的工具。/proc并不是真正的文件系统,而是映射内存。所有读写/proc的操作都是对内存的读写,所以读写/proc文件系统的速度要远比读写/dev文件系统的速度快。因此,/proc文件系统也可以作为Linux驱动与用户空间程序交互的工具。有很多系统信息就是通过/proc文件系统由内核空间的程序向外界提供的。/proc文件系统和/dev文件系统一样,也需要设置访问文件的动作处理函数。

    Proc_mkdir:

    name:虚拟目录名称

    parent:虚拟目录父目录的proc_dir_entry结构体指针

    create_proc_entry

           name:虚拟文件名称

           mode:虚拟文件的访问权限,等同于Linux问价的访问权限

           parent:虚拟文件父目录的proc_dir_entry结构体指针。

    Create_proc_read_entry

           name:虚拟文件名称

           mode:虚拟文件的访问权限,等同于Linux问价访问权限。

           base:虚拟文件父目录的proc_dir_entry结构体指针。     

           read_proc:处理读动作的函数指针。

    data:用于虚拟文件系统的数据。该值就是proc_dir_entry.read_proc函数的最后一个参数值

    remove_proc_entry

           name:要删除的虚拟文件的名称

           parent:虚拟文件父目录的proc_dir_entry结构体指针。

    调试工具:

           1用gdb调试用户空间程序

           2gdbserver远程调试用户空间程序

           3kgdb远程调试内核程序

    http://www.cnblogs.com/lhczln/

  • 相关阅读:
    android自动登录
    【199】ArcGIS 添加自定义工具到工具箱
    【198】Synergy
    【197】PowerShell 通过 FTP 下载文件
    【196】Dell 移动工作站系统安装方法
    php如何同时连接多个数据库
    FreeRTOS学习笔记——任务间使用队列同步数据
    牛腩新闻发布系统之发布
    Linux散列表(二)——宏
    Excel导入数据库(三)——SqlBulkCopy
  • 原文地址:https://www.cnblogs.com/lhczln/p/5652660.html
Copyright © 2011-2022 走看看