【问题标题】:Set mmc2 on beaglebone black将 mmc2 设置为 beaglebone black
【发布时间】:2014-01-28 12:04:35
【问题描述】:

我正在使用 Beaglebone Black,我想使用 mmc2 插槽。

根据 AM335xx TRM,beaglebone black 应该有 3 mmc 可用: mmc0(SD卡); mmc1(2G闪存), mmc2.

我正在尝试通过设备树启用 mmc2(我很确定有正确的引脚设置)但是,通过 dmesg 我得到:

/ocp/mmc@47810000: can't find DMA channel
 omap_hsmmc mmc.11: unable to obtain RX DMA engine channel 65

将示波器探头放在接头上(例如 mmc2 clk 信号),我看不到任何转换。 我已经删除了 R 160 以便可以访问 mmc2 cmd,但我也没有看到任何过渡。

我都尝试通过

启用它
 echo > /sys/devices/..../slots

  capemgr.enable_partno

没有成功: 我可以在

中看到
/sys/devices/..../slots

(加载了 L 的意思)..但是看不到标题上的任何信号。

我已经用谷歌搜索过了,但答案根本不清楚。 有什么想法吗?

我的

 uname -a

是:

Linux beaglebone 3.8.13 #1 SMP Tue Jun 18 02:11:09 EDT 2013 armv7l GNU/Linux

感谢您的帮助。

【问题讨论】:

  • 您找到解决方案了吗?我计划在我的项目中使用 BeagleBoard Black,并且我还想使用 3rd MMC。内部 2GB 闪存用于操作系统,micorSD 用于日志,mmc2 用于只读数据。
  • 不,没有解决方案..我只是决定不使用另一张 SD 卡。

标签: beagleboneblack


【解决方案1】:

您需要将 mmc2 DMA 事件配置到某些 DMA 通道,因为这些事件不是直接映射的。

我无法使用设备树覆盖成功地做到这一点。所以我做了一个改变 am335-x-bone-common.dtsi 直接(虽然不确定这是最好的方法):

&edma {
ti,edma-xbar-event-map = <32 12>,   /* gpevt2 -> 12 */
                         <30 20>,   /* xdma_event_intr2 -> 20 */
+                        <1  32>,
+                        <2  33>;   
};

在上面的示例中,事件 1 (SDTXEVT2) 映射到通道 32,事件 2 (SDRXEVT2) 映射到通道 33。

如果您想选择另一个打开的 DMA 通道检查表 11-23。直接映射和表 11-24。来自技术参考手册 Rev J 的 Crossbar 映射。

在您的设备树覆盖文件中,在 mmc3 节点中添加这些通道:

dmas = <&edma 32 
        &edma 33>;
dma-names = "tx", "rx";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-19
    • 2015-05-10
    • 2014-09-10
    • 1970-01-01
    • 2016-07-05
    • 2014-09-19
    • 2016-11-30
    • 1970-01-01
    相关资源
    最近更新 更多