嵌入式Linux开发——(十七)Linux设备驱动开发
一、字符设备驱动程序
1)应用程序、库、内核、驱动程序的关系
2)Linux驱动程序的分类和开发步骤
①Linux的外设可分为3类:字符设备(character device)、块设备(block device)、网络接口(network interface)
A、字符设备:能够像字节流一样被访问的设备,就是说对它的读写以字节为单位,比如串口
B、块设备:数据以块的形式存放,比如NAND Flash
C、网络接口:具有字符设备和块设备的部分特点
②Linux驱动程序开发步骤
A、查看原理图、数据手册、了解设备的操作方法
B、在内核中找到相近的驱动程序,以它为模板进行开发,有时需要从零开发
C、实现驱动初始化:向内核注册这个驱动
D、设置所要实现的操作
E、实现中断服务
F、编译该驱动到内核中
G、测试驱动程序
③驱动程序的加载和卸载
使用insmod命令加载,使用rmmod命令卸载,使用lsmod命令查看内核中加载了哪些模块
3)字符设备驱动程序开发
①大概流程:
A、编写驱动程序初始化函数
B、构造file_operations结构中要使用到的各个成员函数
二、Linux异常处理体系结构
1)异常处理体系结构概述
①异常,就是可以打断CPU正常进行流程的事件,比如外部中断、未定义的指令、试图修改只读的数据、执行swi指令等,当 这些事件发生时,CPU暂停当前的程序,先处理异常事件,再继续执行被中断程序
②常见异常
A、未定义指令异常
B、指令预取中止异常
C、数据访问中止异常
D、中断异常
E、swi异常