SD CARD Q&A
Q1: SSD210 开发板如何支持SD card?
因为SSD210是QFN68, Pin脚有限,SD card和LCD有共用pin。当前软件默认是配置TTL panel,所以不支持SD card。
68Pin黄色板子的硬件需要对SD_CLK/SD_CMD/SD_D0/SD_D1/SD_D2/SD_D3加上拉电阻R178~R183,demo板默认NC。
若需要SD card,可以参照如下修改:
-
DTS相关配置
arch/arm/boot/dts/pioneer3-ssc021a-s01a-demo-padmux.dtsi
下面这个
#if 0
改为#if 1
arch/arm/boot/dts/pioneer3-ssc021a-s01a-demo.dts
下面mark的地方重新打开
Q2: 硬件上没有配置或者没有用到检测脚(CDZ), 该如何配置?
Kernel更改如下:
请把dts
slot-fakecdzs = <0>,<0>,<0>;
更改为
slot-fakecdzs = <1>,<0>,<0>;
Uboot更改:
合并如下commit添加并打开SDMMC_FAKE_CDZ
diff --git a/drivers/mstar/Kconfig b/drivers/mstar/Kconfig index bd567d4..cd8f1c1 100755 --- a/drivers/mstar/Kconfig +++ b/drivers/mstar/Kconfig @@ -20,6 +20,10 @@ config MS_SDMMC bool 'MSTAR SDMMC' +config SDMMC_FAKE_CDZ + depends on MS_SDMMC + bool 'FAKE_CDZ' + config MS_EMMC bool 'MSTAR eMMC' diff --git a/drivers/mstar/sdmmc/ms_sdmmc_drv.c b/drivers/mstar/sdmmc/ms_sdmmc_drv.c index b55a775..96c9681 100755 --- a/drivers/mstar/sdmmc/ms_sdmmc_drv.c +++ b/drivers/mstar/sdmmc/ms_sdmmc_drv.c @@ -666,8 +666,11 @@ //IPEmType eIP = ge_IPSlot[u8Slot]; SDMMC_SwitchPAD(u8Slot); - - return Hal_CARD_GetGPIOState((GPIOEmType)u8Slot); +#ifdef CONFIG_SDMMC_FAKE_CDZ + return TRUE; +#else + return Hal_CARD_GetGPIOState((GPIOEmType)u8Slot); +#endif } diff --git a/drivers/mstar/sdmmc/ms_sdmmc_ub.c b/drivers/mstar/sdmmc/ms_sdmmc_ub.c old mode 100644 new mode 100755 index 548923e..a44409e --- a/drivers/mstar/sdmmc/ms_sdmmc_ub.c +++ b/drivers/mstar/sdmmc/ms_sdmmc_ub.c @@ -101,7 +101,11 @@ //------------------------------------------------------------------------------------------------ static U8_T _CardDetect(SlotEmType eSlot) { +#ifdef CONFIG_SDMMC_FAKE_CDZ + return TRUE; +#else return Hal_CARD_GetGPIOState((GPIOEmType)eSlot); +#endif }
Q3: 公版上使用带 _wifi_ 的配置编译出的image,当sdio卡槽中没有插入SD卡或是挂载SD卡后,执行如 “df -h”的指令后,会有异常log的输出。如图:未插入SD卡时的log; 挂载后执行“df -h”时的log
因为所用的dts中的sdmmc节点是针对sdio wifi配置出来的,需要对其进行下修改,修改后的配置如下: