4、初始化C代码空间
5、跳转到C代码中,start_kernel
start_kernel在init/main.c中,完成内核的启动过程;
start_kernel()--->rest_init...应用程序使用库提供的open,read,write函数打开我们的设备文件。
库根据open,read,write函数传入的参数执行"swi"指令,这条指令引发CPU异常,进入内核。...内核的异常处理函数根据这些参数找到对应的驱动程序,返回一个文件句柄给库,进而返回给应用程序。
应用程序得到句柄后,使用库提供的write,ioclt函数发出控制命令。...库根据write,ioclt函数传入的参数执行swi指令,引起CPU异常,进入内核。
内核的异常处理函数根据这些参数调用驱动程序的相关函数。...,处于中断上下文,与内核进程无关处理某个特定的终端;
驱动程序与应用程序的区别
1、应用程序以main开始,驱动程序没有main,它以一个模块初始化函数作为入口。