编程环境搭建: 因为ubuntu 12.04的内核版本已经是3.x,而目前一些讲解内核驱动的书都是2.6.x。 嵌入式开发的版本一般都是基于3.14移植的,因为嵌入式是跑在开发板上的,所以开发驱动没有问题。但是教材的例子一般都是基于PC机的2.6.x版本,虽然内核内部接口相对稳定,但是我也不太清楚。... ...
分类:
其他好文 时间:
2016-08-17 13:51:11
阅读次数:
279
LDD3的开发环境推荐的是2.6.10,安装了RHEL4-update4,其内核版本为2.6.9.42,编译mmap的程序时报错:Unknown symbol remap_pfn_range
在网上查了下,应将上述报错的函数改为remap_page_range,并且remap_page_range不再推荐使用了,两个内核函数第二个参数定义不相同:
int remap_page_range(st...
分类:
系统相关 时间:
2016-05-13 01:18:17
阅读次数:
1231
最近在看LDD3,理解了一下,为了加深自己的印象,自己梳理一下。我用的CentOS release 6.6 (Final)系统。 一、编写编译内核模块的Makefile 以下是我用的Makefile Makefile要注意tab键和空格不能互相替换使用。这个Makfile其实会被调用2次,第一次这个 ...
分类:
其他好文 时间:
2016-04-11 18:48:32
阅读次数:
139
1 、控制情况主要有:2. 独享设备——一次只允许一个用户的一个进程访问(代码参考ldd3)scull 的驱动程序: 需要一个原子变量atomic_t//scull.h#ifndef _SCULL_H_#define _SCULL_H_#include /* needed for the _IOW....
分类:
其他好文 时间:
2015-10-03 10:39:20
阅读次数:
323
来自:http://www.hovercool.com/en/Class_create,_device_create,_device_create_file开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点(包括ldd3中不少例子也是这样),实际上现在Linux内核为...
分类:
其他好文 时间:
2015-08-25 19:10:36
阅读次数:
205
来自:http://www.hovercool.com/en/Class_create,_device_create,_device_create_file开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点(包括ldd3中不少例子也是这样),实际上现在Linux内核为...
分类:
其他好文 时间:
2015-08-19 12:44:22
阅读次数:
140
在开头补上LDD3的一句话:如果 USB 驱动没有和另一种处理用户和设备交互的子系统(例如 input, tty, video, 等待)关联, 驱动可使用 USB 主编号为了使用传统的和用户空间之间的字符驱动接口. 为此, USB 驱动必须在探测函数中调用 usb_register_dev 函数, ...
分类:
其他好文 时间:
2015-08-13 11:56:37
阅读次数:
233
前两篇blog已经基本熟悉了块设备的相关结构,这里来总结下ldd3中提到的一些块设备驱动例题;
注册:
sbull_major = register_blkdev(sbull_major, "sbull");
if (0 >= sbull_major){
printk(KERN_WARNING "sbull: u...
分类:
系统相关 时间:
2015-07-13 00:50:48
阅读次数:
160
转自:http://blog.chinaunix.net/uid-23381466-id-3837650.html内核版本:2.6.38-11-generic内核自己都大量利用内核符号表导出函数,那么应该导出呢,ldd3上面说只需要EXPORT_SYMBOL一类的宏导出即可,结果试了很久都不行,最后...
分类:
系统相关 时间:
2015-06-04 15:24:38
阅读次数:
215
关于tty这部分请参考:《Linux设备驱动开发详解 第二版》第14章 Linux终端设备驱动《精通Linux设备驱动程序开发》第6章 串行设备驱动程序《Linux设备驱动程序 第三版》第18章 TTY驱动程序下面是一些串口相关的文档:http://pan.baidu.com/s/1mg20UmcM...
分类:
其他好文 时间:
2015-03-08 18:31:01
阅读次数:
160