一、Linux系统结构概述
1.1Linux体系结构
1.2内核架构
二、Linux驱动
2.1Linux系统3大类设备
1)字符设备
2)块设备
3)网络设备
字符设备和块设备都是通过文件系统的系统调用接口open()、close()、write()、read()等函数访问,应用程序可以通过打开设备文件(如UART0设备:/dev/ttyS0)来访问设备;
主设备号、次设备号;
网络设备是面向数据包的接收和发送而设计的,它不对应于文件系统(/dev目录下)的结点,而是由系统分配一个唯一的名字(如eth0)。
2.2Linux系统框架图
Linux驱动的编写难点不在于对硬件的具体操作而是需要清除现有驱动程序的框架,并在这个框架中找到修改的位置。
编写设备驱动程序涉及的三个核心数据结构:
1)Struct file_operations结构
2)Struct inode结构
3)Struct file结构
2.3加载驱动的方式
1)编译进内核(静态加载驱动);
2)不编译进内核以模块的方式动态加载.
三、静态加载驱动
3.1定义
将驱动直接编译进内核,烧写进板子后,系统启动时由内核自动加载。
3.2实现