设备驱动程序概述
linux控制硬件与在单片机中控制硬件的区别
先来看一下在stm32单片机程序中如何点亮LED灯
可以看到stm32单片机驱动LED的程序非常简单,在main函数中直接调用HAL库,本质就是操作寄存器控制硬件引脚输出。程序可以直接操作寄存器从而控制LED。
在Linux系统中,应用程序时无法直接操作寄存器的,只有设备驱动程序才能操作寄存器。
应用程序要操作硬件,只能通过调用驱动程序去操作。
在单片机中没有应用程序、驱动程序,这样的概念。
在linux中,应用程序是完成某项或多项特定工作的计算机软件,工作在用户空间。设备驱动程序是专用于控制和管理特定硬件设备的软件,工作于内核空间。
用户空间与内核空间
内核空间和用户空间分离。
用户空间与内核空间的概念比较抽象,其实就是内存访问权限不一样。可以认为,内核是有特权的,而用户程序是受限制的。
内核模式下,CPU可以访问整个内存。