项目简介
本项目是一个基于QEMU模拟器的嵌入式系统开发教程。硬件平台上,裸机项目采用ARM Cortex - A7 32位内核、带有GPU的博通BCM2836芯片(树莓派2B同款硬件),Linux项目使用ARM Versatile Express开发板。项目旨在记录开发者的技术学习过程,为想要进行实际嵌入式项目开发的人提供参考,避免搭建环境的繁琐,实现开箱即用,方便通过阅读源码和注释理解原理。
项目的主要特性和功能
- 硬件模拟:借助QEMU模拟器模拟多种嵌入式硬件,如树莓派2B同款的BCM2836芯片、ARM Versatile Express开发板,提供通用便捷的开发环境,无需购买昂贵实体开发板。
- 多阶段项目覆盖:包含裸机项目、RTOS项目(未开始)、Linux项目。裸机项目有汇编boot、串口打印等功能;Linux项目可从源码编译运行U - Boot、Linux和根文件系统。
- 硬件测试用例丰富:提供raspi3 - tutorial硬件测试用例,涵盖空程序验证、串口通信、CPU与GPU邮箱通信、SD卡读写、屏幕图像和文字输出、异常中断测试等功能,便于开发者熟悉和验证编译环境与硬件功能。
- 详细的技术资料:提供QEMU模拟器、树莓派、BCM2836芯片等详细介绍文档,以及完整的环境安装步骤和丰富参考资料,帮助开发者深入了解相关技术和解决开发问题。
安装使用步骤
1. 准备工作
需Linux或者Windows MinGW等环境,推荐在Windows下用VMware虚拟机安装Ubuntu。首次使用Linux,不建议摸索Windows下的MinGW环境,因其安装软件较麻烦。
2. 安装Linux环境
可选择以下方式: - 在Windows下安装MSYS2、Cygwin或使用Git自带的精简版MSYS2 + MinGW64。若有朋友已安装好相关工具,可拷贝其安装文件夹使用。 - 安装VMware Player虚拟机,在虚拟机中安装Ubuntu系统。若有朋友已安装好相关工具,可拷贝其系统文件夹。 - 使用双系统或准备一台装了Linux的电脑。
3. 用QEMU模拟器运行树莓派
QEMU可在Windows或Linux下安装,参考相关教程进行安装和配置,如QEMU仿真树莓派1和3B - 保姆级教程等。
4. 编译树莓派程序
5. 完整的环境安装步骤(以Windows下的MSYS2环境为例)
5.1 安装MSYS2
下载msys2 - x86_64 - 20221028.exe,参考使用msys2打造优雅的开发环境进行安装,安装目录不能有空格、中文。安装后将国外镜像地址换成国内镜像地址,配置环境变量,在PATH中增加一行D:\msys64\usr\bin。
5.2 MSYS2中安装QEMU
在MSYS2中通过pacman - S mingw - w64 - x86_64 - qemu命令安装QEMU,查看是否安装成功可进入cd /mingw64/bin/ 然后./qemu - system - arm.exe --version查看版本号。
5.3 MSYS2中安装32位和64位ARM交叉编译工具
在MSYS2中使用pacman - S mingw - w64 - x86_64 - arm - none - eabi - gcc和pacman - S mingw - w64 - x86_64 - arm - none - eabi - gdb命令安装32位交叉编译工具和GDB调试工具。若需要64位ARM的交叉编译工具,可从Linaro软件中下载并配置环境变量。同时,使用pacman - S make命令安装make工具。
5.4 用现成的程序从QEMU运行树莓派
从https://gitee.com/mirrors_bztsrc/raspi3 - tutorial/tree/master/0A_pcscreenfont 下载编译好的树莓派程序,使用命令/mingw64/bin/qemu - system - aarch64 - M raspi3b - kernel ~/1_raspi/01_run/kernel8.img - d in_asm运行,可看到QEMU窗口显示hello world。
5.5 交叉编译工具编译程序,并在树莓派QEMU模拟中运行
从mirrors_bztsrc/raspi3 - tutorial下载演示64位ARM树莓派裸机编程的仓库,修改Makefile和自动运行配置,使其适配msys64。配置环境变量,进入msys64 raspi3 - tutorial源码目录,使用make命令编译,make run命令运行程序。
6. Linux编程(若要进行Linux编程,建议在Ubuntu下进行)
6.1 编译U - Boot并在QEMU中运行
下载最新版本的U - Boot官方源码,如v2023.01 - rc2,在Ubuntu系统(如VMware Player Ubuntu18.04)中安装相关依赖库,配置交叉编译环境变量,使用make vexpress_ca9x4_defconfig和make - j4命令编译U - Boot,编译完成后使用qemu - system - arm - M vexpress - a9 - m 256 - kernel u - boot --nographic命令运行。
6.2 编译Linux kernel
在Linux环境(如Ubuntu)中下载最新的Linux kernel源码,如v6.1 - rc6,配置交叉编译环境变量,使用make vexpress_defconfig和make zImage dtbs - j4命令编译,安装过程中遇到报错需安装相应依赖库,编译完成后使用qemu - system - arm - M vexpress - a9 - m 256M - nographic - kernel zImage - dtb vexpress - v2p - ca9.dtb命令运行。
6.3 Busybox生成文件系统需要的系统应用程序和制作根文件系统
从官网下载最新的BusyBox发布版本,如busybox - 1.35.0.tar.bz2 ,配置交叉编译环境变量,使用make menuconfig命令进行配置,开启静态编译,使用make - j4和make install命令编译安装。制作根文件系统,创建虚拟磁盘、格式化、挂载、拷贝文件、创建设备节点等,最后使用qemu - system - arm - M vexpress - a9 - m 256M - nographic - kernel zImage - dtb vexpress - v2p - ca9.dtb - sd rootfs.img - append "root=/dev/mmcblk0 rw console=ttyAMA0" 命令运行。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】