笔记[1]开发环境:
单板:iTOP4412_SCP精英版;编译工具链:arm-linux-gcc-4.3.2;内核版本:linux-3.5-20170221;busybox版本:busybox-1.20.0
1、驱动基础:系统调用过程
2、点亮LED:字符驱动框架;完成init()和exit();完成write()、open()和release();LED字符驱动完整代码
3、中断分析以及按键中断:内核中断分析;等待队列;按键中断字符驱动程序;中断的底半部机制;中断共享
4、poll()、select()和epoll():poll()函数;select()函数;epoll()函数;poll()、select()和epoll()的区别;驱动程序的poll()函数
5、并发控制:并发与竞态;中断屏蔽;原子操作;自旋锁;信号量;互斥体;互斥体和自旋锁的选择
6、异步通知:应用程序异步通知signal();驱动程序异步通知fasync()
7、内核定时器:内核定时器的使用方法;完整代码
platform_device;platform_driver;platform_bus_type;总结;更改led.c为总线设备驱动
24、V4L2框架主要结构体分析和虚拟摄像头驱动编写:V4L2框架主要结构体分析;核心层提供的注册函数;v4l2_device和video_device的file_operations分析;v4l2.c的init()函数分析;数据传输和控制结构体分析;虚拟摄像头驱动vivi.c虚拟机测试;ioctl()执行过程和v4l2_ioctl_ops必需函数指针的确定;数据的获取过程;虚拟摄像头驱动程序编写过程
[1] 笔记参考了宋宝华老师的《Linux设备驱动开发详解:基于最新的Linux 4.0内核》以及韦东山老师的嵌入式驱动教程