其实对于上面介绍的结构体,里面的元素的作用基本可以见名思意了,所以不用赘述了。其实写一个驱动模块就是填充上述的结构体,根据设备的功能和用途写相应的函数,然后对应到结构体中的指针,然后再写一个入口一个出口(就是模块编程中的 init 和 exit)就可以了,一般情况下入口程序就是在注册 platform_device 和 platform_driver(当然,这样说是针对以 platform 模式编写驱动程序)。
08
嵌入式书籍推荐
1. 硬件方面的书: 微机原理、数字电路,高校里的教材。
2. Linux 方面的书:
《ARM 体系架构与编程》
《嵌入式 Linux 应用开发完全手册》
《Linux 设备驱动》,老外写的那本
《linux 设备驱动开发详解》
《linux 内核完全注释》
《Linux 内核情景分析》
在做驱动的时候,肯定会用到与内核相关的东西,或者需要和内核中的某些模块配合,这样你也要理解内核的某些部分是如何实现的,最后,你应该可以很好的掌握 linux 的内核整体框架是什么。
这些都是进步,都是在你一次又一次的开发中需要总结的东西,如果你不总结,永远都是从头开始(或者说永远都是还没看懂别人代码为什么这么做的时候,就去改它,然后可以工作了),就完事了,这样你永远也不可能提高,最后你就有了现在的这种感觉,觉得自己什么都不是,什么都不懂。
还有一点要说明的,现在有许多人搞 linux 开发,却不去用 linux 系统做为自己工作的平台,在这种情况下,你很难理解 linux 内核的实现机制,以及为什么要采用这种方式实现。
你都没用过 linux 系统,就想去实现一个与 linux 运行机理相符合的项目,这是不可能的。就是你这个项目成功了,它也肯定不是最优的,或者是不符合 linux 的使用习惯的(包括内核的扩展和应用程序的实现)。