1、fs4412 从SD 卡启动到uboot ,从启动模式“Checking Boot Mode … SDMMC ”可以看出来,是从 SD 卡启动;从启动信息中还可以得知,MMC 0 即 fs4412 的板载 eMMC 的容量为14910MB(16GB) ,MMC 1 即SD 卡的容量为 7680MB(8GB)
2、可以通过 uboot 命令“mmcinfo <dev#> ”来获取 MMC 设备的详细信息
(1)当前 uboot 从SD卡启动时,MMC 0 为板载eMMC,MMC 1为SD卡,则可以通过“mmcinfo 0”来获取fs4412的eMMC的详细信息:
(2)通过“mmcinfo 1 ”来获取SD卡的详细信息:
3、可以通过 uboot 命令“fdisk –p <dev#> ”来打印<dev#> 对应的存储设备的分区信息
(1)“fdisk –p 0 ”可以打印 fs4412 的eMMC 的分区信息
(2)“fdisk –p 1 ”可以打印 SD 卡的分区信息
4、通过uboot命令“fdisk”对eMMc分区,fdisk的命令格式如下:
-
fdisk -c <dev#> <partion#1 size> <partion#2 size> <partion#3 size>
可以从uboot中源码分析得知,fdisk会对存储设备<dev#>进行分区,第一个分区(system)大小<partion#1 size>,第二个分区(userdata)大小<partion#2 size>,第三个分区(cache)大小<partion#3 size>,剩下的空间给FAT分区;
例如,“fdisk -c 0 320 2057 520”表示对fs4412的eMMC进行分区,system分区为320MB,userdata分区为2057MB,cache分区为520MB,剩余695MB空间给FAT分区
5、使用uboot命令“fatformat mmc 0:1”对eMMC中的FAT分区进行格式化,0:1表示对存储设备0的第1个分区
6、使用uboot命令“ext3format mmc 0:2”对eMMC中的system分区进行格式化,0:2表示对存储设备0的第2个分区
7、使用uboot命令“ext3format mmc 0:3”对eMMC中的userdata分区进行格式化,0:3表示对存储设备0的第3个分区
8、使用uboot命令“ext3format mmc 0:4”对 eMMC中的cache分区进行格式化,0:4表示对存储设备0的第4个分区
9、使用uboot命令“emmc open 0”打开fs4412的eMMC,参数0表示对存储设备0进行操作,注意:eMMC 打开后,可以对eMMC进行写操作,待写操作完成后,必须关闭eMMC,否则容易产生eMMC的误写操作,造成数据丢失或错误;
本来eMMC里面的uboot是2013版本
10、使用uboot命令“dnw 70003000 ”从上位机(windows 中的 dnw 或 ubuntu 中的 dnw )将u-boot-fs4412.bin 文件下载到 fs4412 的内存DDR3 中,地址为0x7000_3000 ( 可以修改为内存中的其它地方)的位置
(1)fs4412中的dnw下载命令操作
(2)上位机(Ubuntu)的dnw传输操作
(3)fs4412提示下载完成
11、通过uboot命令“mmc write 0 0x70003000 0 0x800”将内存DDR3中起始地址为0x7000_3000的内容烧写到MMC设备0中的第0个扇区开始的区域,共0x1c (28 个扇区,14KB)
Uboot命令 mmc write addr blk# cnt 这个命令的作用是将内存上的数据写入mmc中
参数:
- addr: 从内存读取的位置
- blk: 写入到mmc中block位置,这个位置是mmc的0地址的偏移量,是16进制
- cnt: 写入到mmc中block个数,要写入的数据大小,是16进制
block单位是512字节,512B
12、将fs4412的启动拨码开关切换到“eMMC”,并重启开发板,可以看到uboot从eMMC中启动
注意:此时MMC Device 0为eMMC,MMC Device 1为SD卡