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.

[参考译文] TDA4VL-Q1:应用层已重复读取 EMMC 到 CMD30 的临时写保护状态、但结果不一致

Guru**** 2550110 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1565000/tda4vl-q1-the-application-layer-has-repeatedly-read-the-temporary-write-protection-status-of-emmc-through-cmd30-but-the-results-are-inconsistent

器件型号:TDA4VL-Q1


工具/软件:

您好专家、

我的 SDK 版本是 pdk_j721s2_08_05_00_36。

当我尝试使用 MMCSD_v2_getUdaWriteProtectStatus () 函数获取指定地址的临时写保护状态时、我发现第一次正确返回了结果、但第二次读取时返回了一个错误结果。

如下所示、我特意用 u8_BOOT_wpStatus [4]填充了指定的功能值 0xA5。 第一次获得临时写保护状态时、u8_BOOT_wpStatus 更新为正确的返回值、但第二次它直接返回 0xA5A5A5A5A5、表示底层驱动程序在第二次调用期间没有传回正确的值

在这两个读数期间从 EMMC 响应获得的 DATA0 波形如下:

我想问一下、为什么这个 APL 第二次没有返回正确的值? 如何调试该问题?

此致!

Wl.Wang

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Wang:

    能否提供有关以下方面的更多信息:

    • 您使用的 SDK 版本?
    • 您使用的是 SBL 引导流程还是 SPL 引导流程?
    • 您引用的是代码的哪个部分、对应的是哪个文件?
    • 您使用的是定制电路板还是使用 J721S2 TI EVM?

    此致

    Gokul  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hi Gokul、

    SDK Vresign 为 V8.05

    引导模式为 SBL

    引用文件为 packages/ti/drv/mmcsd/ev2/MMCSD_v2.c src、函数为 MMCSD_v2_getUdaWriteProtectStatus ()

    使用客户电路板

    此致

    Wl.Wang

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Wang:

    您能否使用最新的 SDK 版本、因为这是一个很旧的 SDK 版本?

    此外、您是否可以在 TI EVM 上尝试相同方法并分享结果?

    此致

    Gokul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    如会议所述、 MMCSD_v2_getUdaWriteProtectStatus ()  是 TTE 本身添加的代码、本机 SDK 没有此接口、但低级 API MMC SD_v2_transfer() 是该 SDK 的本机接口。

    问题 1:您能否帮助确认 CMD (30) 的标志参数是否正确?

    Q2:在什么情况下 MMC SD_v2_transfer() 不返回数据?

    此致

    Wl.Wang

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好专家、

    将 u8_boot _wpStatr[4]设置为 128 字节对齐、解决问题。

    这可能与使用 DMA 传输数据的函数 MMCSD_v2_transfer() 有关。 您能详细解释一下原因吗?

    此致

    Wl.Wang

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Wang:

    您能否共享函数 MMCSD_V2_getUDAWriteProtect 状态的实现以及您添加的与写保护相关的任何其他函数、以便我可以了解完整信息并发布我的建议。

    此致

    Gokul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hi Gokul、

    函数 MMCSD_V2_getUDAWriteProtect 的实现:

    此致

    Wl.Wang

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Wang:

    理想情况下、32 个写保护位后跟 16 个 CRC 位作为有效载荷传输。 因此 wp_buf 大小应为 48 位 Transaction.blockSize AS 6u 按照下面突出显示的图像写入。

    此致

    Gokul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hi Gokul、

    当我将 transaction.blockSize 设置为 48u、时、系统会经历重复重启

    此致

    Wl.Wang

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Wang:

    当我将 transaction.blocksize 设置为 48U、系统重复重启

    您应该使用 6U 进行测试、因为 6U 表示 6BYTES、即 48 位。

    此致

    Gokul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hi Gokul、

    当我将 transaction.blocksize 设置为 6u、时、系统仍会经历重复重启。

    此致

    Wl.Wang

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Wang:

    当我将 transaction.blocksize 设置为 6U、系统仍然经历重复重新启动。

    感谢您的确认。 这不是问题所在。

    这可能与使用 DMA 传输数据的函数 MMCSD_v2_transfer() 相关。 您能详细解释原因吗?

    您是否可以尝试删除 128 字节对齐并禁用 eMMC 的 DMA? 如果这样有效、我们可以将问题范围缩小到 DMA。

    此致

    Gokul