zoukankan      html  css  js  c++  java
  • 读书笔记第十章

    第十章

    打印内核的调试信息printk

    printkprintf区别:

    printk 函数该函数的用法与printf函数类似,具不过printk函数运行内核空间,printk函数运行在用户空间。也就是说,像Linux驱动这样的Linux内核程序只能使用prink函数输出调试信息。

    其次应该防止printk函数可以很方便地将消息写入日志文件或控制台,但是大量使用printk函数频繁操作日志文件或控制台设备文件会严重影响Linux驱动的性能,因此这就要求Linux驱动只在开发阶段使用printk函数输出消息,在正式发布Linux驱动时将可能影响性能的printk函数去掉。

    然后通过虚拟文件系统进行数据交互。

    嵌入式调试方法:

    1.模拟器。比如Qtopia Core可以用奇趣提供的Frame Buffer模拟工具qvfbARM硬件模拟可以用SkyEye开源项目。

    2.远程调试。调试器还在PC上,调试器与被调试的程序通过网络通信。

    3.通过LOGCore Dump等文件事后分析。

    stdprm 标准打印机 LPT1端口

    stdaux 标准串行设备 COM1端口

    stdin并不一定来自键盘,stdoutstderr也并不一定显示在屏幕上,可以将它们重定向到其他设备或磁盘文件上。

    使用fprintf()时,第一参数推荐使用stderr而不要使用stdout,因为stderr的运行级要高一些,程序在异常退出时stderr可以输出,而stdout就不行

    对于复杂的Linux驱动及HAL等程序库,需要使用各种方法对其进行调试,例如,设置断点、逐步跟踪代码、输出调试信息等。Printk函数运行在内核空间,printf函数运行在用户空间。

    初始化Linux驱动

    Static int _init printk_demo_init(void)

    卸载Linux驱动

    Static void _exit printk_demo_exit(void)

  • 相关阅读:
    动软代码生成器 修改配置
    显示转换explicit和隐式转换implicit
    Memcache学习整理
    SQL2008-分页显示3种方法
    SQL2008-表对表直接复制数据
    SQL2008-删除时间字段重复的方法
    SQL2008-中不想插入从复记录
    SQL2008-c:PROGRA~1COMMON~1SystemOLEDB~1oledb32.dll出错找不到指定的模块
    ACCESS-如何多数据库查询(跨库查询)
    ACCESS-字符函数
  • 原文地址:https://www.cnblogs.com/spurlash/p/5651708.html
Copyright © 2011-2022 走看看