擴展外部eMMC存儲

By Toradex胡珊逢

簡介

存儲器的嵌入式設備中扮演著重要角色,上面不僅安裝有操作系統,同時也保存著應用程序和運行日志等。對于存儲器如?eMMC,寫入的數據量決定其使用壽命,對于有大量日志記錄的應用,通常可以選用一個大容量的存儲設備。文件將介紹如何在 Toradex 的計算機模塊 Apalis iMX6 上擴展一個外部 eMMC。

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

擴展外部eMMC存儲315.png

eMMC 模塊硬件連接

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

擴展外部eMMC存儲606.png

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

擴展外部eMMC存儲716.png

我們選取市場上常見的?eMMC 模塊,制作適合 Apalis Evalution Board 的轉接板。在實際應用中,可以把 eMMC 芯片直接焊接在定制的底板上,以增加牢固性和穩定性。

擴展外部eMMC存儲813.png

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

擴展外部eMMC存儲1163.png

將轉接板插入到?Apalis Evalution Board 的 X5,并提供 3.3V 供電。

擴展外部eMMC存儲1216.png

Device tree 修改

軟件方面采用?Linux BSP v3,對應內核為?toradex_4.14-2.3.x-imx分支。對?eMMC 的配置較為簡單,在 device tree 中完成即可。

修改?`imx6q-apalis-eval.dts`?中的 usdhc1 節點,刪除原來的 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。原因是在測試中發現通過轉接板方式連接 eMMC 模塊,當 SDIO 使用高頻率時鐘通信時容易引起發 MMC 相關錯誤。如果在定制底板上直接放置 eMMC 芯片并合理布線,則不會存在該問題。

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 測試

重新啟動后查看日志中?mmc0 相關信息,mmc0 控制器上時別到外部擴展的 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)

由于前面設置了?20MHz 的最高時鐘,mmc0 的實際頻率為 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)

測試寫入一個?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

總結

上面演示了如何在?Toradex 計算機模塊上方便地擴展外部 eMMC,以及一些注意事項如 eMMC 接口的電壓選擇、調試期間的時鐘設置和載板設計中的布線問題。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/163456.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/163456.shtml
英文地址,請注明出處:http://en.pswp.cn/news/163456.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JavaScript:監聽事件

該方法用于向瀏覽器窗口注冊事件監聽器&#xff0c;當指定的事件&#xff08;如單擊、按鍵按下&#xff09;被觸發時&#xff0c;瀏覽器會自動調用指定的函數&#xff08;回調函數&#xff09;。 window.addEventListener(event, function, useCapture); 參數說明&#xff1a…

洛谷題單--線性表

P3156 【深基15.例1】詢問學號 鏈接 : 【深基15.例1】詢問學號 - 洛谷 直接輸入&#xff0c;然后輸出a[i]即可; 代碼 : #include<iostream> #include<cstring> #include<algorithm> #include<vector> using namespace std; int main(){int n, q …

請手寫一個發布-訂閱的模式

發布-訂閱模式也是經典的設計模式之一&#xff0c;它在前端很多地方都有應用&#xff0c;比如javascript事件池&#xff0c;Vue的$on、$off&#xff0c;nodejs的events模塊和socket通信等等都有應用&#xff0c;也是前端面試比較火熱的考點之一&#xff0c;接下來給大家詳細介紹…

cefsharp119.4.30(cef119.4.3,Chromium119.0.6045.159)版本升級體驗支持H264及其他多個H264版本

Cefsharp119.4.30,cef119.4.3,Chromium119.0.6045.159 此更新包括一個高優先級安全更新 This update includes a high priority security update. 說明:此版本119.4.3支持H264視頻播放(需要聯系我),其他版本。.NETFramework 4.6.2 NuGet Gallery | CefSharp.WinForms 119.…

運動規劃Motion-Planning隨筆

online verification技術 實時安全校驗技術&#xff1a;留一手 首先計算能否通過剎車這種方式得到一條安全軌跡&#xff0c;&#xff08;讓速不讓道&#xff09;&#xff0c;當剎車有可能碰撞到行人或其他車輛時&#xff0c;則判斷變道是否會產生碰撞。如果能變道&#xff0…

深度學習之七(深度信念網絡和受限玻爾茲曼機器)

概念 深度信念網絡(Deep Belief Networks,DBN)和受限玻爾茲曼機器(Restricted Boltzmann Machines,RBMs)都是無監督學習的模型,通常用于特征學習、降維和生成數據。 受限玻爾茲曼機器(RBM): 結構: RBM 是一個兩層神經網絡,包括一個可見層和一個隱藏層。這兩層之間…

qt按照不同編碼格式讀取文字(UTF-16LE,UTF-8,UTF-8BOM,UTF-16BE)

enum class EncodingFormat : int {ANSI 0,//GBKUTF16LE,UTF16BE,UTF8,UTF8BOM, }; EncodingFormat VideoPlayer::FileCharacterEncoding(const QString &fileName) {//假定默認編碼utf8EncodingFormat code EncodingFormat::UTF8;QFile file(fileName);if (file.open(QI…

「 系統設計 」 為什么要做架構分層?

「 系統設計 」 為什么要做架構分層&#xff1f; 參考&鳴謝 3.設計模式之分層思維&#xff1a;為什么要做代碼分層架構&#xff1f; 從零開始學架構&#xff08;八&#xff09;分層架構和設計模式 架構模式之分層架構總結 文章目錄 「 系統設計 」 為什么要做架構分層&…

解決 IDEA下VUE項目 @符號無法識別的問題

根目錄新建jsconfig.json {"compilerOptions": {"baseUrl": "./","paths": {"/*": ["src/*"]}},"exclude": ["node_modules","dist"] }

IT支持團隊的績效指標和最佳實踐

一名員工在遠程時因筆記本問題尋求IT支持&#xff0c;盡管他們多次嘗試排除故障&#xff0c;但由于缺乏專業知識&#xff0c;最終還是無法訪問工作所需的應用程序。這時&#xff0c;他們需要一名專業的 IT 技術人員來指導他們&#xff0c;但他們只能等待有人注意到并回應他們的…

海報設計必備:揭秘5款炙手可熱的設計工具

1.即時設計&#xff1a;能實現在線協作的海報設計軟件 即時設計作為 2020 年上線的國產設計工具&#xff0c;目前已經有了超百萬的注冊用戶&#xff0c;獲得了廣大設計師的一致好評。與其他傳統海報設計軟件相比&#xff0c;即時設計具有這幾個優點&#xff1a;一是所有功能都…

Chrome 訪問不了項目?10080端口 ERR_UNSAFE_PORT:問題原因 / 解決方案

文章目錄 被禁用端口列表解決方法方法一、更換端口 / 使用代理 / 使用域名方法二、對瀏覽器下手WindowsMac 最近有客戶反饋&#xff0c;在chrome瀏覽器中訪問不了項目&#xff0c;其他瀏覽器都是正常的。 &#xff1f;奇了怪了&#xff0c;難道客戶對chrome做了什么操作&#x…

Docker | Docker入門安裝

?作者簡介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;熱愛Java后端開發者&#xff0c;一個想要與大家共同進步的男人&#x1f609;&#x1f609; &#x1f34e;個人主頁&#xff1a;Leo的博客 &#x1f49e;當前專欄&#xff1a;Docker系列 ?特色專欄&#xff1a; My…

探索WebStorm 2023 Mac/win:最強大的JavaScript開發工具

在當今的軟件開發領域&#xff0c;JavaScript已經成為了一種不可或缺的編程語言。而在眾多的JavaScript開發工具中&#xff0c;WebStorm一直以其強大的功能和友好的用戶界面脫穎而出。現在&#xff0c;我們迎來了全新的WebStorm 2023版本&#xff0c;它將帶給開發者們更加出色的…

有機紡織品OCS認證

【有機紡織品OCS認證】 有機產品是指按照這種方式生產和加工的產品。產品符合國際或者國家有機產品要求標準&#xff0c;并通過國家認證機構認證的一切農副產品及其加工品&#xff0c;包括糧食、蔬菜、水果、奶制品、禽畜產品、天然纖維等。 有機紡織品認證是指在使用經過國際或…

華中科技大學李松課題組,利用機器學習預測多孔材料水吸附等溫線

多孔材料的水吸附等溫線是一個非常重要的參數&#xff0c;但這一參數的獲得并不容易。這是因為多孔材料種類過多、結構多元&#xff0c;通過實驗和計算的方式獲得水吸附等溫線數據成本過高&#xff0c;耗時過長。 華中科技大學的李松課題組&#xff0c;建立了一個兩步機器學習模…

LeetCode [簡單] 283. 移動零

給定一個數組 nums&#xff0c;編寫一個函數將所有 0 移動到數組的末尾&#xff0c;同時保持非零元素的相對順序。 請注意 &#xff0c;必須在不復制數組的情況下原地對數組進行操作。 283. 移動零 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 快慢指針&…

可以在uni-app使用的類vconsole.js插件

興致勃勃在uni-app項目引入調試工具vconsole.js結果真機調試頁面空白 怎么辦?! 別著急 paradox老師有方法 替代插件下載地址&#xff1a;直接下載插件并引入HbuilderXuni_modules插件 - 類Vconsole APP端調試工具 - HF調試器 - DCloud 插件市場 下載完成在main.js中引入&…

鴻蒙開發環境搭建-deveco-studio 開發工具安裝問題()

從華為官網下載工具deveco-studio, 下載地址 HUAWEI DevEco Studio和SDK下載和升級 | HarmonyOS開發者 這是下載后的工具 1、一步步安裝步驟 報錯了&#xff0c;一般安裝都會報這個錯誤 看似問題不小&#xff0c;其實&#xff0c; 繼續下步&#xff0c;就正常了&#xff0c…

棧回溯--在棧里挑出返回地址

GNU Arm Embedded Toolchain project files : GNU Arm Embedded Toolchain arm-none-eabi-addr2line -e F103_Moduel.axf -a -f 08000350 08001d94 0800260c 匯編中&#xff1a; ;HardFault_Handler ; PROC ; EXPORT HardFault_Handler …