在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

U-boot的MMC DM框架驅(qū)動(dòng)的移植方法

CHANBAEK ? 來源:嵌入式系統(tǒng)研發(fā) ? 作者:ESDev ? 2023-04-14 10:22 ? 次閱讀

1.概述

本文主要講述了U-boot的MMC DM框架驅(qū)動(dòng)的移植方法。DM是Driver Model的簡稱,是U-boot的基本驅(qū)動(dòng)框架。常見的MMC設(shè)備包括SD卡、eMMC存儲(chǔ)器等。本文討論遵循SD Hostcontroller Specification 協(xié)議的MMC設(shè)備驅(qū)動(dòng)開發(fā)。

示例U-boot版本:2022.10。硬件平臺(tái):ARM SOC。

2.原理

在U-boot中,對遵循SD Hostcontroller Specification 協(xié)議的MMC設(shè)備有著完備的底層驅(qū)動(dòng)支持。因此,移植某個(gè)特定MMC外設(shè)驅(qū)動(dòng),具體工作為調(diào)用U-boot自有的MMC底層標(biāo)準(zhǔn)驅(qū)動(dòng),實(shí)現(xiàn)對MMC外設(shè)的訪問和操作。

MMC驅(qū)動(dòng)的工作原理:首先對設(shè)備樹文件xx.dts進(jìn)行解析,按照先bind后probe的順序加載MMC驅(qū)動(dòng),分別通過相應(yīng)的bind函數(shù)和probe函數(shù)完成。

U-boot啟動(dòng)后,在讀取MMC設(shè)備節(jié)點(diǎn)的compatible字段后,找到與之匹配的U_BOOT_DRIVER,然后執(zhí)行bind函數(shù)對驅(qū)動(dòng)進(jìn)行綁定,最后通過probe函數(shù)對驅(qū)動(dòng)進(jìn)行激活,解析設(shè)備樹的節(jié)點(diǎn)屬性,對驅(qū)動(dòng)進(jìn)行配置,從而使驅(qū)動(dòng)具備工作條件,供上層應(yīng)用程序調(diào)用。

U-boot的命令子系統(tǒng)包含了眾多測試命令子集,其中mmc命令集可用來對MMC驅(qū)動(dòng)進(jìn)行功能測試,對MMC設(shè)備進(jìn)行信息查詢和訪問操作。

3.移植方法

3.1 主要工作

向U-boot移植MMC DM框架驅(qū)動(dòng)的主要工作包括:

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

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

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

(4)向./arch/arm/dts/xx.dts中添加MMC設(shè)備節(jié)點(diǎn)。

3.2 驅(qū)動(dòng)源碼設(shè)計(jì)

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

MMC驅(qū)動(dòng)包括2個(gè)核心函數(shù),即atmel_sdhci_bind和atmel_sdhci_probe函數(shù)。

atmel_sdhci_bind函數(shù)用于驅(qū)動(dòng)的綁定。調(diào)用了sdhci_bind函數(shù),位于./drivers/mmc/sdhci.c;而MMC作為一種塊設(shè)備,sdhci_bind函數(shù)進(jìn)一步調(diào)用了mmc_bind函數(shù),位于./drivers/mmc/mmc-uclass.c。

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

3.3 MMC設(shè)備樹節(jié)點(diǎn)

在設(shè)備樹添加MMC設(shè)備節(jié)點(diǎn),節(jié)點(diǎn)設(shè)計(jì)方法可以參考./doc/device-tree-bindings/mmc下的文檔。

4.驗(yàn)證方法

4.1編譯mmc測試工具

為編譯mmc測試工具,應(yīng)配置U-boot,使能CONFIG_CMD_MMC。

poYBAGQ4uOiAf8U2AAERWtIXtG4811.png

4.2驅(qū)動(dòng)加載結(jié)果查詢

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設(shè)備信息查詢

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9310

    瀏覽量

    375076
  • soc
    soc
    +關(guān)注

    關(guān)注

    38

    文章

    4342

    瀏覽量

    221724
  • MMC
    MMC
    +關(guān)注

    關(guān)注

    0

    文章

    77

    瀏覽量

    30893
  • 移植
    +關(guān)注

    關(guān)注

    1

    文章

    394

    瀏覽量

    28580
  • u-boot
    +關(guān)注

    關(guān)注

    0

    文章

    122

    瀏覽量

    38705
收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    U-boot的基本介紹

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

    U-Boot移植DM9000網(wǎng)卡分享!

    U-Boot移植DM9000網(wǎng)卡——西伯利亞的風(fēng) 根據(jù)書《嵌入式Linux應(yīng)用開發(fā)完全手冊》移植網(wǎng)卡驅(qū)動(dòng),對于Jz2440開發(fā)板好像并不適用
    發(fā)表于 07-29 00:06

    嵌入式系統(tǒng)中U-Boot 基本特點(diǎn)及其移植方法

    在介紹U-Boot 基本特點(diǎn)的基礎(chǔ)上,結(jié)合U-Boot 移植經(jīng)歷,以MPC8xx 和嵌入式Linux 為背景,分析、探討U-Boot移植
    發(fā)表于 04-15 09:25 ?17次下載

    嵌入式系統(tǒng)中U-Boot 基本特點(diǎn)及其移植方法

    在介紹U-Boot 基本特點(diǎn)的基礎(chǔ)上,結(jié)合U-Boot 移植經(jīng)歷,以MPC8xx 和嵌入式Linux 為背景,分析、探討U-Boot移植
    發(fā)表于 05-16 14:52 ?12次下載

    嵌入式U-BOOT的啟動(dòng)流程及移植

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

    Mini2440之U-boot使用及移植詳細(xì)手冊

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

    S3C6410的u-boot分析與移植

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

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

    ? 導(dǎo)讀:前文對U-Boot架構(gòu)設(shè)計(jì)做了分析,本文來梳理一下U-Boot在具體板子上的移植工作,主要記錄整體思路、要點(diǎn),以觸類旁通而記之。
    的頭像 發(fā)表于 12-14 23:14 ?1148次閱讀

    Linux U-Boot開發(fā)指南

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

    U-boot的QSPI驅(qū)動(dòng)移植方法及驗(yàn)證方法

    本文主要講述了U-boot的QSPI驅(qū)動(dòng)移植方法及驗(yàn)證方法。在產(chǎn)品調(diào)試階段,U-boot的dri
    的頭像 發(fā)表于 04-14 10:21 ?3624次閱讀
    <b class='flag-5'>U-boot</b>的QSPI<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>移植</b><b class='flag-5'>方法</b>及驗(yàn)證<b class='flag-5'>方法</b>

    U-boot的DPU驅(qū)動(dòng)移植方法

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

    U-boot的SPLASH_SCREEN(啟動(dòng)畫面)驅(qū)動(dòng)移植方法

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

    U-boot的DPU驅(qū)動(dòng)移植方法

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

    U-boot驅(qū)動(dòng)SPLASH_SCREEN驅(qū)動(dòng)移植方法

    U-boot集成了SPLASH_SCREEN驅(qū)動(dòng)源碼,當(dāng)使能和配置SPLASH_SCREEN驅(qū)動(dòng)后,可以將啟動(dòng)畫面使用的圖片文件轉(zhuǎn)換為位圖數(shù)據(jù)數(shù)組
    的頭像 發(fā)表于 06-09 14:39 ?1513次閱讀
    <b class='flag-5'>U-boot</b><b class='flag-5'>驅(qū)動(dòng)</b>SPLASH_SCREEN<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>移植</b><b class='flag-5'>方法</b>

    遵循SD Host controller Specification協(xié)議的MMC設(shè)備驅(qū)動(dòng)開發(fā)討論

    本文主要講述了U-bootMMC DM框架驅(qū)動(dòng)移植方法
    的頭像 發(fā)表于 06-09 14:43 ?1824次閱讀
    遵循SD Host controller Specification協(xié)議的<b class='flag-5'>MMC</b>設(shè)備<b class='flag-5'>驅(qū)動(dòng)</b>開發(fā)討論
    主站蜘蛛池模板: 操天天| 国产精品 视频一区 二区三区 | 91亚色视频在线观看 | 国产午夜人做人视频羞羞 | 成人免费无毒在线观看网站 | 国产人人澡 | 2022天天操| 无遮挡高清一级毛片免费 | 欧美一级片在线视频 | 久久99爰这里有精品国产 | 天天插天天操天天射 | 久久婷婷成人综合色 | 啪啪啦资源站永久 | 天天干2018| 男女那啥的视频免费 | 天天综合色天天桴色 | 台湾久久 | 日韩午夜精品 | 久久精品国产清自在天天线 | 亚洲免费一级视频 | 久久久亚洲欧美综合 | 精品黄色片 | 福利在线看片 | 伊人久久影视 | 日韩中文字幕第一页 | 失禁h啪肉尿出来高h | 男人午夜免费视频 | 黄色网址 在线播放 | 国产成人1024精品免费 | 精品卡一卡二 卡四卡视频 精品噜噜噜噜久久久久久久久 | 在线播放免费视频 | 亚洲电影在线 | 色综合天天操 | 欧美freesex10一13| 女人被两根一起进3p在线观看 | 天堂网www中文在线 天堂网传媒 | 四虎精品影院在线观看视频 | 高清性欧美xxx | 国产精品毛片久久久久久久 | 扒开双腿疯狂进出爽爽爽 | 欧美亚洲韩国国产综合五月天 |