hello world驱动程序调试

万事开头难,最简单的有时却是最难的。

学习Linux驱动程序开发,大家都会从hello world的驱动程序开始学习,我也如此,在学习调试该程序时,遇到了很多问题,呵呵,最终得以解决,总结如下:

1 内核版本问题,我在最初安装Redhat时,版本为linux-2.4.20-8,创建hello目录,在该目录下编写hello.c和Makefile后,运行make命令,什么文件都没生成,郁闷了好久,后来怀疑2.4版本的内核有问题。

2 在官网上下载linux-2.6.34的版本,运行make命令后生成hello.ko文件,执行加载模块命令 insmod hello.ko后,打开另外一个终端,查看/var/log/massages中的内容。

时间: 2024-11-11 17:54:25

hello world驱动程序调试的相关文章

驱动程序调试方法之printk——printk的原理与直接使用

1.基本原理 (1)在UBOOT里设置console=ttySAC0或者console=tty1 这里是设置控制终端,tySAC0 表示串口, tty1 表示lcd(2)内核用printk打印 内核就会根据命令行参数来找到对应的硬件操作函数,并将信息通过对应的硬件终端打印出来! 2.printk的使用 (1)printk函数的信息如何才能在终端显示出来 在内核代码include/linux/kernel.h中,定义了控制台的级别: extern int console_printk[]; #de

驱动程序调试方法之printk——自制proc文件(一)

首先我们需要弄清楚proc机制,来看看fs/proc/proc_misc.c这个文件,从入口函数开始看: proc_misc_init(void) #ifdef CONFIG_PRINTK { struct proc_dir_entry *entry; entry = create_proc_entry("kmsg", S_IRUSR, &proc_root);//这里创建了一个proc入口kmsg if (entry) entry->proc_fops = &p

驱动程序调试方法之printk——自制proc文件(二)

上一节的程序很振奋人心,我们自己实现了一个myprintk打印函数.但是这个函数存在一个致命的缺陷,那就是只能使用一次cat /proc/mymsg命令来读取mylog_buf的值.这是因为读到最后会出现:mylog_r == mylog_w,表示缓冲区为空,下一次就不能在读到数据了.在本节里面我们就着手来解决这个问题,我们要实现的就是每次使用 cat /proc/mymsg 时,都会从头打印.那么我们就需要将入口做一个拷贝,一个保存起来,一个进行变换.这样的话,当下一次读的时候,我们可以将保存

基于WDF的PCI/PCIe接口卡Windows驱动程序(5)-如何为硬件移植驱动程序

原文地址:http://www.cnblogs.com/jacklu/p/6139347.html 正如前几篇博客所说,使用WDF开发PCIe驱动程序是我本科毕业设计的主要工作.在读研的两年,我也分别为所在课题组移植了自己编写的驱动程序,在Windows 32位和64位平台下的PXI.PXIe.PCI.PCIe板卡分别得到了验证. 这篇文章根据自己最新编写的驱动代码(源代码请找博主索取),主要讲述如何为自己的硬件板卡移植驱动程序,并简单讲述如何使用Altera系列FPGA配置PCI IP核,然后

Linux内核调试的方式以及工具集锦

CSDN GitHub Linux内核调试的方式以及工具集锦 LDD-LinuxDeviceDrivers/study/debug 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可, 转载请注明出处, 谢谢合作 因本人技术水平和知识面有限, 内容如有纰漏或者需要修正的地方, 欢迎大家指正, 也欢迎大家提供一些其他好的调试工具以供收录, 鄙人在此谢谢啦 "调试难度本来就是写代码的两倍. 因此, 如果你写代码的时候聪明用尽, 根据定义, 你就没有能耐去调试它了.&qu

SylixOS 驱动调试软件使用说明

1.适用范围 本文档适用于使用SylixOS进行驱动模块开发的客户人员和技术工程师. 2.工作准备 BSP驱动开发软件; CAN驱动模块代码: CAN应用程序测试代码. 3.原理概述 翼辉BSP驱动开发软件是一种用于调试驱动程序的软件库,它通过替换系统IO接口,利用软件库内的中间线程做中转,将内核态的驱动程序构建为用户态,使驱动程序的调试如普通应用程序一样简单. 4.使用说明 下面以AM4378板卡的CAN设备驱动为例,说明BSP驱动开发软件的使用过程.使用步骤如下: 4.1构建用户态驱动工程

应用调试(三)oops

目录 应用调试(三)oops 引入 配置内核打开用户oops CONFIG_DEBUG_USER user_debug 设置启动参数测试 打印用户堆栈 分析栈 main的调用 title: 应用调试(三)oops date: 2019/01/19 12:06:58 toc: true --- 应用调试(三)oops 引入 在驱动程序调试中,发生段错误后内核打印出oops信息,包括pc值,寄存器值和栈信息 Unable to handle kernel paging request at virt

linux下类似Bus Hound的工具

linux下类似Bus Hound的工具 http://blog.csdn.net/liuqz2009/article/details/7886461 0推荐在linux大家有时候需要调试usb接口的串口消息,但是没有类似于windows下的bus hound工具,感觉比较痛苦,其实linux内核提供了usbmon这个工具,可以收集串口信息. 1.准备: 挂接debugfs (这个可以在内核配置中使能),加载usbmon模块(如果usbmon编译成模块). 如果usbmon编译到内核中的话,第二

嵌入式开发-写在这里作为参照

第一部分:Linux平台搭建与环境熟悉 了解linux系统:区分各种版本的Linux系统,以便于拓展 Linux视野.1.Linux 简介:2.Linux 系统的主要特点:3.Linux 的组成:4.主要的 Linux 版本:5.嵌入式 Linux简介与发展 第二部分虚拟机安装和LINUX系统安装 1.虚拟机安装:2.Linux系统的安装:3.Linux系统的常用软件的安装:4.Linux快速入门5. 熟悉运用 Linux环境下,常用命令的操作与系统设置,如常用的 Shell:掌握基本的 She