1. 学会写简略的makefile
2. 编一使用程序,能够用makefile跑起来
3. 学会写驱动的makefile
4. 写一简略char驱动,makefile编译经过,能够insmod, lsmod, rmmod. 在驱动的init函数里打印hello world, insmod后应该能够经过dmesg看到输出。
5. 写一完好驱a动, 加上read, write, ioctl, polling等各种函数的驱动完结。 在ioctl里完结从用户空间向内核空间传递结构体的完结。
6. 写一block驱动, 加上read,write,ioctl,poll等各种函数完结。
7. 简略学习下内存办理, 这个是最难的,理解各种memory alloc的函数完结细节。这是linux开发的基本功。
8. 学习锁机制的使用,这个不是最难的可是最简略犯错的,涉及到许多同步和并发的问题。
9. 看内核中实践使用的驱动代码。 你会发现最基本的你现已知道了, 大的结构都是相同的, 无非是read, write, ioctl等函数的完结, 但里边包含了许多许多细微的完结细节是之前不知道的。 这时候就要考虑到许多其他问题而不仅仅是基本功能的完结。
引荐您看2.6.20中integrated的一个驱动 kvm, 记住是在driver/lguest下,很好玩的, 便是linux下的虚拟机驱动, 代码不长,但功能强大。有才能的能够自己写一操作系统依照要求做成磁盘镜像加载到虚拟机中, 然后客户机能够有自己的4G虚拟地址空间。
10. 看完驱动欢迎您进入Linux kernel学习中来。
最简略的办法,跟着ldd(linux devive driver)做一遍。