驱动开发是嵌入式工程中的一个大类,无疑是非常重要的模块,在我们求职时,驱动开发也是一个吃香的工作岗位,因此,学好驱动开发是很有必要的。驱动是需要一定环境的,这就与系统移植有关了,首先要有一个引导程序,如uboot,用以加载引导内核、文件系统等,其次就是有移植好的内核,最后需要提供文件系统。
我们之前学习编写的C程序属于应用程序,而驱动开发有自己的驱动程序,两种程序有一定区别:
1、应用程序在内存中运行,而驱动程序在内核中运行。
2、应用程序从main开始,驱动程序以一个模块初始化函数作为入口。
3、应用程序一般是主动的,驱动程序大多是被动的,多数情况下被操作系统调用。
4、应用程序运行在指定的进程空间内,驱动程序不从属于任何进程,可以运行在任意进程空间中。
5、应用程序在系统初始化后才能被加载,驱动程序可以在系统硬件加电后的任意时刻被加载。
6、应用程序只能调用Win32 API,驱动程序只能调用内核和执行体提供的API。