1. 此文目的

关于U盘,估计大家都用过。

比如,笔者手上的宇瞻AH320的8G的U盘:

图 1. U盘

U盘


最常见的用法就是,直接将此8GU盘插到电脑的USB口上,然后系统(Windows的XP或者Linux)就会自动检测到你的U盘然后生成一个移动盘符,然后你就可以打开对应盘符,读写文件数据了。

而此文呢,目的就是,要搞懂,作为驱动开发者来说,对于这样一个U盘,如何在Linux平台下,去实现U盘驱动,即USB Mass Storage驱动,实现驱动时,需要做哪些事情,以及如何去实现这些事情。

关于USB,其实网上也有不少相关的文章,但是笔者觉得太多帖子,很多帖子,也只是介绍USB协议,而如何在Linux下面实现驱动,却很少提及。或者说是,理论多,实践少,东一块,西一块,很少能把相关知识有机的结合起来,尤其是软件,硬件,系统框架等结合起来一起说明的,导致看了很多这样的帖子,还是似懂非懂。

关于USB或者说多数计算机方面的技术文章,如果有说得明白的,往往都是老外写的。

所以,为了实现有中文的帖子,也能把问题说明白,所以才有此文的诞生。

所以,简述此文目的:

  1. 首先,算为自己学习USB的过程,做个记录和总结,以备后查。
  2. 对于其他不懂Linux和USB的人,看了此文后,可以对Linux,USB等有个基本的认识。
  3. 对于了解Linux和USB的人,搞开发的人,尤其是Linux下USB驱动开发的人,看了此文后,真正能搞懂Linux下USB的Mass Storage的框架,和自己去实现对应的U盘驱动的时候,数据读写的前后流程,而其中,系统做了哪些事情,需要我们自己做哪些事情。

总的说来,本人写任何帖子,要么不写,要么就写的逻辑清晰,让人看得明白。

就像某人说的,看了我写的东西,能达到“醍醐灌顶”的效果,这才是我写东西的终极目标。