SSD_Emmc使用参考


1. 概述

目前SSD20X在Uboot/Kernel阶段均可支持Emmc,也就是说从Uboot起来后支持将Rootfs/Kernel分区从Emmc启动

常见使用场景:Nor(小容量)+ Emmc启动,其中Uboot之前(包含)的分区放到Nor Flash上,Uboot之后的分区放到Emmc上使用

SSD20X只有一路SDIO,所以使用EMMC需要先关闭SDMMC再打开EMMC


2. Uboot阶段配置

关闭SDMMC CONFIG:

#CONFIG_MS_SDMMC is not set

打开EMMC CONFIG:

CONFIG_MS_EMMC=y 
CONFIG_SUPPORT_EMMC_BOOT=y

如下图,通过make menuconfig先关闭掉 MSTAR SDMMC,然后打开 MSTAR eMMC 跟 Support eMMC BOOT

make menuconfig
#Device Driver 
    [*]Mstar driver 
        [*]MSTAR emmc
      [*]support eMMC BOOT
      [ ]MSTAR sdmmc(不要选中)

3. Kernel阶段配置

a. 关闭SDMMC打开EMMC config支持:

CONFIG_MS_EMMC=y
CONFIG_MS_EMMC_UNIFY_DRIVER=y
# CONFIG_MS_SDMMC is not set

b. 打开文件系统支持EMMC分区:

CONFIG_PARTITION_ADVANCED=y
CONFIG_EMMC_PARTITION=y

c. 打开ext4 相关config:

CONFIG_LBDAF=y (支持ext4 大容量的块设备跟文件)
CONFIG_EXT4_FS=y (打开支持ext4文件系统,CONFIG_EXT4_FS 子选项config保持默认即可)

ext4 config打开后的子选项:

CONFIG_EXT4_USE_FOR_EXT2=y
CONFIG_JBD2=y
CONFIG_FS_MBCACHE=y
CONFIG_CRYPTO_CRC32C=y

参照下图,使用make menuconfig去配置:

make menuconfig
#Enable the block layer 
[*]Support for large (2TB+) block devices and files(emmc启动时需要)
[*]Partition Types
    [*]EMMC PARTITION table support
#Device Drivers 
    [*]MMC/SD/SDIO card support 
        [*]HW reset support for eMMC
    [*]Simple HW reset support for MMC
    [*]MMC block device driver
[*]SStar Soc platform drivers 
    [*]EMMC driver
    [*]UNIFY EMMC DRIVER
    [*]MMC block device driver
    [ ]SStar SD/MMC Card Interface Suport(不要选中)
#File systems 
    [*]The Extended 4 (ext4) filesystem(emmc启动时需要,子选项保持默认)

4. 公版已经做好的EMMC分区配置参考

因SSD20X不支持空片从EMMC启动,Uboot之前的必须从SPI FLASH启动,所以EMMC分区需要配合Nand/Nor Flash组合使用,常见使用是小容量Nor+EMMC

Nand + EMMC Nor + EMMC
project ./setup_config.sh
./configs/nvr/i2m/8.2.1/emmc_spinand.glibc-ext4fs.011a.64
./setup_config.sh
./configs/nvr/i2m/8.2.1/emmc_nor.glibc-ext4fs.011a.64
kernel make infinity2m_emmc_spinand_ssc011a_s01a_defconfig make infinity2m_emmc_nor_ssc011a_s01a_defconfig
uboot make infinity2m_spinand_emmc_defconfig make infinity2m_nor_emmc_defconfig