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.

[参考译文] AM623:如何降低 eMMC 速度

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1509441/am623-how-to-reduce-emmc-speed

器件型号:AM623

工具/软件:

尊敬的专家

我尝试调试一些 eMMC 问题、并尝试降低 eMMC 速度。

相关主题如下所示。

https://e2e.ti.com/support/processors-group/processors---internal/f/processors---internal-forum/1508368/am623-schematic-and-layout-review-for-sdio0-emmc/5797551#5797551

我是否可以知道如何在 u-boot/linux 中修改 dts?

如果 "仅限传统模式"、此代码是否正确?

	sdhci0: mmc@fa10000 {
		compatible = "ti,am62-sdhci";
		reg = <0x00 0x0fa10000 0x00 0x1000>, <0x00 0x0fa18000 0x00 0x400>;
		interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
		power-domains = <&k3_pds 57 TI_SCI_PD_EXCLUSIVE>;
		clocks = <&k3_clks 57 5>, <&k3_clks 57 6>;
		clock-names = "clk_ahb", "clk_xin";
		assigned-clocks = <&k3_clks 57 6>;
		assigned-clock-parents = <&k3_clks 57 8>;
		bus-width = <8>;
		/* mmc-ddr-1_8v; */
		/* mmc-hs200-1_8v; */
		ti,clkbuf-sel = <0x7>;
		ti,otap-del-sel-legacy = <0x0>;
		/delete-property/ ti,otap-del-sel-mmc-hs = <0x0>;
		/delete-property/ti,otap-del-sel-ddr52 = <0x5>;
		/delete-property/ ti,otap-del-sel-hs200 = <0x5>;
		ti,itap-del-sel-legacy = <0xa>;
		/delete-property/ ti,itap-del-sel-mmc-hs = <0x1>;
		status = "ok";
	};

如果 "ddr52 mode only"(仅限 ddr52模式)、则此代码是否正确?

我们仍然保持传统速度模式、对吧?

	sdhci0: mmc@fa10000 {
		compatible = "ti,am62-sdhci";
		reg = <0x00 0x0fa10000 0x00 0x1000>, <0x00 0x0fa18000 0x00 0x400>;
		interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
		power-domains = <&k3_pds 57 TI_SCI_PD_EXCLUSIVE>;
		clocks = <&k3_clks 57 5>, <&k3_clks 57 6>;
		clock-names = "clk_ahb", "clk_xin";
		assigned-clocks = <&k3_clks 57 6>;
		assigned-clock-parents = <&k3_clks 57 8>;
		bus-width = <8>;
		/* mmc-ddr-1_8v; */
		/* mmc-hs200-1_8v; */
		ti,clkbuf-sel = <0x7>;
		ti,otap-del-sel-legacy = <0x0>;
		/delete-property/ ti,otap-del-sel-mmc-hs = <0x0>;
		ti,otap-del-sel-ddr52 = <0x5>;
		/delete-property/ ti,otap-del-sel-hs200 = <0x5>;
		ti,itap-del-sel-legacy = <0xa>;
		/delete-property/ ti,itap-del-sel-mmc-hs = <0x1>;
		status = "ok";
	};

如果引导成功、如何检查 eMMC 工作模式?

非常感谢

Gibbs

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

    您好:

    可按如下所示检查 eMMC 信息:

    root@am64xx-evm:~# cat /sys/kernel/debug/mmc0/ios
    clock:          200000000 Hz
    actual clock:   200000000 Hz
    vdd:            7 (1.65 - 1.95 V)
    bus mode:       2 (push-pull)
    chip select:    0 (don't care)
    power mode:     2 (on)
    bus width:      3 (8 bits)
    timing spec:    9 (mmc HS200)
    signal voltage: 1 (1.80 V)
    driver type:    0 (driver type B)

    "timing spec:"值将显示 MMC 的初始化模式。

    此致、

    Prashant

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Unknown 说:
    如果 "ddr52 mode only"、则此代码是否正确?

    请注意、AM62x 不支持 DDR52模式。 最新版本 v11.0中 AM62x 的 U-Boot 和内核 dts 均已删除。

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

    您好、Prashant

    如果我们想测试速度较低的 eMMC (SDHCI0 ),我们可以修改代码

    (1)"仅限传统模式"

    sdhci0: mmc@fa10000 {
    		compatible = "ti,am62-sdhci";
    		reg = <0x00 0x0fa10000 0x00 0x1000>, <0x00 0x0fa18000 0x00 0x400>;
    		interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
    		power-domains = <&k3_pds 57 TI_SCI_PD_EXCLUSIVE>;
    		clocks = <&k3_clks 57 5>, <&k3_clks 57 6>;
    		clock-names = "clk_ahb", "clk_xin";
    		assigned-clocks = <&k3_clks 57 6>;
    		assigned-clock-parents = <&k3_clks 57 8>;
    		bus-width = <8>;
    		/* mmc-ddr-1_8v; */
    		/* mmc-hs200-1_8v; */
    		ti,clkbuf-sel = <0x7>;
    		ti,otap-del-sel-legacy = <0x0>;
    		/delete-property/ ti,otap-del-sel-mmc-hs = <0x0>;
    		/delete-property/ti,otap-del-sel-ddr52 = <0x5>;
    		/delete-property/ ti,otap-del-sel-hs200 = <0x5>;
    		ti,itap-del-sel-legacy = <0xa>;
    		/delete-property/ ti,itap-del-sel-mmc-hs = <0x1>;
    		status = "ok";
    	};

    (2)高速模式

    sdhci0: mmc@fa10000 {
    		compatible = "ti,am62-sdhci";
    		reg = <0x00 0x0fa10000 0x00 0x1000>, <0x00 0x0fa18000 0x00 0x400>;
    		interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
    		power-domains = <&k3_pds 57 TI_SCI_PD_EXCLUSIVE>;
    		clocks = <&k3_clks 57 5>, <&k3_clks 57 6>;
    		clock-names = "clk_ahb", "clk_xin";
    		assigned-clocks = <&k3_clks 57 6>;
    		assigned-clock-parents = <&k3_clks 57 8>;
    		bus-width = <8>;
    		/* mmc-ddr-1_8v; */
    		/* mmc-hs200-1_8v; */
    		ti,clkbuf-sel = <0x7>;
    		ti,otap-del-sel-legacy = <0x0>;
    		ti,otap-del-sel-mmc-hs = <0x0>;
    		/delete-property/ti,otap-del-sel-ddr52 = <0x5>;
    		/delete-property/ ti,otap-del-sel-hs200 = <0x5>;
    		ti,itap-del-sel-legacy = <0xa>;
    		ti,itap-del-sel-mmc-hs = <0x1>;
    		status = "ok";
    	};

    "传统速度模式"是否等于"默认速度模式"?

    谢谢你。

    Gibbs  

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

    您好:

    更改看起来很好。

    是否"传统速度模式"等于"默认速度模式"?

    不确定您的意思是"默认速度模式"。

    默认情况下、eMMC 初始化为可能的最高模式(此处为 HS200)。

    此致、

    Prashant

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

    您好、 Prashant

    我认为、 如果您连接 eMMC 存储、MMCSD0 (SDIO 0)可以支持旧 SDR、高速 SDR、带8位的 HS200   

    我想我们可以在"Legacy SDR"、"High Speed SDR"中设置设备树、关注 eMMC 工作

    "默认速度"仅在连接 SD 存储时支持带4位的 SD 卡   

    因此、这取决于您使用的存储类型。

    Gibbs

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

    感谢您的解释、Gibbs。 这是有意义的!!

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

    您好、 Prashant

    这是来自客户的反馈。

    他们发现 eMMC 仍然运行"高速 DDR 模式"。

    按照数据表说明、此模式应在 SD 卡上运行。

    所以我觉得很 奇怪。

    我已经将 So Scope 数据发送给您、您能帮我重新检查一下吗?

    谢谢你。

    Gibbs

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

    您好、

    他们发现 eMMC 仍然运行"高速 DDR 模式"。

    您能分享这方面的内核日志吗?

    如果可能、最好共享日志、以便更好地了解图片并确保正确地进行观察。

    谢谢!

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

    您好、 Prashant

    让我更新(总结)最新状态。

    客户遇到两个 eMMC 启动问题。

    (1) eMMC (KIOXIA eMMC)随机引导失败

    (2)甚至(KIOXIA eMMC) 引导成功、我们发现 Linux 内核有时会显示消息"mmc0:正在运行 CQE 恢复"

    我们找到了什么?

    (1)  客户声称他们会在 eMMC 早期启动时检测到 DDR (双倍数据速率)传输、但我们的数据表告诉我们 eMMC 仅支持旧 SDR/高速 SDR/HS200。 因此、他们怀疑  DDR 模式操作导致引导失败。

    (2)我们还知道 DDR 操作模式存在命令行"保持时间"问题。  

    我们该怎么办?

    (1)降低 eMMC 速度(旧 SDR)可以解决这个问题。 (UBoot+Linux 内核)

    (2)强制初始化引导(u-boot)运行旧版 SDR、Linux 内核运行 HS200也可以。

    需要您提供哪些帮助?

    HS200是 DDR 模式吗?

    2.需要您再次确认我提供的数据(*.cvs ),我们的设备(AM62)是否在早期启动阶段运行 DDR 模式?

    因为我认为 u-boot 仅支持 旧 SDR /高速 SDR。 一旦系统转至 Linux 内核、它应该直接变为 HS200。

    非常感谢

    Gibbs  

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

    嗨、Gibbs、

    1) DDR52模式可以工作。 只是没有针对此模式执行硬件验证、因此我们现在删除了对此模式的软件支持。

    2)我认为所有这些错误都来自在 HS200模式下初始化的 eMMC。 如果是、您已有此相关主题、因此我们可以在此处继续讨论。

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1504295/am623-mmc0-running-cqe-recovery-problem

    此致、

    Prashant