在开始学Linux驱动的时候,其实我是有点懵的。我知道我要学Linux内核驱动,但我不知道我要学什么。
首先先来思考一下自己会什么,目前我已有的知识是:
- 一些简单的C语言基础
- 一些八股的操作系统原理,但没上手过
- 编译过Linux内核并使用它启动过
那我的短期小目标呢?
- 尝试从做一个字符设备驱动开始,从对内核加载→helloworld,退出→goodbye开始,看看怎么调试
- 字符设备尝试使用 open、read、write 等功能
- 尝试脱离 AI 辅助工具写代码
- 尝试使用一些API,模拟LED灯或者计数器
- 使用互斥锁、自选锁、信号量、原子操作
- 进行中断处理操作
- 实现定时器
先从第一个小目标开始,做一个字符设备驱动。那helloworld得怎么做呢?代码该写在哪?编译以后模块会放在哪?又该将模块放在哪?怎么去加载?先别急,先收集一下一些实验的关键信息,避免后续好找。同时收集一下参考资料。
参考资料: