将PATA/IDE直接连接到GPIO的Linux驱动程序

2020-08-09 12:19:35

免责声明:这个驱动程序是为好玩和学习ATA内部而开发的。如果你正在寻找一种实用的方式来使用PATA设备,那就去找商用的USB适配器吧。

PATA-GPIO是用于GPIO Bitbanged PATA(也称为ATA/ATAPI或IDE)的Linux内核驱动程序。可通过设备树设置引脚配置,使用常规ATA框架。

在Raspberry PI 4(带直接GPIO)上,大约800 Kib/s的读取速度,500 Kib/s的写入速度是可能的。大部分性能瓶颈在于libgpiod(内核GPIO抽象)的使用,libgpiod针对切换LED等任务进行了优化。数据传输远远超出了libgpiod的设计范围。

可以在设备树中指定引脚配置。示例设备树被提供为atapi-direct.dts。这包括本自述底部链接的原理图的引脚配置。

按顺序连接到ATA DA0、DA1和DA2的3个GPIO引脚列表。

在加载(和运行)内核模块之前,请确保加载设备树覆盖。这可以通过config.txt(在Raspberry PI上):dtoverlay=atapi-direct或通过运行./loaddt.sh来完成。后一个脚本还将编译设备树并将其保存到/boot/overays/atapi-direct.dtbo。

此模块需要内核头、常规构建依赖项和设置了配置选项CONFIG_ATA_SFF=y的内核。ATA_SFF选项不是Raspberry PI上的默认选项,因此您需要构建一个自定义内核。

提供了一个名为./run.sh的帮助器脚本,它将删除任何加载的pata-GPIO模块,编译它并加载结果模块。通过运行dmesg可以显示更多状态信息。