http://blog.csdn.net/livingpark/category/525871.aspx?PageNumber=3
- Linux 设备驱动
- 设备的分类及特点
计算机系统硬件主要由CPU 、存储器和外设组成。
驱动针对的对象是存储器和外设(包括CPU 内部集成的存储器和外设),而不是针对CPU 核。Linux 将存储器和外设分为3 个基础大类:
字符设备;
块设备;
网络设备。
字符设备不经过系统的快速缓冲,而块设备经过系统的快速缓冲。
- Linux 设备驱动与整个软硬件系统的关系
除网络设备外,字符设备与块设备都被映射到Linux 文件系统的文件和目录。
在嵌入式系统的设计中,LED 一般直接由CPU 的GPIO (通用可编程的I/O 口)控制。GPIO 一般由两组寄存器控制,即一组控制寄存器和一组数据寄存器。
2. Linux 内核的组成部分
Linux 内核主要由进程调度(SCHED )、内存管理(MM )、虚拟文件系统(VFS )、网络接口(NET )和进程间通信(IPC )等5 个子系统组成。
一般而言,Linux 的每个进程享有4GB 的内存空间,0~3GB 属于用户空间,3~4GB 属于内核空间。
3 模块的编译
单文件:obj-m := hello.o(Makefile 文件)
make –C /usr/src/linux-2.6.xx.x M=$(pwd) modules
若一个模块包括多个.c 文件(如file1.c 、file2.c ),则应以如下方式编写Makefile :
obj-m := modulename.o
module-objs := file1.o file2.o