使用qemu搭建armv7嵌入式开发环境

目录

目录

1 概述

2 环境准备

2.1 vexpress系列开发板介绍

2.2 安装工具

2.2.1 安装交叉工具链

2.2.2 安装qemu

2.2.3 安装其他工具

3 启动uboot

3.1 uboot下载与编译

3.1.1 下载

3.1.2 编译

3.2 使用qemu启动uboot

4 启动kernel

4.1 下载和编译kernel

4.1.1 下载kernel

4.1.2 编译kernel

4.2 启动Linux内核

5 加载文件系统

5.1 制作文件系统

5.1.1 busybox下载与编译

5.1.2 制作文件系统

5.1.2.1 单分区镜像制作

5.1.2.1 双分区镜像制作

5.2 启动加载文件系统

6 uboot加载kernel和rootfs到命令行

6.1 修改uboot

6.2 生成boot.scr

6.3 重新打包进行文件系统

6.4 使用qemu启动

7 网络搭建

7.1 etc目录完善

7.2 搭建互通网络

7.2.2 启动qemu绑定增加虚拟网卡

7.2.3 配置虚拟机里的eth0网卡

7.2 tftp搭建

7.2.1 在宿主机搭建tftp服务器

7.2.2 测试文件下载

7.3 scp支持

8 引用


1 概述

        本文介绍如何使用qemu搭建一个嵌入式开发环境,从uboot依次启动kernel和文件系统,使用Vexpress系列开发板的Express A9x4板子。

        本实验宿主机是Ubuntu22.04虚拟机。

2 环境准备

2.1 vexpress系列开发板介绍

        全称versatile express family,是 ARM公司自己推出的开发板,主要用于SOC厂商设计,验证和测试自己的SOC芯片,采用主板+子板设计,主板提供各种外围接口,子板提供CPU运算。本文使用的Vexpress A9X4芯片手册在arm官网可以搜到:

https://developer.arm.com/documentation/dui0448/i/?lang=en

2.2 安装工具

2.2.1 安装交叉工具链

        Vexpress A9X4是armv7架构芯片,这里使用arm-linux-gnueabi-,使用如下命令安装:

sudo apt install -y gcc-arm-linux-gnueabi

sudo apt install -y g++-arm-linux-gnueabi

2.2.2 安装qemu

        使用命令安装:

# For full system emulation

sudo apt install qemu-system

#For emulating Linux binaries

sudo apt install qemu-user-static

        使用源码安装

#https://www.qemu.org/

#https://wiki.qemu.org/Hosts/Linux

git clone https://gitlab.com/qemu-project/qemu.git

git checkout remotes/origin/stable-8.2 -b stable-8.2

sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev ninja-build

sudo apt-get install git-email

sudo apt-get install libaio-dev libbluetooth-dev libcapstone-dev libbrlapi-dev libbz2-dev

sudo apt-get install libcap-ng-dev libcurl4-gnutls-dev libgtk-3-dev

sudo apt-get install libibverbs-dev libjpeg8-dev libncurses5-dev libnuma-dev

sudo apt-get install librbd-dev librdmacm-dev

sudo apt-get install libsasl2-dev libsdl2-dev libseccomp-dev libsnappy-dev libssh-dev

sudo apt-get install libvde-dev libvdeplug-dev libvte-2.91-dev libxen-dev liblzo2-dev

sudo apt-get install valgrind xfslibs-dev

sudo apt-get install libnfs-dev libiscsi-dev

./configure --target-list=arm-softmmu --audio-drv-list=

make

sudo make install

        验证:

qemu-system-arm --version

2.2.3 安装其他工具

sudo apt-get install kpartx parted #制作文件系统使用

sudo apt install -y u-boot-tools #uboot编译依赖相关工具

        其他的编译期间出错缺少依赖,按照提示安装即可。

3 启动uboot

3.1 uboot下载与编译

3.1.1 下载

        从官网下载uboot源码

https://ftp.denx.de/pub/u-boot/

        或者使用git下载

git clone https://github.com/u-boot/u-boot.git

笔者的环境访问不了github,从官网下载了u-boot-2023.07.tar.bz2

3.1.2 编译

        解压后的uboot文件夹为u-boot-2023.07,进入该目录编译

#!/bin/bash

export ARCH=arm

export CROSS_COMPILE=arm-linux-gnueabi-

make vexpress_ca9x4_defconfig # vexpress 配置

make -j8

        编译后在顶层下得到u-boot可执行文件

3.2 使用qemu启动uboot

        上述uboot编译后,即可通过如下命令启动u-boot到命令行

#-M 使用qemu仿真 vexpress-a9 machine,

#-m 指定qemu虚拟机内存 512M

#-nographic 不使用图形化界面(串口输出)

qemu-system-arm \

        -M vexpress-a9 \

        -m 512M \

        -kernel /home/xxx/workspace/labs/u-boot-2023.07/u-boot \

        -nographic \

4 启动kernel

4.1 下载和编译kernel

4.1.1 下载kernel

        去Linux kernel官网下载

Index of /pub/linux/kernel/

        或者使用命令行下载:

git clone https://github.com/torvalds/linux.git

        笔者直接从官网下载,版本为linux-5.15.158.tar.xz

4.1.2 编译kernel

        使用如下命令来编译Linux内核

#!/bin/bash

export ARCH=arm

export CROSS_COMPILE=arm-linux-gnueabi-

#配置内核

make vexpress_defconfig

#编译内核,本实验使用的是uImage,镜像结果在arch/arm/boot下

make -j4 && make LOADADDR=0x60003000 uImage -j4

#编译内核模块

make modules -j4

#编译device tree,生成.dtb文件,这里是vexpress-v2p-ca9.dtb   

make dtbs

4.2 启动Linux内核

        由于uboot启动kernel,需要uboot修改些地方,这里先不使用uboot启动kernel,直接启动运行kernel,后面章节整体介绍uboot启动kernel。

        使用如下命令来启动Linux kernel

#-M 使用qemu仿真 vexpress-a9 machine,

#-m 指定qemu虚拟机内存 512M

#-kernel 指定 qemu使用的kernel image

#-dtb 指定 qemu boot kernel 时使用的设备树

#-nographic 不使用图形化界面(串口输出)

#-append "xx"  指定kernel启动参数(串口输出参数)

qemu-system-arm \

    -M vexpress-a9 \

    -m 512M \

    -kernel arch/arm/boot/zImage \

    -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb \

    -nographic \

    -append "console=ttyAMA0"

最后在挂载文件系统时停下来,文件系统此时还没加。

5 加载文件系统

5.1 制作文件系统

5.1.1 b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值