2014-01-28 119 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";