当前位置: 首页 > news >正文

vmware17安装ubuntu2204版本qemu运行armv8处理器uboot运行调试的一些工作

  • 首先说一下安装vmware17,官网已经不提供安装包下载了,大家自己找一下资源吧。
  • 安装好vmware17和ubuntu2204后,ubuntu桌面右键默认是没有新建文本文件这个菜单的,我们需要在 主目录 的 模板 这个文件夹里通过命令行touch创建 文本文件.txt 这个文件即可。
  • 虚拟机和主机之间没法直接复制粘贴文件和文本,我们需要命令行,sudo apt install open-vm-tools-desktop -y 即可。这个open-vm-tools-desktop是开源社区自己维护的新的vm tool工具,比vmware自己菜单栏手动安装那个tool功能还要好。
  • 关于下载uboot,安装编译器和qemu,分别给出命令行如下:
sudo apt-get update
sudo apt-get install git build-essential qemu-system-arm libssl-dev
sudo apt-get install gcc-aarch64-linux-gnu
  • build-essential 和 libssl-dev 是编译U-Boot所需的开发工具。

  • qemu-system-arm 提供了针对ARM架构的QEMU全系统模拟。

  • gcc-aarch64-linux-gnu 是针对ARMv8(AArch64)架构的交叉编译器。

我们需要获取U-Boot源码并针对ARMv8平台进行编译
git clone https://github.com/u-boot/u-boot.git (如果网速太慢,就自己去这个网站手动下载压缩包自己解压放到主目录 的 u-boot 这个名即可)
cd u-boot
指定我们使用ARM64的交叉编译工具链
export CROSS_COMPILE=aarch64-linux-gnu-

择配置文件:U-Boot为不同的硬件平台提供了预设的配置文件。对于在QEMU上模拟ARMv8,我们使用

make qemu_arm64_defconfig

开始编译:这个过程可能会花费几分钟,具体取决于你的电脑性能

make -j$(nproc)

这个过程可能会报错找不到系统一些头文件和工具啥的,我们直接安装好所有这些,执行如下:

sudo apt install bison flex build-essential pkg-config libglib2.0-dev libpixman-1-dev

这个命令会安装:

  • flex:一个经常与 Bison 配合使用的词法分析器生成器。

  • build-essential:包含 GCC、G++、make 等基本的编译工具集合。

  • pkg-config:帮助查找库文件位置的工具。

  • libglib2.0-dev 和 libpixman-1-dev:编译 QEMU 时可能需要的重要开发库。

再次进行编译,就能成功啦!

make -j$(nproc)

我们可以使用QEMU来加载并运行刚刚编译好的U-Boot了:

emu-system-aarch64 -machine virt -cpu cortex-a57 -m 512M -nographic -bios u-boot.bin

参数解释:

  • -machine virt:指定模拟的机器类型为QEMU的通用ARM虚拟平台("virt")。

  • -cpu cortex-a57:指定模拟的CPU为ARMv8架构的Cortex-A57。你也可以尝试其他ARMv8 CPU如 cortex-a53 或 cortex-a72

  • -m 512M:为虚拟机分配512MB的内存。

  • -nographic:这个选项会以无图形界面模式启动,并将串口输出直接打印到当前终端。这对于在终端中直接与U-Boot交互非常方便。

  • -bios u-boot.bin:指定U-Boot镜像文件作为BIOS加载。

如果一切顺利,你将在终端看到U-Boot的启动日志,并最终进入U-Boot的命令行提示符(通常是 =>)。

在U-Boot命令行中,你可以尝试一些基础命令来验证环境:

  • help:查看所有可用的命令。

  • bdinfo:显示开发板信息。

  • printenv:打印环境变量。

  • version:显示U-Boot版本。

输入 reset 命令可以重新启动系统。

要退出QEMU,通常可以先按下 Ctrl+A,然后释放再按 X 键。

进行gdb单步调试u-boot,如下:

# 终端1:启动 QEMU
qemu-system-aarch64 -machine virt -cpu cortex-a57 -m 512M -nographic \
-bios u-boot.bin -S -s

  • -S:在启动时暂停 CPU,等待 GDB 的 continue 命令

  • -s:在端口 1234 开启 GDB 调试服务器

# 终端2:启动 GDB 调试
gdb-multiarch u-boot

# 在 GDB 中执行:
(gdb) target remote :1234
(gdb) break _start
(gdb) continue
(gdb) stepi                         # 单步执行汇编指令
(gdb) info registers
(gdb) break board_init_f
(gdb) continue
(gdb) next                          # 在 C 代码中单步执行

http://www.dtcms.com/a/553304.html

相关文章:

  • 【开题答辩全过程】以 二手房买卖与出租系统的设计与实现为例,包含答辩的问题和答案
  • 河池市城乡住房建设厅网站一人有限公司怎么注册
  • 边缘智能的创新:MLGO微算法科技推出基于QoS感知的边缘大模型自适应拆分推理编排技术
  • 前端面试题总结
  • UE5【插件】一键重命名蓝图变量、事件、函数、宏等(实现批量翻译)
  • UE5【C++】中文注释、编辑器乱码解决方法
  • 鸿蒙Flutter三方库适配指南:08.联合插件开发
  • node做网站怎么知道蜘蛛来过桂林人论坛app
  • 什么语言最适合开发 SaaS 系统:从架构视角的全面分析
  • liosam详解
  • 先知社区文章批量爬虫工具
  • 【STM32】电动车报警系统
  • linux kernel struct clk_init_data结构浅解
  • ▲各类通信算法的FPGA开发学习教程——总目录
  • 2025企业秋招:AI笔试监考如何重塑秋招公平性?
  • Rust开发之常用标准库Trait实践(Display、From/Into)
  • XML与HTML
  • 太原做网站需要多少钱网页设计网站怎么放到域名里
  • 网站开发 费用怎么用PS做网站广告图
  • 算法专题十八:FloodFill算法(使用dfs)
  • 【11408学习记录】考研数学速成:n维随机变量分布函数详解(从定义到边缘分布一网打尽)
  • 网络安全应用题3:网络攻击与防范
  • 做网站设计赚钱吗做攻略的网站好
  • 用react和ant.d做的网站例子宣传推广方式
  • 网店网站设计php网站开发教学
  • 鸿蒙元服务深度实践:跨端唤醒与状态共享的设计模式
  • 【Linux】信号机制详解:进程间通信的核心
  • 当一家车企出现在AI顶会
  • 解锁AI交互新范式:MCP(Model Context Protocol)如何重塑模型上下文管理
  • 保定 网站制作网站策划ppt