从0开始使用QEMU模拟ARM开发环境之uboot通过sd卡加载uImage

从0开始使用QEMU模拟ARM开发环境系列一览表

从0开始使用QEMU模拟ARM开发环境系列一览表

uboot通过sd卡加载uImage

制作SD卡镜像

可以参见 从0开始使用QEMU模拟ARM开发环境之脚本制作分区镜像(rootfs+zImage+dtb)

可以参见 linux 制作分区镜像img文件

在名为 SDCard (可以是其他地方)的文件夹中进行

  1. 生成一个空的SD卡镜像
dd if=/dev/zero of=uboot.disk bs=1M count=250
# 注意自己控制 count 大小 ,总大小 1*250 = 250 M
  1. 创建分区

创建两个分区(一个用来存放kernel和设备树,另一个存放根文件系统)

sgdisk -n 0:0:+10M -c 0:kernel uboot.disk
sgdisk -n 0:0:0 -c 0:rootfs uboot.disk

查看分区:

sgdisk -p uboot.disk

在这里插入图片描述

  1. 映射SD卡镜像到空闲loop设备
LOOPDEV=`losetup -f`   # 查找空闲的loop设备
echo $LOOPDEV	# 我这边时 /dev/loop0
sudo losetup $LOOPDEV  uboot.disk
sudo partprobe $LOOPDEV
sudo losetup -l
ls /dev/loop*
# 如果需要解映射 : sudo losetup -d /dev/loop0

在这里插入图片描述

会看到/dev/loop0p1 和/dev/loop0p2 两个节点

  1. 格式化并挂载loop设备
# 格式化 
sudo mkfs.ext4 /dev/loop0p1
sudo mkfs.ext4 /dev/loop0p2
# 挂载
mkdir p1 p2
sudo mount -t ext4 /dev/loop0p1 p1   # 存放kernel和设备树
sudo mount -t ext4 /dev/loop0p2 p2   # 存放根文件系统
# 查看挂载情况
 df -h
  1. 拷贝文件
# 将 zImage 和 dtb 拷贝到 p1  
# 之前编译内核的内核目录(linux-5.4.95 文件夹中)
sudo cp arch/arm/boot/zImage /home/leacock/QEMU/SDCard/p1
sudo cp arch/arm/boot/dts/vexpress-v2p-ca9.dtb /home/leacock/QEMU/SDCard/p1

# 将 文件系统中的文件拷贝到 p2
# 之前制作rootfs的 busybox-1.32.1 目录中 文件夹 rootfs 下为 文件系统(未打包直接拷贝,如果制作的文件系统在镜像中需挂载)
# busybox 根目录 busybox-1.32.1 中执行
sudo cp rootfs/* /home/leacock/QEMU/SDCard/p2 -arf
# 最后 查看 p1 p2 是否有对应的文件
  1. 取消挂载
# 在名为 SDCard (可以是其他地方)的文件夹中进行,否则 p1 p2 需要路径
sudo umount p1 p2
sudo losetup -d /dev/loop0

启动uboot 查看sd卡情况

从 之前编译u-boot的文件夹(u-boot-master)中拷贝 u-boot 文件到 名为 SDCard 的文件夹中

# 在名为 SDCard (可以是其他地方)的文件夹中进行 ,因为上面制作的 SD卡镜像 在这个文件夹中
qemu-system-arm -M vexpress-a9 -m 1024M -smp 1 -nographic -kernel u-boot -sd ./uboot.disk

在倒计时结束之前打断它,不要让其进入自主模式

U-Boot 2021.04-rc1 (Feb 05 2021 - 09:02:59 +0800)

DRAM:  1 GiB
WARNING: Caches not enabled
Flash: 128 MiB
MMC:   MMC: 0
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   smc911x-0
Hit any key to stop autoboot:  0 
=> 

在这里插入图片描述

查看 SD卡的情况,可以用下面的命令查看(默认SD卡就是出于可用状态):
mmc dev 0mmc info,使用part list mmc 0查看分区内容。

查看SD卡2个分区:分区1: ls mmc 0:1 或者 ext

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

墨1024

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

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

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

打赏作者

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

抵扣说明:

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

余额充值