今天开始学习linux设备驱动开发,学习用的资料主要是《linux设备驱动开发详解》。由于封面有两只企鹅,周围的同学都叫企鹅书,以后我也用企鹅书来代替吧。
大概浏览了一下企鹅书,觉得编写的脉路还是比较清晰的,层次分布的也合理。今天看了两个多小时,把前两章看完了。第一章主要是概述,觉得非常好的一点是在这一章里不仅讲了什么是驱动开发,还多次比较了有OS的驱动开发和没有OS的驱动开发。当然看这本书自然是为了学习在linux下做驱动开发,之前玩过单片机和写过两个总线的驱动,都是没有系统的驱动,现在看了下在OS下的设备驱动,还是比较复杂的。在1.4.3里,编者列出了要学习linux设备驱动的几个难点要点:
很好的硬件基础,即懂得一些存储器的读写方式,接口的工作方式;
很好的C语言功底,指针、结构体、函数指针、内存动态申请和释放尤为重要。
一定的linux内核基础,至少要明白驱动与内核的接口。
非常好的多任务并发控制和同步的基础。
第二章是讲驱动设计的硬件基础。笼统的介绍了一下各种类型的处理器、存储器和一些接口还有总线的知识,另外还有时序分析和阅读datasheet打方法以及几种仪器的使用。其实这一章的内容对之前接触过这方面东西的人来说过的还是比较快的,但是如果写过总线驱动,没有学过单片机或ARM,或者没有学过接口、组成原理的人来说就难免有些吃力了。因为这一章里几个小节的内容完全可以展开为一本书来讲,如果没有一些基础知识的话,看了也是白看。但是这样系统性的介绍也可以告诉你应该去看哪方面的书、读哪些数据手册。
所以看这本之前,最好是使用过单片机或ARM,写过驱动、还有计算机组成原理的知识,而且从编者的介绍看来,操作系统的学习也是必不可少的。
本文详细介绍了作者在学习Linux设备驱动开发过程中使用的主要资料——《Linux设备驱动开发详解》(俗称“企鹅书”)。通过阅读本书的前两章,作者对学习Linux设备驱动开发所需的背景知识进行了概述,包括良好的硬件基础、深厚的C语言功底、基本的Linux内核知识和优秀的多任务并发控制与同步能力。文章特别强调了学习路径的重要性,并指出对于新手来说,具备单片机或ARM经验、熟悉计算机组成原理以及掌握操作系统知识是必备条件。

2871

被折叠的 条评论
为什么被折叠?



