使用QEMU搭建u-boot+Linux+NFS嵌入式开发环境

1、搭建嵌入式基本开发环境

  • 虚拟机:VMware 15
  • VMware Tools安装:
sudo apt-get autoremove open-vm-tools
sudo apt-get install open-vm-tools-desktop
  • Ubuntu:ubuntu-16.04.6-desktop-i386
  • 更新软件源:sudo apt-get update
  • 安装uboot-tools:sudo apt-get install u-boot-tools
  • 代码编辑管理工具:sudo apt-get install git vim
  • 交叉编译器:sudo apt-get install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi
  • 其它依赖包:sudo apt-get install libncurses5-dev lzop
  • 交叉编译工具下载:交叉工具链
  • Buildroot下载:Buildroot
  • Buildroot用户手册下载:用户手册
  • QEMU下载:QEMU

2、QEMU安装

  • 安装QEMU编译依赖的包:
sudo apt-get install zlib1g-dev libglib2.0-0 libglib2.0-dev libsdl1.2-dev libpixman-1-dev libfdt-dev
  • 下载QEMU源码
git clone git://git.qemu-project.org/qemu.git
  • 切换到一个稳定版本
git checkout v2.7.0
  • 编译配置
./configure --target-list=arm-softmmu --audio-drv-list=
  • 编译安装
make
make install

3、编译Linux内核和dtb文件

ARCH=arm   CROSS_COMPILE=arm-linux-gnueabi-
  • 编译内核、模块、dtb文件
make vexpress_defconfig
make zImage -j4
make modules -j4
make dtbs

4、使用busybox制作根文件系统

4.1、编译安装

ARCH=arm   CROSS_COMPILE=arm-linux-gnueabi-
  • 配置
make defconfig
make  menuconfig
  • 编译安装
make
make install

4.2、制作根文件系统

mkdir rootfs
mkdir -p rootfs/lib
cp -r busybox-1.27.0/_install/* rootfs
cp  -p /usr/arm-linux-gnueabi/lib/*   rootfs/lib
mkdir  -p  rootfs/etc/init.d/
touch rcS
 mkdir  -p  rootfs/dev/
 mknod –m 666 tty1  c  4  1
 mknod –m 666 tty2  c  4  2
mknod –m 666 tty3  c  4  3
mknod –m 666 tty4  c  4  4
mknod –m 666 console  c  5  1
mknod –m 666 null   c  1  3

4.3、制作SD卡文件系统镜像

  • 生成镜像:
dd if=/dev/zero of=rootfs.ext3  bs=1M count=32
  • 格式化为exts文件系统:
mkfs.ext3  rootfs.ext3
  • 将各种文件拷贝到文件系统镜像中
mount  -t  ext3  rootfs.ext3   /mnt/  -o  loop
cp  -r  rootfs/*  /mnt
umount  /mnt

4.4、启动内核、挂载rootfs

qemu-system-arm   -M  vexpress-a9   -m 512M -dtb linux-4.4.76/arch/arm/boot/dts/vexpress-v2p-ca9.dtb   -kernel linux-4.4.76/arch/arm/boot/zImage   -nographic   -append 
"root=/dev/mmcblk0 rw console=ttyAMA0"   -sd rootfs.ext3

4.5、图形化启动内核

qemu-system-arm   -M  vexpress-a9   -m 512M -dtb linux-4.4.76/arch/arm/boot/dts/vexpress-v2p-ca9.dtb   -kernel linux-4.4.76/arch/arm/boot/zImage   -append 
"root=/dev/mmcblk0 rw console=tty0"   -sd rootfs.ext3

5、使用U-boot加载Linux内核

5.1、编译u-boot

ARCH=arm   CROSS_COMPILE=arm-linux-gnueabi-
  • 配置:
make vexpress_ca9x4_defconfig
  • 编译:
make -j4

5.2、运行u-boot

qemu-system-arm -M vexpress-a9  -m 512M  -kernel   u-boot   -nographic   

5.3、QEMU网络功能设置

  • 主机安装工具包:
sudo apt-get install uml-utilities bridge-utils
  • 创建tun设备文件:/dev/net/tun
    在这里插入图片描述

  • 修改 /etc/network/interfaces 文件,重启生效:
    在这里插入图片描述

  • 配置 /etc/qemu-ifup、/etc/qemu-ifdown 脚本

5.4、内核配置编译

  • 需要将内核编译为uImage格式
  • 需要指定uImage的加载地址
  • 编译时指定:
make LOADADDR=0x60003000 uImage -j4

5.5、主机TFTP工具安装

  • 安装tftp工具:
sudo apt-get instaall tftp-hpa tftpd-hpa xinetd
  • 修改配置文件:/etc/default/tftpd-hpa

  • 创建tftp目录:

mkdir /home/tftpboot
chmod 777 tftpboot
  • 重启tftp服务:
/etc/init.d/tftpd-hpa restart

5.6、启动测试

qemu-system-arm		\
	-M vexpress-a9	\
	-kernel u-boot	\
	-nographic		\
	-m 512M			\
	-net nic,vlan=0 -net tap,vlan=0,ifname=tap0	\
	-sd rootfs.ext3

5.7、自动化引导

  • 修改 include/configs/vexpress_common.h
#define CONFIG_BOOTCOMMAND	\
"tftp 0x60003000 uImage;tftp 0x60500000 vexpress-v2p-ca9.dtb;	\
setenv bootargs 'root=/dev/mmcblk0 console=tty0';	\
bootm 0x60003000-0x60500000;"
  • 配置开发板、主机IP地址
/* Netmask */
#define CONFIG_IPADDR 192.168.244.128
#define CONFIG_NETMASK 255.255.255.0
#define CONFIG_SERVERIP 192.168.244.129

6 、挂载NFS文件系统

6.1、主机HOST开启NFS服务

  • 安装:
sudo apt-get install nfs-kernel-server
  • 配置NFS,在 /etc/exports 文件中添加:
/home/rootfs *(rw,sync,no_root_squash,no_subtree_check)
  • 开启NFS服务:
/etc/init.d/rpcbind restart
/etc/init.d/nfs-kernel-server restart

6.2、修改bootargs启动参数

  • 修改BOOTCOMMAND
    在这里插入图片描述

6.3、内核支持挂载NFS文件系统

在这里插入图片描述

7、完善根文件系统

7.1、增加内核的各种用户接口、重启reboot功能

  • 新建 etc 目录,添加 inittab、init.d/rcS、fstab、profile
  • 新建 tmp、sys、var、proc 目录
  • 启动 linux,挂载NFS文件系统

7.2、四个文件的启动流程

在这里插入图片描述

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是在 Windows 系统下构建 QEMU Cortex-A7 和 Visual Studio 虚拟开发和调试环境的步骤: 1. 下载 QEMU QEMU 是一个开源的虚拟机软件,可以模拟多种硬件平台,包括 ARM。在 QEMU 官网上下载最新版本的 QEMU:https://www.qemu.org/download/ 2. 下载 Cortex-A7 虚拟机镜像 可以在 Linaro 官网上下载预编译的 Cortex-A7 虚拟机镜像:https://www.linaro.org/downloads/ 3. 安装 Visual Studio 在官网上下载并安装 Visual Studio:https://visualstudio.microsoft.com/downloads/ 4. 安装 VisualGDB 插件 VisualGDB 是一个 Visual Studio 的插件,可以支持 ARM 开发和调试。在官网上下载并安装 VisualGDB:https://visualgdb.com/download/ 5. 配置 VisualGDB 打开 Visual Studio,点击“VisualGDB”菜单,选择“Project Wizard”,选择“Embedded Project”,选择“QEMU ARM Cortex-A7”,然后按照向导完成配置。 6. 启动 QEMU 使用以下命令启动 QEMU: ``` qemu-system-arm -machine virt -cpu cortex-a7 -smp 4 -m 2048 -kernel path/to/kernel -append "root=/dev/vda2 rootfstype=ext4 rw console=ttyAMA0,115200" -drive file=path/to/rootfs,if=none,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -netdev user,id=net0 -device virtio-net-device,netdev=net0 ``` 其中,`path/to/kernel` 是内核镜像的路径,`path/to/rootfs` 是根文件系统的路径。 7. 调试应用程序 在 Visual Studio 中创建一个新的 ARM 项目,然后编写和调试应用程序。在调试配置中选择“VisualGDB QEMU Cortex-A7”,然后启动调试会话即可。 希望这些步骤能够帮助你构建 QEMU Cortex-A7 和 Visual Studio 虚拟开发和调试环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值