sbc 7109-454 sd 卡啟動qt系統后一直識別不了 emmc 也就是mmc1口, 一開始以為是硬件初始化的問題,后面又以為是io口復用,最后才知道是根本沒有注冊mmc1設備。
更改下面的代碼就能把emmc 成功注冊並識別。
arch/arm/mach-omap2/board-am335xevm.c
1 static void mmc0_init(int evm_id, int profile) 2 { 3 switch (evm_id) { 4 case BEAGLE_BONE_A3: 5 case BEAGLE_BONE_OLD: 6 case EVM_SK: 7 case BEAGLE_BONE_BLACK: 8 setup_pin_mux(mmc0_common_pin_mux); 9 setup_pin_mux(mmc0_cd_only_pin_mux); 10 printk("mmc0 config over by chen 2016/9/6***************************\n") ; 11 break; 12 default: 13 setup_pin_mux(mmc0_common_pin_mux); 14 //setup_pin_mux(mmc0_cd_only_pin_mux); 15 //setup_pin_mux(mmc0_wp_only_pin_mux); 16 break; 17 } 18 //omap2_hsmmc_init(am335x_mmc); 19 20 return; 21 }
把
omap2_hsmmc_init(am335x_mmc); 這個函數放在mmc1_init 后面就行了。
1 static void mmc1_init(int evm_id, int profile) 2 { 3 evm_id = BEAGLE_BONE_BLACK; 4 5 ...... 6 7 8 } 9 /* mmc will be initialized when mmc0_init is called */ 10 omap2_hsmmc_init(am335x_mmc); 11 return; 12 }
這樣的話,am335x_mmc 數組里面的值就可以全部注冊上去。
進入文件系統,看一下成功沒有
root@sbc-7109:~# ls /dev/mmcblk*
/dev/mmcblk0 /dev/mmcblk0p2 /dev/mmcblk1 /dev/mmcblk1boot1
/dev/mmcblk0p1 /dev/mmcblk0p3 /dev/mmcblk1boot0
看到mmcblk1 就說明注冊成功。