前言
PM8001驱动是linux内核自带的开源SAS HBA驱动,有关SAS协议相关内容可以到www.t10.org上看标准文档,这里不做介绍;HBA相关介绍请自行百度。由于本人刚刚接触这个行业,之前也未从事过驱动开发,所以从一个初学者的角度谈一下对PM8001驱动的理解,如有不足之处欢迎各种意见和建议以及探讨。第一次写博客正式开始....
1.介绍
PM8001是PMC公司的一款SAS/SATA 6Gbits/s 8端口芯片,能支持1.5G/3G/6Gbit设备,支持SSP/STP/SMP,支持1024个SAS地址....
PM8001驱动属于SCSI子系统三层架构中的Lower level,直接负责和HBA通信,并包含一些最基本的逻辑功能。由于SCSI子系统设计上的特点,虽然其划分了层次并有明确的分层架构设计特点,但这里的Mid level实际上承担的是通常意义上Midware的角色。Mid level本身逻辑有点复杂,并且分别和Upper level | Lower level之间有着比较强的耦合。但这种设计也的确真正做到了将Upper level与Lower level的耦合解开。
2.结构
PM8001驱动在linux kernel的driver/scsi/pm8001/*路径中,里面有9个源文件,本文重点介绍最为关键的几个.c文件:pm8001_init、pm8001_sas