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*************************** ") ; 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 就说明注册成功。