![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux_驱动
lufeiop02
这个作者很懒,什么都没留下…
展开
-
经典的第一个linux内核模块编程----hello,Kernel!
转自:http://edsionte.com/techblog/archives/1336学习内核模块编程,第一个小程序当然是hello,kernel!了,这应当算是一个惯例了。以前大三的时候在实验课上做过模块编程,记得当时还是许师兄带我们的实验,不过现在又忘了。晚上试了试,很快就运行成功了,不过还是出现了一些问题。现在将我的步骤记录如下,供和我一样的初学者学习。1.首先编写hello.c文件#include #include #include //必选 //模块许可声明 MODULE_LI原创 2011-05-18 00:33:00 · 1362 阅读 · 0 评论 -
字符设备驱动(globalmem-全局内存)分析之一
<br />此文修改自:http://edsionte.com/techblog/archives/1362<br />globalmem相信学驱动的入门的时候都见过吧<br /> <br />熟悉了模块编程的基本框架后,我们就可以试着分析一个简单的字符设备驱动。<br />下面以《设备驱动开发详解》一书中的代码6.17为例来分析这个字符设备驱动的代码。<br />我们现在对于对前文中hello,kernel内核模块进行稍微的改动。我们都知道内核模块的入口函数是module_init(function na原创 2011-05-25 22:38:00 · 1669 阅读 · 0 评论 -
编写linux驱动所用到的头文件
<br />关于linux驱动(应用)程序头文件使用 收藏 <br />驱动程序:<br /> <br />#include <linux/***.h> 是在linux-2.6.29/include/linux下面寻找源文件。<br />#include <asm/***.h> 是在linux-2.6.29/arch/arm/include/asm下面寻找源文件。<br />#include <mach/***.h> 是在linux-2.6.29/arch/arm/mach-s3c2410/include/原创 2011-05-26 21:21:00 · 2439 阅读 · 0 评论 -
很简单的字符设备驱动
#include //初始化头文件 #include //最基本的文件,支持动态添加和卸载模块。Hello World驱动要这一个文件就可以了 #include //对一些特殊类型的定义,例如dev_t, off_t, pid_t.其实这些类型大部分都是unsigned int型通过 //一连串的typedef变过来的,只是为了方便阅读。 #include //包含了struct inode 的定义,MINOR、MAJOR的头文原创 2011-05-24 02:22:00 · 1381 阅读 · 1 评论 -
register_chrdev_region函数源码分析
<br />转自http://edsionte.com/techblog/archives/1393 有修改<br /> <br />如何找到一个有效的切入点去深入分析内核源码,这是一个令人深思的问题。本文以前文中未详细说明的函数为切入点,深入分析char_dev.c文件的代码。如果你已经拥有了C语言基础和一些数据结构基础,那么还等什么?Let’s go!<br />在《字符设备驱动分析》一文中,我们说到register_chrdev_region函数的功能是在已知起始设备号的情况下去申请一组连续的设备号原创 2011-05-29 21:27:00 · 862 阅读 · 0 评论 -
LINUX是如何make驱动程序模块的?
修改自http://www.360doc.com/content/11/0126/15/4469577_89156255.shtml Linux内核是一种单体内核,但是通过动态加载模块的方式,使它的开发非常灵活 方便。那么,它是如何编译内核的呢?我们可以通过分析它的Makefile入手。以下是 一个简单的hello内核模块的Makefile. ifneq ($(KERNELREL原创 2011-06-12 19:30:00 · 800 阅读 · 0 评论