裸机开发,即我们常说的不带系统的单片机开发。
Linux驱动开发,即带文件系统的Linux驱动的开发。
比较底层,跟寄存器打交道,有些 MCU提供了库。
(1)? Linux下驱动开发直接操作寄存器不现实。
(2)? 根据Linux下的各种驱动框架进行开发。一定要满足框架,也就是Linux下各种驱动框架的掌握。
例如,Linux下对于 GPIO,有一整套的IO驱动框架。我们只要按照要求把IO相关属性告诉系统,Linux会提供一些 API函数,直接使用这些 GPIO操作函数即可。
(3)? 驱动最终表现就是/dev/xxx文件。打开、关闭、读写、。。。
(4)? 现在新的内核支持设备树,这是一个?.dts文件,此文件 描述了板子的设备信息。
linux驱动分为三大类:
(1)?? 字符设备驱动,最多的。字符设备是Linux中最基本的一类设备驱动,我们常见的点灯、按键、IIC、SPI、LCD等等都是通过字符设备驱动框架来进行开发的。字符设备是一个顺序的数据流设备,字符设备驱动是通过一个一个字节流的方式来进行读写操作设备,读写数据是分先后顺序的。这些设备的驱动就叫做字符设备驱动。
(2)? 块设备驱动,存储。以固定大小进行数据的读写,块设备能够随机访问,不需要按照顺序地访问数据大小的数据块。
所谓的块设备驱动就是存储器设备的驱动,比如 EMMC、NAND、SD 卡和 U 盘等存储
(3)? 网络设备驱动。
一个设备不说是一定只属于某一个类型。例如,USB WIFI,? SDIO WIFI,属于网络设备驱动,因为其又有USB和SDIO,因此,也属于字符设备驱动。