Openwrt如何添加SD_Card?看这里

一、硬件平台

1.1 控制器:MT7688

   
   
   
   

    二、软件平台

    2.1、开发环境:Ubuntu12.04 
    2.2、软件版本:openwrt-hiwooya-stable
    
       
       
       
       

      三、功能说明

      本文章所选择的目标芯片为MT7688,profile 选择的为“LINKIT7688.dts”。
      对于openwrt增加对于sd card的支持,需要配置四个方面:
      1、dts文件增加对sdhci的支持,开启硬件对sd card接口驱动支持,硬件初始化。
      2、增加对sd card的驱动程序支持,用于检测sd card插拔和驱动。
      3、增加对语言格式的支持,如utf8、cp437、iso8859-1,用于识别sd card里面的内容,避免乱码。
      4、增加对vfat文件系统的支持,否则无法挂载sd card。
      
         
         
         
         

        四、操作步骤

        4.1 修改dts文件

        对于默认的小米开发板的dts文件,没有对sd接口的硬件初始化,故需要修改“openwrt/target/linux/ramips/dts/HOWOOYA7688.dts”文件。
        在文件中,增加如下代码:

        step1:修改菜单配置
        sudo make menuconfig
        支持sd卡
        Kernel modules  ---> 
                Other modules  --->
                        <*> kmod-button-hotplug
                        <*> kmod-sdhci-mt7620
        支持语言
        Kernel modules  ---> 
                Native Language Support  --->
        
                        <*> kmod-nls-cp437
                        <*> kmod-nls-iso8859-1
                        <*> kmod-nls-utf8
        支持文件系统
        Kernel modules  ---> 
                Filesystems  --->
        
                        <*> kmod-fs-vfat
        
        step2:修改内核配置
        sudo make kernel_menuconfig
        支持热拔插
        Device Drivers  ---> 
                <*> MMC/SD/SDIO card support  --->
                        <*>   MTK SD/MMC
                            Card Detect with Polling
        
        step3:修改设备树HIWOOYA7688.dts
                sdhci@10130000 {
                        status = "okay";
        //                mediatek,cd-high;
                        mediatek,cd-low;
                };
        
        step4:修改设备树mt7628an.dtsi如下
                sdhci@10130000 {
                        compatible = "ralink,mt7620-sdhci";
                        reg = <0x10130000 4000>;
        
                        interrupt-parent = <&intc>;
                        interrupts = <14>;
        
                        pinctrl-names = "default";
                        pinctrl-0 = <&sdxc_pins>;
        
                        status = "disabled";
                };
        
        
                        sdxc_pins: sdxc {
                                sdxc {
                                        ralink,group = "sdmode";
                                        ralink,function = "sdxc";
                                };
                        };
        

        4.2 增加sd card 驱动支持

        在openwrt sdk包中,执行命令 make menuconfig命令

        Kernel modules —>
        Other modules —>
        <> kmod-button-hotplug
        <
        > kmod-sdhci-mt7620
        配置如图4-1所示。

        Openwrt如何添加SD_Card?看这里_第1张图片
        图4-1 增加sd card 接口驱动

        注意事项:在make menuconfig中配置了sd card 驱动,请勿再 make kernel_menuconfig中配置sd card驱动,否则在开机的时候,出现提示信息:

        mmc_core: exports duplicate symbol __mmc_claim_host (owned by kernel)
        sdhci-pltfm: SDHCI platform and OF driver helper
        mmc_core: exports duplicate symbol __mmc_claim_host (owned by kernel)
        mmc_core: exports duplicate symbol __mmc_claim_host (owned by kernel)
        mmc_core: exports duplicate symbol __mmc_claim_host (owned by kernel)
        mmc_core: exports duplicate symbol __mmc_claim_host (owned by kernel)
        mmc_core: exports duplicate symbol __mmc_claim_host (owned by kernel)
           
           
           
           

          如提示信息所示,sd 卡mmc_core重复导出,所以最终导致无法sd 卡驱动成功!!!!

          4.3 增加语言模块支持

          对于openwrt系统,仅仅开启sd card接口驱动是不够的,还需要增加语言的支持,否则sd card无法识别里面的文件内容,或者出现乱码显现。
          在openwrt sdk包中,执行命令 make menuconfig命令。
          Kernel modules —> Native Language Support —>,
          <*> kmod-nls-cp437
          <*> kmod-nls-iso8859-1
          <*> kmod-nls-utf8
          设置如图4-2所示。

          Openwrt如何添加SD_Card?看这里_第2张图片
          图4-2 增加语言支持

          4.4 增加 vfat文件系统的支持

          对于增加vfat文件系统的支持,有两个方法,选择其中一种即可。

          4.4.1、menuconfig 增加支持

          执行 make menuconfig
          Filesystems —>
          配置如图4-3所示。

          Openwrt如何添加SD_Card?看这里_第3张图片
          图4-3 增加vfat文件系统的支持

          4.4.2 kernel_menuconfig增加支持

          执行make kernel_menuconfig
          File systems —> DOS/FAT/NT Filesystems —>

          Openwrt如何添加SD_Card?看这里_第4张图片
          图4-4 增加vfat文件系统的支持

          如此,openwrt配置完成。

          五、测试

          烧录程序之后,关于SD卡的开机信息如下:

          [    9.050000] MTK MSDC device init.
          [    9.090000] mtk-sd: MediaTek MT6575 MSDC Driver
          [    9.090000] sdhci: Secure Digital Host Controller Interface driver
          [    9.100000] sdhci: Copyright(c) Pierre Ossman
          [    9.110000] sdhci-pltfm: SDHCI platform and OF driver helper
          [    9.140000] mmc0: new high speed SD card at address b368
          [    9.150000] mmcblk0: mmc0:b368 00000 1.86 GiB (ro)
          [    9.160000]  mmcblk0:
             
             
             
             

            将sd卡进行挂载

            root@OpenWrt:/# mount -t vfat /dev/mmcblk0 /mnt/
               
               
               
               

              查看sd卡的内容,如图5-1所示。

              Openwrt如何添加SD_Card?看这里_第5张图片
              图5-1 sd卡内容

              你可能感兴趣的:(Linux,MT7688)