Other Parts Discussed in Thread: TUSB9261, TUSB9261DEMO
器件型号: TUSB9261
工具/软件:
您好的团队、
我连接了 CPU 和 SSD,并发送了 ATA PATHROGH (12 ),有些命令通过,有些没有。
我尝试发送 ATA 命令(SSD 原始命令)+其他数据(512 字节)、但似乎失败的数据发送不正确。
是否有任何可能的原因?
此致、
Ryu。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Other Parts Discussed in Thread: TUSB9261, TUSB9261DEMO
器件型号: TUSB9261
工具/软件:
您好的团队、
我连接了 CPU 和 SSD,并发送了 ATA PATHROGH (12 ),有些命令通过,有些没有。
我尝试发送 ATA 命令(SSD 原始命令)+其他数据(512 字节)、但似乎失败的数据发送不正确。
是否有任何可能的原因?
此致、
Ryu。
尊敬的 Yuya:
我正在研究您发送的 SG3_utils 页面、我想这有助于我了解此命令的功能。 我遇到的一个问题是如何选择命令字节值:
A1 0A 25 00 00 00 00 00 00 81 00 00(适用于 set_auth.bin 命令)
A1 28 2D 51 00 00 00 00 00 81 00(auth_device.bin 命令)
我将这两者进行比较、并注意到命令字节 0A 用于写入、即 SCSI_WRITE6、28 用于 SCSI_READ10 命令。 是否可以为 SCSI_WRITE10 使用字节 2A、并查看是否提高了性能? 或者是否有更深刻的理由说明为何需要改用 WRITE6?
此外、我想知道您是否有人请求了 TUSB9261 固件的源代码。 了解命令是否可以使用可能会有所帮助、尽管通过查看代码我认为所有这些命令字节都应该能够使用。 我注意到 SCSI 规范中也没有命令字节 81、这个字节来自哪里?
谢谢、
Ryan
尊敬的 Yuya:
至于源代码、我们一方没有人提到它。
如果您需要、可以从 TUSB9261 网页上申请、我们可以提供访问权限。 它将为您提供 TUSB9261 固件的源代码、包括 SCSI 功能、我认为这对于确定问题的位置很有用。
e2e.ti.com/.../2063.Console.loge2e.ti.com/.../2063.Debug.log
我查看了之前发布的日志并将它们与 SCSI 直通命令的固件进行比较、我注意到时间戳 13:45:29 与发送失败命令时看到的延迟相匹配、固件在调试中输出 byte_cnt 为零、尽管我认为它应该为 512、而在好命令中、byte_cnt 看起来像 512。 命令字节是否需要采用不同的索引或顺序来提供所需的字节计数?
谢谢、
Ryan
尊敬的 Yuya:
明白了。
我们实施了一个程序DeviceIoControl、使用该程序将 ATA 任务寄存器直接传递到操作系统、将原始 ATA 命令直接发送到 SSD、并成功运行。
奇怪的是、该命令是直接从 PC 发送到 SATA 驱动器、还是也通过 TUSB9261?
我会查看之前发布的日志并将它们与 SCSI 直通命令的固件进行比较、我注意到时间戳 13:45:29 与发送失败命令时看到的延迟相匹配、固件在调试中输出的 byte_cnt 为零、尽管我认为它应该是 512 字节、但它看起来很好。 命令字节是否需要采用不同的索引或顺序来提供所需的字节计数?
是否对我之前使用命令字节发送的这个 POST 进行了任何与相关的测试? 是否认为需要将命令编辑为不同格式的合理性?
谢谢、
Ryan
您好、Ryan、
到目前为止、我们在以下条件下进行了测试(①):
进行开发
连接的解决方案
我们现在已更改为以下条件(②):
使用 Windows PC
直接 SATA 连接、不使用 TUSB9261
在条件 ① 下、命令失败、但在条件 ② 下、命令成功。

奇怪的是、此命令是直接从 PC 转到 SATA 驱动器、还是也通过 TUSB9261?
实际上、识别器件和读取日志等其他命令已成功发送、因此问题不太可能与命令字节本身有关。
此致、
Yuya。
尊敬的 Yuya:
理解、有趣的是、使用 DeviceIOControl 函数的直接写入工作正常。
目前我想 TUSB9261 固件在使用 SG_RAW 命令支持这些特定字节时遇到问题、尤其是在将其用作写入时。 是否也可以尝试使用 sg_dd 命令(该命令也使用了由 sg_raw 命令调用 但失败的写入 SCSI 命令)来查看该命令是否也会导致问题?:linux.die.net/.../sg_dd 此命令在固件源代码中按支持的方式定义、因此写入命令不应失败。 也找到了以下有助于了解更多实用程序的资源: SG.Danny.cz/.../ sg3_utils.html
我担心命令字节的主要原因是、根据所使用的写入函数 (WRITE6、10、12、16)、TUSB9261 的固件会查看不同的命令字节来确定传输长度。 源固件详细说明了哪些命令字节、最好请求查看这些字节。
谢谢、
Ryan
您好、Ryan、
我目前的想法是 TUSB9261 固件在使用 sg_raw 命令支持这些特定字节时遇到问题、特别是在它用作写入时。 是否也可以尝试使用 sg_dd 命令(该命令也使用了由 sg_raw 命令调用 但失败的写入 SCSI 命令)来查看该命令是否也会导致问题?:linux.die.net/.../sg_dd 此命令在固件源代码中按支持的方式定义、因此写入命令不应失败。 也发现此资源有助于了解更多有关实用程序的信息: sg.danny.cz/.../sg3_utils.html
欢迎您尝试任何可以尝试的东西。
我担心命令字节的主要原因是、根据所使用的写入函数 (WRITE6、10、12、16)、TUSB9261 的固件会查看不同的命令字节来确定传输长度。 源固件详细说明了哪些命令字节、最好请求查看这些字节。
关于固件、该固件应已更新为之前的 v1.06。
是否无法在该固件的源代码中进行检查?
此致、
Yuya。
尊敬的 Yuya:
欢迎您随意尝试。
我会尝试一下、并看看是否可以通过 SG_RAW 使写入命令正常工作、就像我们之前使用此命令的建议一样、这样该命令应该可以正常工作。
关于固件、该固件应该已更新为 v1.06。
是否无法在该固件的源代码中检查此项?
可以在源代码中检查这一点、是的、这也是我建议请求它以查看您是否想要了解固件如何解释所发送命令的部分原因。 我也可以在我这边看看这个。
谢谢、
Ryan
您好、
重启 RPi Linux 平台并重新连接 SSD 后、我看到成功的命令失败:
sg_raw -s 512 -i auth_device.bin /dev/sda1 A1 28 2d 51 00 00 00 00 00 81 00

sg_raw -r 512 -i /dev/sda1 A1 28 2D 52 00 00 00 00 00 81 00

lsblk

sg_raw -r 512 /dev/sda1 A1 28 2D 00 00 00 00 00 00 EC 00 00

这意味着 UAS 设置不正确、因此我研究了确认。
这似乎与我们之前测试的结果不一致。 你在这里有什么见解吗?
我在网上找到了有关如何检查 UAS 状态的说明。 这是我找到的命令:
lsusb -t

We see the drivers for the mass storage device (SSD) is usb-storage not UAS. Do you know how to chnage this?
您好、
我使用相同的设置测试了三个正常工作的 TUSB9261 演示板、这三个都遇到了相同的错误:
对于命令 sg_raw -s 512 -i auth_device.bin /dev/sda A1 28 2d 51 00 00 00 00 00 81 00
错误为:
>>传输错误:HOST_STATUS=0x07 [DID_ERROR]
DRIVER_STATUS=0x00{DRIVER_OK]
SCSI 状态:良好
对于命令 sg_raw -r 512 -i /dev/sda A1 28 2d 52 00 00 00 00 00 81 00
错误为:
A1:无此类文件或目录
我测试了使用的 USB 电缆、所有电缆似乎都正常工作。
您好、
我能够通过转到另一个工作台来解决问题。 问题似乎是由 RPi 功耗不正确引起的。
我正在调试正在发送的命令、我注意到所有 3 个字节都是通过 ATA 命令传递的。 为什么失败的命令的功能部分为空?
此外、工作命令是 PIO DATA INS 命令、失败的命令是 PIO DATA OUT 命令。 SSD 如何处理此命令?
此外、我还想确保 TUSB9261 和 SSD 之间的协议版本控制兼容。 使用的 SSD 支持以下哪个版本的规格?
1) 在附件?
2) 多媒体命令?
3) SCSI/ATA 转换?
4) SCSI 块命令?
5) SCSI 主命令?
挂起问题报告 SCSI 错误 0x03 [DID_TIME_OUT]
该错误很可能是意外的器件选择超时导致的。 这意味着此命令的端点不正确。 你为什么会这样呢?
我已尝试将此命令转换为 ATA 16 直通、但也没有成功。
命令:sudo sg_raw -v -t 30 -s 512 -i set_auth.bin /dev/sda 85 0A 25 00 00 00 00 00 00 00 00 00 81 00 00
错误变为:
NVMe 结果= 0x2
NVMe 完成队列 4 双字节:70 00 0b 00 00 00 00 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
供参考:
您好、
关于功能= 0、我不确定具体的原因。
但是、考虑到其他具有非零功能值的命令已经成功、似乎值得进一步研究。
我们还测试了功能值为 31、32、51 和 52 的命令、所有这些命令都成功运行、只有功能= 0 的命令失败。
SSD 是本机 ATA 设备、不包括内部 SCSI 层。 因此、SSD 本身不支持 SCSI 相关规范 (SPC/SBC/SAT)。
AT 附件:符合 ATA/ATAPI-8 (ATA8-AST、SATA 3.0 / 6 Gb/s)
多媒体命令 (MMC):不受支持(此规范适用于光驱)
SCSI/ATA 转换 (SAT):不受 SSD 支持(SSD 为 ATA 本机;SAT 在 USB 至 SATA 桥接器端实现)
SCSI 块命令 (SBC):不支持(无 SCSI 层)
SCSI 主命令 (SPC):不受支持(原因相同)
作为参考、TUSB9261 实现了 SATA 3.0 / ATA/ATAPI-8 桥接器(大约等效于 SAT-2)、因此与此 SSD 不存在协议级不兼容性。
请在下面找到所附的日志。
您好、
感谢您的确认!
[报价 userid=“659006" url="“ url="~“~/support/interface-group/interface/f/interface-forum/1468075/tusb9261-failure-to-send-data/6085128但是、考虑到其他具有非零功能值的命令已经成功、似乎值得进一步研究。
我们还测试了功能值为 31、32、51 和 52 的命令、所有这些命令都成功运行、只有功能= 0 的命令失败。
[/报价]这可能是潜在的根本原因。 我将研究固件以查看命令的“特性“部分中的零值是否存在问题。
如果您希望可以共享此固件、以便我们双方都可以查看该固件。
您好、
该固件是受保护的信息、因此我无法通过 E2E 发送。
您必须在此页面上申请固件: https://www.ti.com/product/TUSB9261

点击此链接后、您需要登录/创建 TI 账户
然后将提出申请、我将批准此申请。
之后、该页面应如下所示、您可以将源代码下载为.zip 文件。
