2014-01-28 62 views
2

我正在使用Beaglebone Black,我想使用mmc2插槽。在beaglebone黑色上设置mmc2

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

我试图使通过设备树mmc2的(我敢肯定有正确的PIN码设置),但是,这样做 的dmesg 我获得:

/ocp/[email protected]: 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含义装)..但没有办法看到头上的任何信号。

我已经使用了Google,但答案并不明确。 有什么建议吗?

uname -a 

是:

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

感谢您的帮助。

+0

你找到解决办法了吗?我打算为我的项目使用BeagleBoard Black,我也想使用第三代MMC。内部2GB闪存用于操作系统,micorSD用于日志,mmc2用于只读数据。 – chatoooo

+0

不,没有解决方案..我只是决定不使用另一个SD卡。 – user3244354

回答

3

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

我无法成功使用设备树覆盖图。所以,我直接制成在 am335-X-骨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。从技术参考手册横梁映射启J.

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

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