精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

U-boot的MMC DM框架驅動的移植方法

CHANBAEK ? 來源:嵌入式系統研發 ? 作者:ESDev ? 2023-04-14 10:22 ? 次閱讀

1.概述

本文主要講述了U-boot的MMC DM框架驅動的移植方法。DM是Driver Model的簡稱,是U-boot的基本驅動框架。常見的MMC設備包括SD卡、eMMC存儲器等。本文討論遵循SD Hostcontroller Specification 協議的MMC設備驅動開發。

示例U-boot版本:2022.10。硬件平臺:ARM SOC。

2.原理

在U-boot中,對遵循SD Hostcontroller Specification 協議的MMC設備有著完備的底層驅動支持。因此,移植某個特定MMC外設驅動,具體工作為調用U-boot自有的MMC底層標準驅動,實現對MMC外設的訪問和操作。

MMC驅動的工作原理:首先對設備樹文件xx.dts進行解析,按照先bind后probe的順序加載MMC驅動,分別通過相應的bind函數和probe函數完成。

U-boot啟動后,在讀取MMC設備節點的compatible字段后,找到與之匹配的U_BOOT_DRIVER,然后執行bind函數對驅動進行綁定,最后通過probe函數對驅動進行激活,解析設備樹的節點屬性,對驅動進行配置,從而使驅動具備工作條件,供上層應用程序調用。

U-boot的命令子系統包含了眾多測試命令子集,其中mmc命令集可用來對MMC驅動進行功能測試,對MMC設備進行信息查詢和訪問操作。

3.移植方法

3.1 主要工作

向U-boot移植MMC DM框架驅動的主要工作包括:

(1)向./drivers/mmc/添加驅動文件源碼xx_sdhci .c(名稱xx由驅動開發者定義,下同);

(2)在./drivers/mmc/Makefile添加xx_sdhci .c的編譯條目;

(3)在./drivers/mmc/Kconfig添加xx_sdhci .c的編譯配置選項;

(4)向./arch/arm/dts/xx.dts中添加MMC設備節點。

3.2 驅動源碼設計

在U-boot的MMC驅動中,有眾多設備遵循了SD Hostcontroller Specification 協議,選取其中的Atmel SDHCI控制器驅動,講解驅動代碼的原理和設計方法,代碼路徑: ./drivers/mmc/atmel_sdhci.c。自編的驅動文件源碼xx_sdhci .c可參考atmel_sdhci.c進行設計。

MMC驅動包括2個核心函數,即atmel_sdhci_bind和atmel_sdhci_probe函數。

atmel_sdhci_bind函數用于驅動的綁定。調用了sdhci_bind函數,位于./drivers/mmc/sdhci.c;而MMC作為一種塊設備,sdhci_bind函數進一步調用了mmc_bind函數,位于./drivers/mmc/mmc-uclass.c。

atmel_sdhci_probe函數用于驅動的激活。atmel_sdhci_probe函數的主要流程為:首先對設備樹進行參數解析,解析出MMC控制器的工作時鐘頻率、寄存器地址、數據寬度、最高工作頻率等參數;然后通過sdhci_setup_cfg函數進行參數配置,sdhci_setup_cfg函數位于./drivers/mmc/sdhci.c;最后調用sdhci_probe函數完成probe操作。

3.3 MMC設備樹節點

在設備樹添加MMC設備節點,節點設計方法可以參考./doc/device-tree-bindings/mmc下的文檔。

4.驗證方法

4.1編譯mmc測試工具

為編譯mmc測試工具,應配置U-boot,使能CONFIG_CMD_MMC。

poYBAGQ4uOiAf8U2AAERWtIXtG4811.png

4.2驅動加載結果查詢

cli>dm tree

Class Index Probed Driver Name

root 0 [ + ] root_driver root_driver

mmc 0 [ + ] xx_sdhci `-- mmc@xxxxxxxx

blk 0 [ + ] mmc_blk `-- mmc@xxxxxxxx.blk

4.3MMC設備信息查詢

cli>mmc info

Manufacturer ID: 3

OEM: 5344

Name: SD32G

Bus Speed: 2000000

Mode: SD High Speed (50MHz)

Rd Block Len: 512

SD version 3.0

High Capacity: Yes

Capacity: 29.7 GiB

Bus Width: 4-bit

Erase Group Size: 512 Bytes

4.4寫操作

cli>mmc write 0x80000000 100 2

2 blocks written: OK

4.5讀操作

cli>mmc read 0x90000000 100 2

2 blocks read: OK

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9046

    瀏覽量

    366809
  • soc
    soc
    +關注

    關注

    38

    文章

    4120

    瀏覽量

    217932
  • MMC
    MMC
    +關注

    關注

    0

    文章

    76

    瀏覽量

    30454
  • 移植
    +關注

    關注

    1

    文章

    377

    瀏覽量

    28108
  • u-boot
    +關注

    關注

    0

    文章

    120

    瀏覽量

    38200
收藏 人收藏

    評論

    相關推薦

    U-boot的基本介紹

    從本文開始,將陸續推送“手把手教你移植U-boot”系列文章,目標是由淺入深地講解U-boot的工作流程、原理、配置方法移植
    發表于 07-14 16:52 ?2772次閱讀
    <b class='flag-5'>U-boot</b>的基本介紹

    U-Boot移植DM9000網卡分享!

    U-Boot移植DM9000網卡——西伯利亞的風 根據書《嵌入式Linux應用開發完全手冊》移植網卡驅動,對于Jz2440開發板好像并不適用
    發表于 07-29 00:06

    嵌入式系統中U-Boot 基本特點及其移植方法

    在介紹U-Boot 基本特點的基礎上,結合U-Boot 移植經歷,以MPC8xx 和嵌入式Linux 為背景,分析、探討U-Boot移植
    發表于 04-15 09:25 ?17次下載

    嵌入式系統中U-Boot 基本特點及其移植方法

    在介紹U-Boot 基本特點的基礎上,結合U-Boot 移植經歷,以MPC8xx 和嵌入式Linux 為背景,分析、探討U-Boot移植
    發表于 05-16 14:52 ?12次下載

    嵌入式U-BOOT的啟動流程及移植

    S3C44B0開發板上的移植方法和步驟。 u-boot是一個功能強大的bootloader開發軟件,適用的CPU平臺及
    發表于 02-25 16:00 ?59次下載

    Mini2440之U-boot使用及移植詳細手冊

    Mini2440之U-boot使用及移植詳細手冊
    發表于 10-30 08:31 ?44次下載
    Mini2440之<b class='flag-5'>U-boot</b>使用及<b class='flag-5'>移植</b>詳細手冊

    S3C6410的u-boot分析與移植

    S3C6410的u-boot分析與移植
    發表于 10-31 14:44 ?28次下載
    S3C6410的<b class='flag-5'>u-boot</b>分析與<b class='flag-5'>移植</b>

    基于nanoPC-T3的U-Boot移植過程梳理

    ? 導讀:前文對U-Boot架構設計做了分析,本文來梳理一下U-Boot在具體板子上的移植工作,主要記錄整體思路、要點,以觸類旁通而記之。
    的頭像 發表于 12-14 23:14 ?842次閱讀

    Linux U-Boot開發指南

    介紹 U-Boot 的編譯打包、基本配置、常用命令的使用、基本調試方法等, 為 U-BOOT移植及應用開發提供了基礎。
    的頭像 發表于 03-06 10:28 ?1262次閱讀
    Linux <b class='flag-5'>U-Boot</b>開發指南

    U-boot的QSPI驅動移植方法及驗證方法

    本文主要講述了U-boot的QSPI驅動移植方法及驗證方法。在產品調試階段,U-boot的dri
    的頭像 發表于 04-14 10:21 ?2858次閱讀
    <b class='flag-5'>U-boot</b>的QSPI<b class='flag-5'>驅動</b><b class='flag-5'>移植</b><b class='flag-5'>方法</b>及驗證<b class='flag-5'>方法</b>

    U-boot的DPU驅動移植方法

    本文以ARM Mali系列顯示處理器驅動為例,講述了U-boot的DPU驅動移植方法
    的頭像 發表于 04-14 10:25 ?1320次閱讀
    <b class='flag-5'>U-boot</b>的DPU<b class='flag-5'>驅動</b><b class='flag-5'>移植</b><b class='flag-5'>方法</b>

    U-boot的SPLASH_SCREEN(啟動畫面)驅動移植方法

    ?在上一篇《U-boot驅動-DPU驅動移植》中,以ARM Mali系列顯示處理器驅動為例,講述了U-b
    的頭像 發表于 04-14 10:28 ?1388次閱讀
    <b class='flag-5'>U-boot</b>的SPLASH_SCREEN(啟動畫面)<b class='flag-5'>驅動</b><b class='flag-5'>移植</b><b class='flag-5'>方法</b>

    U-boot的DPU驅動移植方法

    U-boot的VIDEO驅動子系統集成了ARM Mali系列顯示處理器的驅動,支持Mali-DP500、Mali-DP550和Mali-DP650顯示處理器,驅動源碼位于目錄./dri
    的頭像 發表于 06-09 14:35 ?1073次閱讀
    <b class='flag-5'>U-boot</b>的DPU<b class='flag-5'>驅動</b><b class='flag-5'>移植</b><b class='flag-5'>方法</b>

    U-boot驅動SPLASH_SCREEN驅動移植方法

    U-boot集成了SPLASH_SCREEN驅動源碼,當使能和配置SPLASH_SCREEN驅動后,可以將啟動畫面使用的圖片文件轉換為位圖數據數組
    的頭像 發表于 06-09 14:39 ?1211次閱讀
    <b class='flag-5'>U-boot</b><b class='flag-5'>驅動</b>SPLASH_SCREEN<b class='flag-5'>驅動</b><b class='flag-5'>移植</b><b class='flag-5'>方法</b>

    遵循SD Host controller Specification協議的MMC設備驅動開發討論

    本文主要講述了U-bootMMC DM框架驅動移植方法
    的頭像 發表于 06-09 14:43 ?1393次閱讀
    遵循SD Host controller Specification協議的<b class='flag-5'>MMC</b>設備<b class='flag-5'>驅動</b>開發討論