一、裸机开发和驱动开发的区别:
裸机开发:底层(相对于linux来说),库
二、linux驱动开发-根据各种框架进行开发
1、 外设比较多,资源多,资料非常少,官方的SDK;直接操作寄存器不显示
eg: im6ull: mpu应用处理器;
2、根据linux下各种驱动框架进行开发。各种驱动框架的掌握
3、驱动最终表现就是/dev/xxx文件。打开、关闭、读写。。。
4、内核支持设备树,.dts文件,此文件,描述板子的设备信息。
三、linux驱动开发分类
驱动分为三大类
1、字符设备,最多的;gpio\iic\spi
2、块设备;SD卡 、EMMC,以固定大小长度
eg:SD卡 一个扇区 512k字节,存储
3、网络设备;网卡 usb网卡,WIFI网卡,
一个设备不一定属于某一个类型;例如:USB WIFI,SDIO WIFI属于设备驱动,因为既有USB、SDIO,也属于字符设备驱动。
字符设备驱动开发
应用程序和驱动的交互原理
linux下app和驱动分开的;设计—内核空间(驱动,内核态)、用户空间(用户态),分开目的:安全
访问内核:
1、系统调用 ;POSIX、API、 C库
2、异常
3、陷入
驱动获取外设 控制外设;数据提交应用程序。