在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

            EEPW首頁 > 博客 > 擴(kuò)展外部eMMC存儲(chǔ)

            擴(kuò)展外部eMMC存儲(chǔ)

            發(fā)布人:toradex 時(shí)間:2023-11-23 來源:工程師 發(fā)布文章

            By Toradex胡珊逢

            簡介

            存儲(chǔ)器的嵌入式設(shè)備中扮演著重要角色,上面不僅安裝有操作系統(tǒng),同時(shí)也保存著應(yīng)用程序和運(yùn)行日志等。對(duì)于存儲(chǔ)器如 eMMC,寫入的數(shù)據(jù)量決定其使用壽命,對(duì)于有大量日志記錄的應(yīng)用,通??梢赃x用一個(gè)大容量的存儲(chǔ)設(shè)備。文件將介紹如何在 Toradex 的計(jì)算機(jī)模塊 Apalis iMX6 上擴(kuò)展一個(gè)外部 eMMC。

             

            Apalis iMX6 具有四個(gè) SDIO 接口,其中一個(gè)已經(jīng)用于模塊本身的 eMMC。其余三個(gè)均可以用于連接另外的 eMMC。為了提高讀寫速度,SDIO 接口可配置為 8bit 模式。

            擴(kuò)展外部eMMC存儲(chǔ)315.png 

            eMMC 模塊硬件連接

            eMMC 內(nèi)部有一個(gè)控制器,負(fù)責(zé)執(zhí)行來自 host 的 MMC 指令、將數(shù)據(jù)寫入到存儲(chǔ)單元、維護(hù)映射關(guān)系確保每個(gè)存儲(chǔ)單元可以均衡得寫入等。該控制器通常需要兩路電壓。如下圖的 VCCQ 用于驅(qū)動(dòng)控制器本身,該電壓也用于面向 host 的 SDIO 接口,因此需要于 host 端的 SDIO 電平一致。Apalis iMX6 的 SDIO 為 3.3V,Toradex 另外一個(gè)系列 Verdin 模塊的接口則為 1.8V。目前絕大多數(shù)的 eMMC 都可以支持 1.8V 和 3.3V 兩種電壓。圖中另外一個(gè)電源 VCC 用于存儲(chǔ)單元 NAND 的供電。

            擴(kuò)展外部eMMC存儲(chǔ)606.png 

             

             

            Apalis Evalution Board 上 Apalis iMX6 的其中一路 SDIO 通過 X5 排針座引出。由于 eMMC 通常不需要熱拔插,所以 SDIO 接口的 CD 引腳就不需要再被使用。

            擴(kuò)展外部eMMC存儲(chǔ)716.png 

             

            我們選取市場上常見的 eMMC 模塊,制作適合 Apalis Evalution Board 的轉(zhuǎn)接板。在實(shí)際應(yīng)用中,可以把 eMMC 芯片直接焊接在定制的底板上,以增加牢固性和穩(wěn)定性。

            擴(kuò)展外部eMMC存儲(chǔ)813.png 

             

            下面是 eMMC 模塊轉(zhuǎn)接板原理圖。其中 U1 是 eMMC 模塊底部的 B2B 鏈接器,上面的引腳都直接來自 eMMC 芯片。其中使用到了 CMD、CLK、DATA0~7。由于 Apalis iMX6 的 SDIO 為 3.3V,所以 eMMC 模塊的兩路電源均使用 3.3V。iMX6 SoC 只有其中的兩路 SDIO 才有 Reset 引腳,其中一路已經(jīng)用于模塊自身的 eMMC,另一路的 SD4_RESET 沒有引出到模塊的金手指上。這對(duì)于擴(kuò)展的 eMMC 來說將失去硬件復(fù)位功能,只能采用斷電復(fù)位 eMMC。圖中 H1 是 2.54mm 排針,可以直接連接 Apalis Evalution Board。另外,對(duì)于 CMD、CLK、DATA0~7 信號(hào)在設(shè)計(jì)底板時(shí)務(wù)必使用等長布線。

            擴(kuò)展外部eMMC存儲(chǔ)1163.png 

             

             

            將轉(zhuǎn)接板插入到 Apalis Evalution Board 的 X5,并提供 3.3V 供電。

            擴(kuò)展外部eMMC存儲(chǔ)1216.png 

             

             

            Device tree 修改

            軟件方面采用 Linux BSP v3,對(duì)應(yīng)內(nèi)核為 toradex_4.14-2.3.x-imx分支。對(duì) eMMC 的配置較為簡單,在 device tree 中完成即可。

             

            修改 `imx6q-apalis-eval.dts` 中的 usdhc1 節(jié)點(diǎn),刪除原來的 CD 引腳。

            diff --git a/arch/arm/boot/dts/imx6q-apalis-eval.dts \

            b/arch/arm/boot/dts/imx6q-apalis-eval.dts

            index 70be137c1f8b..6accb3611bcf 100644

            --- a/arch/arm/boot/dts/imx6q-apalis-eval.dts

            +++ b/arch/arm/boot/dts/imx6q-apalis-eval.dts

            @@ -468,9 +468,9 @@

             

            /* MMC1 */

            &usdhc1 {

            - pinctrl-names = "default";

            - pinctrl-0 = <&pinctrl_usdhc1_4bit &pinctrl_usdhc1_8bit &pinctrl_mmc_cd>;

            - cd-gpios = <&gpio4 20 GPIO_ACTIVE_LOW>;

            + /*pinctrl-names = "default";*/

            + /*pinctrl-0 = <&pinctrl_usdhc1_4bit &pinctrl_usdhc1_8bit &pinctrl_mmc_cd>;*/

            + /*cd-gpios = <&gpio4 20 GPIO_ACTIVE_LOW>;*/

            status = "okay";

            };

             

             

            修改 `imx6qdl-apalis.dtsi` 中 usdhc1 引腳配置,添加 non-removable 屬性。這里限制了 SDIO 的最高頻率為 20MHz。原因是在測試中發(fā)現(xiàn)通過轉(zhuǎn)接板方式連接 eMMC 模塊,當(dāng) SDIO 使用高頻率時(shí)鐘通信時(shí)容易引起發(fā) MMC 相關(guān)錯(cuò)誤。如果在定制底板上直接放置 eMMC 芯片并合理布線,則不會(huì)存在該問題。

            diff --git a/arch/arm/boot/dts/imx6qdl-apalis.dtsi \

            b/arch/arm/boot/dts/imx6qdl-apalis.dtsi

            index e18ac19dd3bf..5622d1aadb88 100644

            --- a/arch/arm/boot/dts/imx6qdl-apalis.dtsi

            +++ b/arch/arm/boot/dts/imx6qdl-apalis.dtsi

            @@ -910,11 +910,14 @@

            /* MMC1 */

            &usdhc1 {

            pinctrl-names = "default";

            - pinctrl-0 = <&pinctrl_usdhc1_4bit &pinctrl_usdhc1_8bit>;

            + pinctrl-0 = <&pinctrl_usdhc1_4bit &pinctrl_usdhc1_8bit>; /* 8bit */

            vqmmc-supply = <?_module_3v3>;

            + max-frequency =<20000000>;

            bus-width = <8>;

            - disable-wp;

            + /*disable-wp;*/

            no-1-8-v;

            + mmc-ddr-3_3v;

            + non-removable;

            status = "disabled";

            };

             

             

            eMMC 測試

            重新啟動(dòng)后查看日志中 mmc0 相關(guān)信息,mmc0 控制器上時(shí)別到外部擴(kuò)展的 eMMC 模塊。

            root@apalis-imx6:~# dmesg|grep mmc0

            [ 2.823135] mmc0: SDHCI controller on 2190000.usdhc [2190000.usdhc] using ADMA

            [ 2.951996] mmc0: new DDR MMC card at address 0001

            [ 2.962770] mmcblk0: mmc0:0001 58A43A 14.6 GiB

            [ 2.975332] mmcblk0boot0: mmc0:0001 58A43A partition 1 4.00 MiB

            [ 2.987248] mmcblk0boot1: mmc0:0001 58A43A partition 2 4.00 MiB

            [ 2.998825] mmcblk0rpmb: mmc0:0001 58A43A partition 3 4.00 MiB, chardev (245:1)

             

             

            由于前面設(shè)置了 20MHz 的最高時(shí)鐘,mmc0 的實(shí)際頻率為 19.8MHz,8bit 總線模式。

            root@apalis-imx6:~# cat /sys/kernel/debug/mmc0/ios

            clock: 20000000 Hz

            actual clock: 19800000 Hz

            vdd: 21 (3.3 ~ 3.4 V)

            bus mode: 2 (push-pull)

            chip select: 0 (don't care)

            power mode: 2 (on)

            bus width: 3 (8 bits)

            timing spec: 8 (mmc DDR52)

            signal voltage: 0 (3.30 V)

            driver type: 0 (driver type B)

             

            測試寫入一個(gè) 1GB 文件,速度約為 14MB/s。

            root@apalis-imx6:/media/mmcblk0p1# time dd if=/dev/zero of=./write_test_8bit \

            bs=1M count=1024

             

            1024+0 records in

            1024+0 records out

             

            real 1m8.987s

            user 0m0.001s

            sys 0m11.510s

             

             

            總結(jié)

            上面演示了如何在 Toradex 計(jì)算機(jī)模塊上方便地?cái)U(kuò)展外部 eMMC,以及一些注意事項(xiàng)如 eMMC 接口的電壓選擇、調(diào)試期間的時(shí)鐘設(shè)置和載板設(shè)計(jì)中的布線問題。


            *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



            關(guān)鍵詞: ARM Linux eMMC NXP iMX6 Toradex Apalis

            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉