• 正文
    • 查看原理
    • IOMUX配置
    • 設備節(jié)點
    • 編譯測試
  • 相關推薦
申請入駐 產業(yè)圖譜

飛凌嵌入式ElfBoard ELF 1板卡-開發(fā)板適配之uSDHC

02/24 09:40
1279
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

i.MX6ULL的uSDHC(Ultra Secured Digital Host Controller)是連接系統(tǒng)和SD/SDIO/MMC設備的一種接口。i.MX6ULL有兩路uSDHC接口,ELF?1開發(fā)板將這兩路接口分別用于連接TF卡和eMMC設備,這跟NXP i.MX6ULL EVK板的方案一致。

查看原理

TF卡使用的是第一路uSDHC,對應的引腳:SD1_CLK、SD1_CMD、SD1_DATA0、SD1_DATA1、SD1_DATA2、SD1_DATA3,以及卡檢測引腳SD1_CD(GPIO1_IO19,PAD NAME為UART1_RTS_B),通過卡檢測引腳檢測TF卡是否插入或者拔出。

IOMUX配置

在設備樹中arch/arm/boot/dts/imx6ull-elf1-emmc.dts中iomuxc節(jié)點下已經存在對于這些引腳的配置:

我們看到有三種不同的pinctrl_usdhc1配置,pinctrl_usdhc1、pinctrl_usdhc1_100mhz、pinctrl_usdhc1_200mhz,表示TF卡設置為不同的速率,就使用不同的配置,觀察各組配置,可以發(fā)現(xiàn)其區(qū)別在于配置的IOMXC_SW_PAD_CTRL寄存器的值不同,不同的速率下使用的引腳電氣參數(shù)要求不同,如引腳驅動能力、翻轉速率等。ELF?1開發(fā)板目前不能支持高速模式,所以實際沒有使用pinctrl_usdhc1_100mhz和pinctrl_usdhc1_200mhz的相關IOMUX配置。

SD1_CD(GPIO1_IO19)卡檢測引腳的配置:

其中SD1 VSELECT引腳是電壓選擇引腳(TF卡在高速模式下,需要切換電壓到1.8v,我們的方案不支持高速模式),SD1 RESET是TF卡復位引腳,這兩個引腳都沒有用到,注釋掉。

設備節(jié)點

設備樹中已經存在usdhc1節(jié)點:

pinctrl-names屬性值有三個字符串,"default", "state_100mhz", "state_200mhz",分別表示TF卡工作在不同速率下的引腳配置狀態(tài),對應三種不同的pinctrl配置:pinctrl-0、pinctrl-1、pinctrl-2。

cd-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>,指定卡檢測引腳。

no-1-8-v;屬性是我們新加的一個屬性,表示不支持TF卡工作在1.8v的高速模式。

keep-power-in-suspend;表示在待機狀態(tài)下,不關閉電源。

enable-sdio-wakeup; 使能SDIO中斷發(fā)生時允許喚醒主機系統(tǒng)的功能,這里也注釋掉。

vmmc-supply = <&reg_sd1_vmmc>;指向reg_sd1_vmmc子節(jié)點regulator,regulator(regulator是自動調節(jié)器的意思)主要用于模塊的電源管理。

regulator-name屬性表示了電壓調節(jié)器服務的對象;

regulator-min-microvolt:可以設置的最小電壓;

regulator-max-microvolt:可以設置的最大電壓;

gpio屬性和enable-active-high是復位引腳相關,注釋。

編譯測試

編譯內核和設備樹并拷貝到開發(fā)板:

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$?./build.sh

elf@ubuntu:~/work/linux-imx-imx_4.1.15_2.0.0_ga$ scp arch/arm/boot/dts/imx6ull-elf1-emmc.dtb root@172.16.0.175:/run/media/mmcblk1p1/

進行sync操作后重啟開發(fā)板:

內核啟動之后,將TF卡插入卡槽(系統(tǒng)支持熱插拔),會在/dev/下會產生mmcblk0和mmcblk0p1節(jié)點:

系統(tǒng)會自動將mmcblk0p1掛載到/run/media /mmcblk0p1目錄下。查看TF卡中的文件,命令如下:

root@ELF1:~# ls -l /run/media/mmcblk0p1

相關推薦