Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[077]uboot编译及QEMU调试

[077]uboot编译及QEMU调试

作者头像
王小二
发布于 2023-02-10 01:40:30
发布于 2023-02-10 01:40:30
2.3K00
代码可运行
举报
运行总次数:0
代码可运行

背景

最近在看一些uboot相关的内容,有一些疑惑,但是暂时我又没有硬件板子,我就准备用QEMU模拟调试。

uboot是什么东西?

uboot(universal bootloader)是一种可以用于多种嵌入式CPU得BootLoader程序,换言之,uboot是bootloader的一个子集

本人电脑系统

Win10 + WSL2 (ubuntu 20.04) Win10安装QEMU,WSL2用来编译uboot镜像

一、WSL2编译uboot镜像

1.1 下载uboot代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://github.com/u-boot/u-boot

1.2 编译uboot源码

因为我要编译arm64,所以用这个指令,缺少的工具链,请自行安装sudo apt-get install gcc-aarch64-linux-gnu

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export CROSS_COMPILE=aarch64-linux-gnu-
make qemu_arm64_defconfig
make

编译后的uboot代码根目录会有uboot.bin这个二进制程序,也就是uboot镜像了。

二、Win10安装QEMU

1.1 下载QEMU

window x64 qemu包下载地址:https://qemu.weilnetz.de/w64/

1.2 安装QEMU

双击安装即可,最重要的是记住安装选项,打开System emulation中的下落项选择需要模拟的系统x86_64,arm,riscv64,riscv32等系统,尽量安装默认,全部勾选即可

1.3 配置环境变量

把QEMU的安装路径添加到系统的环境变量中。

1.3 在Ubuntu安装QEMU

如果你是单独ubuntu系统,可以参考这个链接https://blog.csdn.net/Q1302182594/article/details/52134673

三、QEMU启动uboot

执行一下命令即可,u-boot.bin就是编译uboot生成的二进制文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
qemu-system-aarch64.exe -machine virt -nographic -cpu cortex-a57 -bios u-boot.bin

启动后的界面,类似linux的控制台,我尝试执行了一下ls

总结

接下来你就可以方便的修改调试uboot的代码了,学习uboot的代码挺有意思的。

参考资料

https://u-boot.readthedocs.io/en/latest/build/index.html https://u-boot.readthedocs.io/en/latest/board/emulation/qemu-arm.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
RISC-V64 opensbi启动过程
最近有一些riscv的项目做,虽然以前也用过例如k210之类的riscv架构的芯片,但是都止于能够做一些应用,并未特别关注其芯片的体系架构方面的东西,但是随着接触的芯片架构的种类的逐渐的增加,发现要想使用一款好芯片的,仅仅做上层应用并不能完全发挥出特定架构芯片的全部优势。比如aarch64的el层级和虚拟化的模型,mips的mmu特性,以及sparc的窗口寄存器等等,芯片架构的特点要是能够完全的发挥出来,写起应用起来,那真是觉得很爽的事情。
bigmagic
2020/12/08
8.6K0
RISC-V64 opensbi启动过程
使用QEMU搭建ARM64实验环境
对于Linux爱好者,你是否也有这样的困扰,为了学习Linux而去购买昂贵的开发版,这大可不必,QEMU模拟器几乎可以满足你的需求,足够你去学习Linux,它能够模拟x86, arm, riscv等各种处理器架构,本文将向你呈现的不是QEMU/虚拟化的原理解读,而是如何搭建一个用于学习linux的QEMU环境,当然对于Linux内核的学习这已经足够了。
用户7244416
2021/08/06
3.4K1
RK1126从入门到放弃:(一)编译篇
编译后在 Buildroot 目录 output/rockchip芯片型号recovery/images 生成 recovery.img。 需要特别注意 recovery.img 是包含 kernel.img,所以每次 Kernel 更改,Recovery 是需要重新打包生成 例如:
TSINGEYE清眸物联
2023/01/04
1.9K0
riscv64 qemu上进行Linux环境搭建与开发记录
最近在学习riscv64架构的一些知识,并且利用做一些项目的机会去了解更多的不同种类的的芯片的架构设计。学习riscv的好处在于其架构是开源的,也就是任何人只要有兴趣和时间都可以利用开源的代码在fpga设计出一款自己的CPU出来,我觉得这是一个深入芯片底层设计的很好的机会。从上层到底层,从知其然到知其所以然,这必将是一个循序渐进的过程,本文梳理了一下riscv上的环境搭建方法(ubuntu18.04),让系统在qemu上正常的运行起来。
bigmagic
2020/12/08
3.8K0
riscv64 qemu上进行Linux环境搭建与开发记录
Uboot 大全 | uboot 启动流程(二)
uboot在初始化完成后会为用户提供一个命令行交互接口,用户可通过该接口执行uboot定义的命令,以用于查看系统状态,设置环境变量和系统参数等。为了方便对硬件和驱动的管理,uboot还引入了类似linux内核的设备树和驱动模型特性。当然,为了增加系统的可配置性、可调试性以及可跟踪性等,它还支持环境变量、log管理、bootstage统计以及简单的ftrace等功能。下面将对这些特性做一简单的介绍。
刘盼
2023/01/05
2.1K0
Uboot 大全 | uboot 启动流程(二)
树莓派4 嵌入式Linux开发过程详解
在这篇文章中,将会通过树莓派4的Linux的启动过程,描述如何进行嵌入式Linux系统开发的思路。通过树莓派4B的启动流程,看到一个Linux启动过程,同时,通过一步一步搭建一个完整的树莓派嵌入式Linux开发环境,来指导分析各部分的开发过程。
bigmagic
2021/03/25
8.2K1
​nuttx在riscv的qemu上运行体验
继阿里推出阿里OS,华为推出鸿蒙OS,腾讯的TencentOS tiny之后,小米也高调的推出Xiaomi Vela。各大互联网公司都在做自己的物联网操作系统,物联网操作系统已呈现百花齐放百家争鸣的态势。这篇文章主要讲Nuttx的使用。
bigmagic
2021/01/08
3.1K0
为riscv64编译uboot和grub
首先需要安装交叉编译工具链,可以用apt安装riscv64的gcc编译工具链。我是自己编译了一个musl-gcc,下载:
灯珑LoGin
2023/11/20
5920
添加环境变量export PATH
这里可以看到如果使用rpi_4_32b_defconfig则使用32位的交叉编译工具:arm-linux-gnueabihf-gcc。如果使用rpi_4_defconfig则使用64位的交叉编译工具:aarch64-linux-gnu-gcc。遴选真题(这里总结的教训是:做之前多百度,因为不知道rpi_4_defconfig需要64位的交叉编译工具而失去无数头发)。这里我使用的是64位的。下载aarch64-linux-gnu-gcc:
用户7737280
2021/11/27
1.7K0
在树莓派3b上运行uboot
最近想研究一下树莓派3b的一些底层驱动的代码,比较好的就是直接可以看树莓派3b的实现。因为usb驱动,网卡驱动,以及lcd驱动,都可以在uboot中直接找到。有了这些东西,对于我们直接写树莓派3b的驱动程序,提供了极大的帮助,所以现在先在树莓派3b上编译运行起来uboot。
bigmagic
2020/04/14
2.1K0
在树莓派3b上运行uboot
RK1126从入门到放弃:(零)预备篇
进入工程目录下有buildroot、app、kernel、u-boot、device、docs、external等目录。每个目录或其子目录 会对应一个git工程,提交需要在各自的目录下进行。
TSINGEYE清眸物联
2023/01/04
9400
RK1126从入门到放弃:(零)预备篇
搭建qemu RISC-V运行Linux环境
目前虽然RISC-V的硬件开发板能够运行Linux的十分难得,从探索RISCV的生态的角度上来看,使用模拟器也是一种非常好的方式。使用QEMU能够很好的模拟RISCV的硬件资源,后期有实际的开发板后将其软件生态移植上去也并不复杂。
bigmagic
2021/05/18
10.4K13
搭建qemu RISC-V运行Linux环境
i.MX6ULL嵌入式Linux开发1——uboot移植初探
本系列教程以「i.MX6ULL」处理器的ARM开发板为实验基础,学习记录嵌入式Linux开发的各种知识与经验,主要内容包括嵌入式Linux移植,嵌入式Linux驱动开发,嵌入式Linux应用开发等。
xxpcb
2021/07/20
2.6K0
uboot下载
通过wind把SD卡格式化为FAT32模式 sudo fdisk -l //查看分区信息
全栈程序员站长
2022/09/07
2K0
使用 qemu 运行 linux 5.17
本篇记录下本地搭建QEMU环境,运行linux 仿真环境,这样就可以运行自己编译或修改的内核了。
一只小虾米
2023/01/18
2.2K0
Android源码下载与编译全过程
摘要:本文是根据自己亲手编译源码过程所总结的一个开发笔记(包括编译流程,可能遇到的错误,以及错误解决的办法等),首先介绍了基于Ubuntu9.10的编译环境的建立,再次介绍了整个源码的获取方式,最后讲解了源码的编译过程(包括源码的打包处理,u-boot的编译,Linux的kernel的编译,android文件系统的编译)。本文各个操作的开发环境是基于VMware7.10虚拟机的Ubuntu9.10环境。当然不同的版本的Linux可能操作过程有点差异,所遇到的错误可能不同,但是各个操作思想是一致的。
用户4148957
2022/06/14
1.9K0
利用QEMU+GDB调试Linux内核
对用户态进程,利用gdb调试代码是很方便的手段。而对于内核态的问题,可以利用crash等工具基于coredump文件进行调试。
嵌入式与Linux那些事
2022/05/24
3.6K0
利用QEMU+GDB调试Linux内核
树莓派4上使用uboot+tftp调试rt-thread程序
因为嵌入式往往需要把程序放到板子上去运行,而再树莓派上做rt-thread开发调试的时候,通常有三种办法。
bigmagic
2020/05/27
1.9K0
从零构建一个riscv64 ubuntu-20发行版系统
book@100ask:~$ qemu-riscv64-static -version
韦东山
2021/12/08
2.4K0
从零构建一个riscv64 ubuntu-20发行版系统
X86_64平台上利用qemu安装aarch64架构的虚拟机「建议收藏」
2020.1.4更新:下面有些评论说现在安装不会遇到类似问题了,本博客参考意义不大,请绕行。 20200704更新:请参考https://wiki.ubuntu.com/UEFI/virt-install,现在安装过程没有什么问题了
全栈程序员站长
2022/11/02
10.8K0
相关推荐
RISC-V64 opensbi启动过程
更多 >
LV.0
TCL通讯Android工程师
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验