上一篇介绍了Linux驱动的概念,以及linux下设备驱动的基本分类情况及其各个分类的依据和差异,这一篇我们来描述如何写一个类似hello world的简单测试驱动程序。而这个驱动的唯一功能就是输出hello world。 在编写具体的实例之前,我们先来了解下linux内核下调试程序的一个重要函数p ...
分类:
系统相关 时间:
2017-05-10 18:46:34
阅读次数:
261
实验环境: 按照之前的搭建方法,已经在Ubuntu 5.04版本上构建了linux原始的2.6.10版本内核树; GCC是用的安装镜像自带的版本; 一切准备就绪后对虚拟机做了快照,防止内核损坏; 因为Ubuntu 5.04虚拟机下编程很麻烦,所以编码和调试都不在虚拟机下运行了: 编辑在windows... ...
分类:
其他好文 时间:
2016-08-31 23:46:56
阅读次数:
434
之前搭建了Ubuntu10.04驱动开发环境,但是那儿的内核版本是2.6.32.27,总感觉无从下手的感觉,因为书上的内核版本是2.6.10,作为初学者不知道差异在哪里,或许不应该纠结这个问题吧。 昨天搜2.6.10版本的时候,一直没有搜到关键的文章,今天偶尔搜了关键字"kernel 2.6.10 ... ...
分类:
其他好文 时间:
2016-08-17 22:41:30
阅读次数:
248
编程环境搭建: 因为ubuntu 12.04的内核版本已经是3.x,而目前一些讲解内核驱动的书都是2.6.x。 嵌入式开发的版本一般都是基于3.14移植的,因为嵌入式是跑在开发板上的,所以开发驱动没有问题。但是教材的例子一般都是基于PC机的2.6.x版本,虽然内核内部接口相对稳定,但是我也不太清楚。... ...
分类:
其他好文 时间:
2016-08-17 13:51:11
阅读次数:
279
从本章开始引入所有关于模块和内核编程的基本概念,并编写一个完整模块来实践这些基本的概念。3.1搭建测试环境由于所有测测试代码都是基于Ubuntu14.04.2Desktop的3.16.0-30-generic内核,所以最好是到Linux官方网站去下载一份该版本内核的源代码。另外,建议在虚拟机里面安装你..
分类:
系统相关 时间:
2016-06-20 19:05:04
阅读次数:
191
上一篇介绍了linux驱动的概念,以及linux下设备驱动的基本分类情况及其各个分类的依据和差异,这一篇我们来描述如何写一个类似hello world的简单测试驱动程序。而这个驱动的唯一功能就是输出hello world。在编写具体的实例之前,我们先来了解下linux内核下调试程序的一个重要函数pr...
分类:
系统相关 时间:
2015-03-28 20:26:28
阅读次数:
243
一>:设置测试系统
首先准备好一个内核源码树,构造一个新内核,然后安装到自己的系统中。
二>:HelloWorld模块
#include //定义了驱动的初始化和退出相关的函数
#include //定义了内核模块相关的函数、变量及宏
MODULE_LICENSE("Dual BSD/GPL"); //该宏告诉内核,该模块...
分类:
系统相关 时间:
2014-08-27 09:27:57
阅读次数:
320
一>:设置测试系统
首先准备好一个内核源码树,构造一个新内核,然后安装到自己的系统中。
二>:HelloWorld模块
#include //定义了驱动的初始化和退出相关的函数
#include //定义了内核模块相关的函数、变量及宏
MODULE_LICENSE("Dual BSD/GPL"); //该宏告诉内核,该模块采用自由许可证...
分类:
系统相关 时间:
2014-08-18 22:08:53
阅读次数:
472
hello.c#include #include #include MODULE_LICENSE("GPL");static int hello_init(void){ printk(KERN_ALERT "hello_init"); return 0;}static void hel...
分类:
其他好文 时间:
2014-07-13 23:39:13
阅读次数:
355