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.

[参考译文] Linux/DRA718:EDMA GPMC

Guru**** 2562120 points
Other Parts Discussed in Thread: DRA718

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/623432/linux-dra718-edma-gpmc

器件型号:DRA718

工具/软件:Linux

您好:

我想将 EDMA 用于 连接到 GPMC,的 nand 闪存的数据传输、但我发现使用 dra718,的原始 SDK 时不会生成 DMA 中断

然后、我会发现以下有关 Nand 配置的问题

1.我正在使用的 Nand 闪存容量为256MB,当我不更改范围属性时,有任何问题, 如下所示为红色屏蔽的?

  而 Ranges 属性?的含义是什么

GPMC{
/*
*对于通过 U-Boot 进行的现有 IOdelay 配置、我们不会
*在 dra72-EVM 上支持 NAND。 保持禁用状态。 实现它
*需要 U-Boot 的不同配置。
*
状态="正常";
范围=<0 0x08000000 0x01000000>;//最小 GPMC 分区= 16MB *
NAND@0、0{
/*要使用 NAND,必须按如下方式设置 DIP 开关 SW5:
* SW5.1 (NAND_SELn)=导通(低电平)
* SW5.9 (GPMC_WPN)=关闭(高电平)
*
兼容="ti、OMAP2-nand";
reg =<0 0 4>;/*器件 IO 寄存器*/
interrupt-parent =<&GPMC>;
中断=<0 IRQ_TYPE_NONE>、/* FIFO 事件*/
<1 IRQ_TYPE_None>;// termCOUNT */
RB-GPIO =<&GPMC 0 GPIO_ACTIVE_HIGH>;/* GPMC_wait0引脚*//*器件 IO 寄存器*/
TI、nand-ecc-opt ="bch8";
TI、nand-xfer-type ="prefete-IRQ";
/*
TI、elm-id =<和 elm>;
*
NAND-BUS 宽度=<8>;
GPMC、器件宽度=<2>;
GPMC、SYNC-clk-ps =<0>;
GPMC、cs-on-ns =<0>;
GPMC、cs-rd-off-ns =<80>;
GPMC、cs-wr-off-ns =<80>;
GPMC、Adv-on-ns =<0>;
GPMC、Ad-rd -关闭-ns =<60>;
GPMC、Adv-wr-off-ns =<60>;
GPMC、WE-ON-ns =<10>;
GPMC、WE-OFF-ns =<50>;
GPMC、OE-ON-ns =<4>;
GPMC、OE-OFF-ns =<40>;
GPMC、ACCESS ns =<40>;
GPMC、wr 访问-ns =<80>;
GPMC、第周期-ns =<80>;
GPMC、功率周期-ns =<80>;
GPMC、总线翻转-ns =<0>;
GPMC、cycle2cycle-delay-ns =<0>;
GPMC、clk-activation-ns =<0>;
GPMC、等待监控 ns =<0>;
GPMC、wr-data-mux-bus-ns =<0>;
/* MTD 分区表*/
/*所有 SPL-*分区的大小均为最小长度
可独立编程。 原因
* NAND 闪存这等于擦除块的大小*/
#address-cells =<1>;
大小单元格=<1>;
分区@0{
标签="NAND.ROOTFS";
REG =<0x00000000 0x07800000>;
};
分区@1{
标签="NAND.LIB";
REG =<0x07800000 0x01800000>;
};
分区@2{
标签="NAND.USR";
reg =<0x09000000 0x01000000>;
};
分区@3{
标签="NAND.LIB_BACK_";
reg =<0x0a000000 0x01800000>;
};
分区@4{
标签="NAND.USR_BACT";
REG =<0x0b800000 0x01000000>;
};
分区@5{
标签="NAND.FLAG";
REG =<0x0c800000 0x0600000>;
};
};
};

通过 TRM、我知道 ,连接到 GPMC 的 pfwp 模块,在 GPMC 模块中有一个名为 GPMC_PREFTCH_STATUS 的寄存器,有一个问题,我能理解如下

  当 pfwp 开始工作时, 当 fpwp 完成从 nand 闪存到 FIFO 的传输时、GPMC_prefetch 状态的【13:0】COUNTVALUE 位变为0  

我希望你能尽快作出答复  

谢谢

严晓荣

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

    您的 SDK 是哪个版本?

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

    Linux 的版本是 linux4.4.4.45。 关于 EDMA 和 GPMC 的部分 、我没有任何改变、我在 DTB 中启用 DMA 预取

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

    我已将您的问题转交给 Flash 专家。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    在专家回答之前的平均时间内、我认为该范围与 TRM 中 GPMC 一章中的芯片选择地址映射和解码掩码图中给出的 CS 设置相关。
    这应该表示图中的"请求字段"。

    此致、
    STAN
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好:
    ,是片选地址的大小可重置为 nand flash 的容量?例如,如果我使用的 nand flash 的容量是256MB 如果我从配置 ranges 属性的话
    范围=<0 0x08000000 0x01000000>;
    更改为
    范围=<0 0x08000000 0x10000000>;
    ?μ A
    此致
    Yan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Yan
    您在前面的说明中提到了内核版本,您能否阐明您正在使用的 SDK 版本-默认的 Linux SDK 版本不会开箱即用地启用 NAND 支持。 您将需要修改引脚多路复用器并选择板级开关(如果您使用的是 TI EVM)以启用对 NAND 的支持

    此外,NAND 存储器不是直接存储器映射(不是 XIP,而是已编程的 IO),您所指的一些更改只需要通过 GPMC 进行或进行访问

    您能否检查 e2e.ti.com/.../2282248中的信息是否 有助于启用 NAND 支持
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sriram
    我可以确认的一点是、有关 nand 配置(例如引脚多路复用等)的配置是正确的、因为我已经使用 nandtest 工具测试了 nand 的读取、写入和擦除操作、并且当我在中将 ti、nand-xfer-type 属性配置为预取 IRQ 模式或预取轮询模式时、它成功传递 DTB。 但是、当我将 ti、nand-xfer-type 属性从 prefeter-IRQ 更改为 prefete-dma,时、发生错误。

    另一个要点是 pfwp 的 EDMA 通道已成功分配、并已进入回调 EDMA_issue_pending、并且 EDMA 的 eesr 寄存器已设置,但未生成 EDMA 中断。

    此外、我配置为 DTB 的连接到 GPMC 的 EDMA 物理通道为4、如下所示
    DMA =<&EDMA_Xbar 4 0>;
    dma-names ="rxtx";

    我希望您能尽快获得一些线索、谢谢
    Yan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Yan

    在内核版本4.9上已经验证了支持 DMA 的 NAND,请参阅:http://git.ti.com/ti-linux-kernel/ti-linux-kernel/commits/ti-lsk-linux-4.9.y

    在 EVM 上、我们必须在 VOUT3和 NAND 之间进行引脚多路复用配置(通过 uboot 完成)-如果您认为这正常、我假设您已对引脚多路复用器选择进行了适当修改、使其正常工作。

    您能否与4.9中的配置进行比较以查看是否解决了问题