一、裸机开发
直接操作寄存器、MCU的库等等
二、Linux
1、根据Linux下各种驱动框架开发。
2、驱动最终表现就是文件(dev/xxx)。打开、关闭、读写、。。。
3、 设备树,一个dts,此文件描述板子的设备信息,用于驱动和板子进行匹配
三、Linux 驱动分类
分为三大类:
1、字符设备驱动 类型最多
2、块设备驱动
3、网络驱动
混合类型驱动:比如:usb wifi 等等
驱动本质: 获取外设、控制外设、获取传感器数据。将数据提交给应用程序
用户空间(用户态) 和内核空间(内核态)(安全性,内核态能访问任何硬件资源)
Linux os 内核和驱动运行在内核空间,应用程序运行在用户空间
应用程序访问内核资源:三种方案:系统调用、异常中断、陷入
系统调用:通过API函数间接调用系统调用,eg:POSIX 、API 、C库等等