# LinuxDriverStudy **Repository Path**: ljan69/linux-driver-study ## Basic Information - **Project Name**: LinuxDriverStudy - **Description**: linux driver study - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2024-11-28 - **Last Updated**: 2024-11-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LinuxDriverStudy #### 介绍 linux driver study,使用的内核源码版本为linux-5.4.61,在此基础上进行各种练习及驱动开发。 #### 软件架构 每一个文件夹代表每一次的驱动练习,从简单到复杂,文件夹格式为"数字序号_工程名"。文件名里面有"APP"则是配套的用来测试驱动的APP代码。需要静态编译哦~ 1. 工程1 最小的注册设备框架 2. 工程2 添加read和write 3. 工程3 添加ioctl和llseek 4. 工程4 添加多设备及互斥锁 4. 工程5 添加阻塞条件满足后进行进程切换,非阻塞条件满足后进行唤醒,APP通过读写FIFO来应用阻塞。 5. 工程6 添加poll非阻塞。APP通过多路复用select来测试5s timeout后非阻塞。 7. 工程7 添加异步io。之前是同步io。 8. 工程8 添加内核定时器。fifo写入后,每隔2s弹出,直到清空fifo位置。 9. 工程9 基于工程8,将applepaper设备作为平台设备,通过设备树关联到platform虚拟总线上。 10. 工程10 i2c配置完设备树为i2c2后,自制的app测试程序。 11. 工程11 自己写的基于i2c总线的eeprom设备驱动。实现最简单的框架,没有添加同步及阻塞,仅支持从0地址的1个字节读写,将来有需要再扩展。 12. 工程12 自己写的基于misc的SG90PMW驱动。 13. 工程13 基于串口的US100超声波传感器驱动。 14. 工程14 a.基于GPIO的US100超声波传感器驱动。后来发生triq由io口改成了PWM来输出10us高电平。 b.US100_drv8.c将自定义设备从全局变量改成临时变量,并且添加信号量锁来限制仅有一个进程打开设备文件。 15. 工程15 libusb交叉编译后的使用。 v4l2在内核配置完成后的使用。 16. 工程16 MPU6500六轴陀螺仪驱动。 a.基于input子系统的i2c总线设备驱动。apple6500_dev3.c b.基于input子系统的spi总线设备驱动。apple6500_dev4.c 17. 工程17 MPU6500六轴陀螺仪驱动(spi和i2c合并为core)。 18. 工程18 基于3线spi的st7735s芯片,我在st7735r基础上修改的fbtft驱动,但是无法启动OLED。此OLED在stm32上可以被驱动。所以先备份将来有机会再玩。 #### 参与贡献 仅单分支,暂不开放 #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)