前言
本文基于S3C2440开发板。
一、Linux软件系统的层次关系
从上到下,一个软件系统可以分为应用程序,库,内核,驱动程序。开发人员可以专注于自己熟悉的部分,相对于邻接层,只需要了解它的接口,不必关心它的实现细节。
二、各层软件系统之间的协作关系
- 应用程序使用库提供的open,read,write函数打开我们的设备文件。
- 库根据open,read,write函数传入的参数执行"swi"指令,这条指令引发CPU异常,进入内核。
- 内核的异常处理函数根据这些参数找到对应的驱动程序,返回一个文件句柄给库,进而返回给应用程序。
- 应用程序得到句柄后,使用库提供的write,ioclt函数发出控制命令。
- 库根据write,ioclt函数传入的参数执行swi指令,引起CPU异常,进入内核。
- 内核的异常处理函数根据这些参数调用驱动程序的相关函数。