缘由
早先做的测试程序是扫描所有挂载点,确定接入的固态硬盘的路径,然后进行数据读写校验。这要求预先在固态硬盘上创建一个标记文件,如 here_sata_ssd.flag。这对于测试准备来说很不友好,尤其是需要测试的板卡多了起来。维护测试专用固态硬盘增加了工作量。
改进
我们这里根本是为了验证板卡的 SATA 接口功能,当接入 SATA 盘时,系统会对设备进行识别。这里识别就可以验证通道正常了。挂载那是后话,不用管了。如果是人工检测,执行以下命令即可。
cat /proc/scsi/scsi
这将会列出 scsi 总线上的设备,厂商、类别型号都有,自己前面接入了什么固态硬盘,一看便知。
问题
上面的方法对于自动化测试来说,还有一个问题。自动化测试程序预先不知道接入的是什么 SATA 盘,也就不好判断程序扫描到的是 SATA 盘还是 U 盘。固定下来就又走了早先的老路了。
直接算数量是一个思路,但出现问题时,USB 接口、SATA 接口具体是谁出问题分不清。
再改进
这里使用到一个较 lsscsi 的工具,有些系统已经有内置。执行以下命令进行查看:
lsscsi -t
可以看到列出的 USB、SATA 设备,自动化测试程序里再用一个 grep 就可以确认 SATA 盘的识别了。
lsscsi 编译
官网:http://sg.danny.cz/scsi/lsscsi.html
下载源码包后解压,进入源码包执行以下命令:
source ~/57x/ti-processor-sdk-linux-rt-am57xx-evm-04.03.00.05/linux-devkit/environment-setup
./configure --host=arm-linux
make
上面第一条命令是加载 57x 平台的开发环境,主要是交叉编译器。make 完成后在 src 目录生成 lsscsi 可执行程序,复制到板卡即可使用。
陷阱
在执行 lsscsi -t 命令时,还可以添加 -H 选项,按照说明是可以列出其 HOST 相关信息。但是,前面说的通过 grep sata 字符串的方式,会出现缺陷。因为此时拔下 SATA 数据线,依然列出了 sata 字符。
以上编译、运行基于广州创龙的 TL5728 板卡测试。
2020年8月4日