2025-03-06
进行嵌入式开发一般都需要嵌入式开发板,但是购买嵌入式板需要一定费用。对于初学者也不知道选择哪种类型的嵌入式板才比较合适。所以对于初学者来说,物理的开发板不是最好的选择。电路有模拟软件,嵌入式开发也有模拟软件qemu
。可以使用qemu
进行嵌入式开发,使用qemu-system-aarch64 -M help
可以查看模拟器支持的开发板。
由于最近在网上跟着课程学习嵌入式开发,课程使用的是raspberrypi
的开发板。通过问AI、搜索和尝试后终于成功在qemu
上成功启动pi3b
。下面是详细的教程。
2024-10-22-raspios-bullseye-arm64-lite.img.xz
qemu
版本: qemu-system-aarch64 --version
QEMU emulator version 9.1.2
Copyright (c) 2003-2024 Fabrice Bellard and the QEMU Project developers
安装依赖:sudo apt install qemu-system-arm qemu-efi-aarch64 xz-utils
复制内核和设备树
mkdir pi3b mountpoint
unxz 2024-10-22-raspios-bullseye-arm64-lite.img.xz
losetup -fP --show 2024-10-22-raspios-bullseye-arm64-lite.img
mount /dev/loop0p1 /mountpoint
cp mountpoint/kernel8.img pi3b/
cp mountpoint/bcm2710-rpi-3-b.dtb pi3b/
umount mountpoint
losetup -d /dev/loop0
cp 2024-10-22-raspios-bullseye-arm64-lite.img sd.img
qemu-img resize -f raw sd.img 4G
mv sd.img pi3b/
cd pi3b
# 因为使用默认的用户名和密码无法登陆成功,需要先在图形界面进行用户名和密码设置
qemu-system-aarch64 \
-M raspi3b \
-cpu cortex-a72 \
-kernel kernel8.img \
-dtb bcm2710-rpi-3-b.dtb \
-append "rw earlyprintk loglevel=8 console=ttyAMA0,115200 dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2 rootdelay=1" \
-m 1G -smp 4 \
-serial stdio \
-drive file=sd.img,format=raw,if=sd \
-usb -device usb-mouse -device usb-kbd \
-device usb-net,netdev=net0 \
-netdev user,id=net0,hostfwd=tcp::5555-:22
qemu-system-aarch64 \
-M raspi3b \
-cpu cortex-a72 \
-kernel kernel8.img \
-dtb bcm2710-rpi-3-b.dtb \
-append "rw earlyprintk loglevel=8 console=ttyAMA0,115200 dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2 rootdelay=1" \
-m 1G -smp 4 \
-serial mon:stdio \
-nographic \
-drive file=sd.img,format=raw,if=sd \
-usb -device usb-mouse -device usb-kbd \
-device usb-net,netdev=net0 \
-netdev user,id=net0,hostfwd=tcp::5555-:22
systemctl enable ssh.service
systemctl start ssh.service
SSH连接树莓派:ssh <用户名>@localhost -p 5555
扩展SD卡容量
fdisk -l
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 8192 532479 524288 256M c W95 FAT32 (LBA)
/dev/mmcblk0p2 532480 4120575 3588096 1.7G 83 Linux
parted /dev/mmcblk0
resizepart 2 4G
quit
重新设置文件系统大小:resize2fs /dev/mmcblk0p2
检查结果:df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 3.4G 1.5G 1.8G 46% /
devtmpfs 427M 0 427M 0% /dev
tmpfs 461M 0 461M 0% /dev/shm
tmpfs 185M 852K 184M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/mmcblk0p1 255M 31M 225M 13% /boot
tmpfs 93M 0 93M 0% /run/user/1000
sudo apt install build-essential
sudo apt install device-tree-compiler
sudo apt install raspberrypi-kernel-headers