一、常用命令
命令 | 说明 |
mmc info | 输出MMC设备信息 |
mmc read | 读取MMC中的数据 |
mmc write | 向MMC设备写入数据 |
mmc rescan | 扫描MMC 设备 |
mmc part | l列出MMC设备的分区 |
mmc dev | 切换MMC设备 |
mmc list | 列出当前有效所有MMC设备 |
从emmc启动实例
setenv bootcmd 'mmc dev 1; fatload mmc 1:1 80800000 zImage; fatload mmc 1:1 83000000
imx6ull-alientek-emmc.dtb; bootz 80800000 - 83000000;'
命令说明:
1) mmc list
ZynqMP> mmc list
mmc@ff160000: 0 (eMMC)
mmc@ff170000: 1
0是emmc 1是SD卡
2)mmc info
ZynqMP> mmc info
Device: mmc@ff160000
Manufacturer ID: 13
OEM: 14e
Name: Q2J54
Bus Speed: 52000000
Mode: MMC High Speed (52MHz)
Rd Block Len: 512
MMC version 5.0
High Capacity: Yes
Capacity: 3.6 GiB
Bus Width: 4-bit
Erase Group Size: 512 KiB
HC WP Group Size: 8 MiB
User Capacity: 3.6 GiB WRREL
Boot Capacity: 2 MiB ENH
RPMB Capacity: 512 KiB ENH
可以看到容量大小
3)mmc dev 1
切换设备提示 mmc1 is current device
ZynqMP> mmc dev 1
switch to partitions #0, OK
mmc1 is current device
4)mmc part 查看分区状态
ZynqMP> mmc part
Partition Map for MMC device 1 -- Partition Type: DOS
Part Start Sector Num Sectors UUID Type
1 2048 1024000 292eb6ff-01 0c Boot
2 1026048 6718464 292eb6ff-02 83
5)mmc read
语法:mmc read addr blk# cnt
addr 是数据读取到 DRAM 中的地址,
blk 是要读取的块起始地址(十六进制),一个块是 512字节,这里的块和扇区是一个意思
cnt 是要读取的块数量,一个块是 512字节。
实例加载图像:
mmc read 0x0 0x92000000 0x7400 0x800
0x92000000 是内存DRAM
0x7400 是emmc的地址,它的大小从14.5M地方读取
0x7400 = 29696块
29696块 * 512 = 15,204,352 字节
15,204,352/1024 = 14,848 K
14,848 K - 512K = 14,336K
14,336K / 1024 = 14M
14*1024 = 14,336K + 512K = 14,848K * 1024 = 15,204,352字节 / 512 = 29,696 = 0x7400
图像放置的位置uboot环境变量
setenv bootargs 'mem=513856K console=ttyAMA0,115200 clk_ignore_unused root=/dev/mmcblk0p6 rootfstype=ext4 rw rootwait blkdevparts=mmcblk0:512K(u-boot.bin),512K(emmc_env.bin),512K(bl31.bin),13M(kernel),2M(logo.jpg),...
二、fatload
fatload mmc 1:1 80800000 zImage
三、bootargs
setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'
- rootwait 表示等待 mmc 设备初始化完成以后再挂载,否则会出错。
- rw表示跟文件系统是可以读写的。不加则只能进行读操作。
- 如果根文件系统是yaffs、jffs 或 ubifs 的话就需要设置此选项,指定根文件系统的类型。
- 如果根文件系统为ext 格式的话此选项无所谓