将uboot烧写到eMMC中

本文详细介绍了如何通过UBOOT引导FS4412开发板,包括从SD卡加载到eMMC,MMC设备管理,分区操作,格式化及下载更新过程。重点展示了如何使用UBOOT命令进行eMMC的配置和数据迁移。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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卡
在这里插入图片描述

<think>好的,我需要帮助用户了解如何进行U-Boot的操作。首先,我得整理用户提供的引用内容,看看里面有哪些关键步骤和方法。根据引用3,制作U-Boot镜像并写到SD卡的过程包括编译汇编文件、链接、生成二进制文件,最后用dd命令入SD卡。引用5提到使用sf命令擦除和入Flash,这可能涉及不同的存储介质。引用2指出uboot的存储器默认可能是emmc,但也可以配置为SD卡。引用4提到移植uboot时需要确认芯片支持。 用户需要的是一个详细的教程,可能需要涵盖不同情况,比如SD卡和eMMC的区别,以及使用不同工具的方法。我应该分步骤说明,先准备环境,再编译生成镜像,最后。同时,要注意使用正确的命令和参数,比如dd命令中的seek和oflag,以及sf命令的使用场景。还要提醒用户注意设备路径是否正确,避免覆盖错误磁盘。可能还需要提到如何验证是否成功,比如通过uboot启动日志。此外,用户可能会遇到的问题,比如分区对齐、权限问题,也需要简要提及。</think>### U-Boot操作步骤详解 U-Boot通常涉及编译生成二进制文件、选择存储介质(如SD卡或eMMC)及使用工具入固件。以下是具体流程: --- #### **一、准备工作** 1. **环境搭建** - 安装交叉编译工具链(如`arm-linux-gcc`),确保支持目标芯片架构[^4]。 - 下载U-Boot源码并配置目标板信息,例如修改`include/configs/rk32plat.h`调整默认存储设备为SD卡或eMMC[^1][^2]。 2. **硬件连接** - 将SD卡或eMMC通过读卡器接入开发主机,确认设备路径(如`/dev/sdb`)。 --- #### **二、编译与生成镜像** 1. **编译U-Boot** - 汇编启动文件(如`mystart.s`)和底层初始化代码(如`mylowlevel_init.s`)生成`.o`文件: ```bash arm-linux-gcc -c mystart.s arm-linux-gcc -c mylowlevel_init.s ``` - 使用链接脚本(如`myboot.lds`)生成可执行文件: ```bash arm-linux-ld -T myboot.lds -o myboot mystart.o mylowlevel_init.o ``` - 提取二进制文件并添加Header信息: ```bash arm-linux-objcopy -O binary myboot myboot.bin ./mkv210 u-boot.bin u-boot.16k # 生成带Header的镜像 ``` [^3] --- #### **三、镜像到存储介质** 1. **写到SD卡** - 使用`dd`命令将镜像入SD卡特定扇区(通常跳过前1个扇区): ```bash sudo dd iflag=dsync oflag=dsync if=u-boot.16k of=/dev/sdb seek=1 ``` 参数说明: - `seek=1`:跳过SD卡第一个扇区(避免覆盖分区表) - `dsync`:确保数据完全入[^2]。 2. **写到Flash(如SPI NOR)** - 进入U-Boot命令行,使用`sf`命令擦除并入: ```bash sf erase 0x0 0x10000 # 擦除0x0~0x10000区域 sf write 0x82000000 0x10000 0x20000 # 从内存0x82000000入Flash ``` [^5] --- #### **四、验证结果** 1. **启动测试** - 将存储介质插入目标板,上电观察串口输出,确认U-Boot成功加载。 - 检查启动日志中是否识别到正确的存储设备(如`MMC Device: emmc`)[^2]。 --- #### **注意事项** - **设备路径确认**:执行`dd`前务必通过`lsblk`确认SD卡路径,避免误操作。 - **权限问题**:需`sudo`权限,或当前用户加入`disk`用户组。 - **芯片兼容性**:确保U-Boot版本支持目标芯片(如三星Exynos 4412)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

后天必早起

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值