Qemu支持ATF + u-boot + linux kernel

news2025/2/23 12:50:47

qemu环境搭建及ATF/u-boot/linux kernel的编译等,参考

从零开始搭建qemu调试环境 - 知乎

ATF编译:

wmx@wmx-VirtualBox:~/work/arm-trusted-firmware$ cat build-atf.sh
export ARCH=arm64
export CROSS_COMPILE=/home/wmx/Downloads/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
make PLAT=qemu BL33=/home/wmx/work/u-boot/u-boot.bin all fip DEBUG=1

u-boot编译:

wmx@wmx-VirtualBox:~/work/u-boot$ cat build-uboot.sh
export ARCH=arm64
export CROSS_COMPILE=/home/wmx/Downloads/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
make qemu_arm64_defconfig
make

qemu+atf+uboot+linux启动:

wmx@wmx-VirtualBox:~/work$ cat qemu-atf-kernel.sh
qemu-system-aarch64 \
    -nographic \
    -M virt,secure=on,gic_version=3 \
    -cpu cortex-a53 \
    -smp 2 \
    -m 2048 \
    -d guest_errors,unimp \
    -bios /home/wmx/work/arm-trusted-firmware/build/qemu/debug/bl1.bin \
    -drive file=/home/wmx/work/buildroot/output/images/rootfs.ext4,if=none,id=blk1,format=raw \
    -device virtio-blk-device,drive=blk1 \
    -kernel /home/wmx/work/linux-4.19.294/arch/arm64/boot/Image \
    -semihosting-config enable=on,target=native

代码执行流程:

1)BL1加载BL2并跳转到BL2入口

2)BL2加载BL31

3)BL2加载BL33,即加载u-boot.bin

前面的加载过程会用到plat/qemu/common/qemu_io_storage.c中定义的文件名,需要修改为本机的实际存储位置

4)BL2返回到BL1,并从BL1进入BL31

此时BL31由于尚未设置其自身的smc异常处理程序而无法直接处理该异常,因此,为了完成跳转流程,BL1需要先代理该异常的处理。因此BL1在退出之前先设置smc异常处理函数,

BL2触发smc启动BL31时,bl2/bl2_main.c 函数bl2_main中通过smc(BL1_SMC_RUN_IMAGE, (unsigned long)next_bl_ep_info, 0, 0, 0, 0, 0, 0); 进入BL1. 

BL1捕获该异常,进入bl1/aarch64/bl1_exceptions.S 的 SynchronousExceptionA64-> smc_handler64 ,并根据BL2传入的参数设置BL31的入口地址和系统初始状态,并通过ERET跳转到BL31的入口地址处执行

5)BL31会初始化GICv3及runtime service(SMC调用的服务),并进入BL33(u-boot)执行

BL31:

runtime_svc.c->runtime_svc_init函数:

主要是初始化SMC调用时的处理函数,rt_svc_descs通过 DECLARE_RT_SVC声明,并链接到RT_SVC_DESCS_START和RT_SVC_DESCS_END范围内. 当前qemu平台上会有两个rt_svc_descs, 分别是arm_arch_svc和std_svc。 分别在services/arm_arch_svc/arm_arch_svc_setup.c 和services/std_svc/std_svc_setup.c中声明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/991442.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无涯教程-JavaScript - IMCSCH函数

描述 IMCSCH函数以x yi或x yj文本格式返回复数的双曲余割。 复数的双曲余割定义为双曲正弦的倒数,即 csch(z) 1 /出生(z) 语法 IMCSCH (inumber)争论 Argument描述Required/OptionalInumberA complex number for which you want the hyperbolic cosecant.Required Not…

Python基础教程:索引和切片

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 索引(下标) 索引又称下标,用来表示可迭代对象中的某个元素的位置。 用正整数表示的索引值,从左向右定位,从 0 开始计数,如 0,1&#…

HarmonyOS/OpenHarmony(Stage模型)应用开发组合手势(二)并行识别

并行识别组合手势对应的GestureMode为Parallel。并行识别组合手势中注册的手势将同时进行识别,直到所有手势识别结束。并行识别手势组合中的手势进行识别时互不影响。 以在一个Column组件上绑定点击手势和双击手势组成的并行识别手势为例,由于单击手势和…

韶音耳机是哪个国家的品牌,韶音耳机属于什么档次

在如今耳机产品层出不穷的时代,许多品牌纷纷推陈出新,打造出更具创新性的耳机产品。其中,韶音耳机可谓引人注目。然而,对于韶音耳机这个品牌,仍有许多朋友并不熟悉。比如说,韶音耳机是哪个国家的品牌呢&…

数字孪生和GIS的结合如何改变现代农业?

数字孪生技术和地理信息系统(GIS)是两个独立但高度互补的领域,它们的结合在农业领域具有巨大的潜力,可以带来巨大的改变。在这篇文章中,我们将讨论数字孪生技术和GIS系统如何协同作用,为农业带来创新和可持…

缓存淘汰算法-LRU

目录 前言 一、LRU 算法 二、LRU 算法图解 三、LRU 算法实现 四、LRU 算法分析 五、LRU 算法改进方案 前言 我们常用缓存来提升数据查询速度,由于缓存容量有限,当缓存容量到达上限,就需要删除部分数据挪出空间,这样新数据才…

IP175LLF基本参数和引脚图

特性 宽工作温度范围IP175LLF(0C至70C) IP175LLFI(-40C至85C)内置5个MAC和4个PHY 每个端口可配置为10base-t、100Base-TX 最多2K个MAC地址支持自极性10Mbps 汽车MDI-MDIX 支持1个MII/RMII端口Layer2-4多字段分类器 支持8-MultiField输入支持交通政策支持多字段过滤器 支…

【word技巧】如何在word文件中方框打对勾?

Word文件制作了调查问卷或者信息表之类的文件,总是少不了有需要打勾的选项,如果打印成了纸质文件打勾就简单了,但是在word文件中应该如何在方框中打√符号呢?今天分享三个方法。 方法一: 先输入一个大写的R&#xff…

MES生产管理系统的五个关键组件

MES管理系统在当今制造业中发挥着越来越重要的作用。它是一种先进的生产管理系统,旨在连接企业资源计划(ERP)系统和生产现场之间的信息桥梁。在本文中,我们将探讨在制造过程中实施MES管理系统时需要考虑的几个关键因素。 首先&…

【漏洞复现】金和OA C6任意文件读取漏洞

漏洞描述 金和OA协同办公管理系统C6软件共有20多个应用模块,160多个应用子模块,涉及的企业管理业务包括协同办公管理、人力资源管理、项目管理、客户关系管理、企业目标管理、费用管理等多个业务范围,从功能型的协同办公平台上升到管理型协同…

计算机脚本的概念,如何编写、使用脚本 (Script)?

一、脚本的概念和使用场景 在计算机领域的脚本,指的是使用一种特定的描述性语言,依据一定的格式编写的可执行文件脚本语言又被称为扩建的语言或者动态语言, 是一种编程语言, 用来控制软件应用程序, 脚本通常是以文本 (ASCⅡ) 保存, 只是在被调用时进行解…

AFL++模糊测试

一、AFL 这里我们主要使用AFL Fuzzing 测试IOT的二进制文件,当我们解压提取一个固件时,能够获得大量的IOT二进制应用 ,如果要进行漏洞挖掘则需要将二进制文件进行逆向分析,然后查找危险函数以及输入接口,对于一个大型的…

管理类联考——数学——汇总篇——知识点突破——数据分析——计数原理——排列组合——成双

🌊 配对问题的解题思路:配对问题主要以鞋子或者手套来作为命题对象,其核心在于成双不成双,对于成双问题,直接选取整双即可,对于不成双问题,要先取成双的,然后从每双中取单只即可。 …

计算机使用中常用截图与标注方法

一、截图常用方法 1.windows自带快捷键 Print Screen SysPq 截取全屏,可以粘到word文档中,可以粘贴到"画图"程序中,命名一个文件名,另存为图片,或.jpg后缀,或.png后缀 alt Print S…

掌动智能国产化测试工具的重要性与优势

在信息技术领域的快速发展下,对于软件和硬件产品的质量和性能要求也日益提高。同时针对信创要求,国产化测试工具在这个过程中发挥着重要的作用,不仅能够提升产品的可靠性和稳定性,还能够降低测试成本和提高测试效率。作为国内领先…

win10怎么禁止软件联网

有一些用户发现软件在联网的状态下会进行自动更新,想要禁止软件联网却不知道如何操作,这里小编就给大家详细介绍一下Win10禁止软件联网的方法,有需要的小伙伴快来和小编一起看一看了解一下吧。 Win10禁止软件联网的方法: 1、按下…

【校招VIP】测试算法考点之链表

考点介绍: 链表是一种逻辑简单的、实用的数据结构,几乎被所有程序设计语言支持。单链表的操作算法是笔试面试中较为常见的题目。 测试算法考点之链表-相关题目及解析内容可点击文章末尾链接查看! 一、考点题目 1.一个长度为n的单向链表&am…

智能离子风棒联网监控静电消除器的工作原理和特点

智能离子风棒联网监控静电消除器是一种应用了物联网技术的设备,用于监测和控制静电消除过程。下面是该设备的工作原理和特点: 工作原理: 1. 检测静电水平:智能离子风棒内置传感器,可以实时监测环境中的静电水平。 2.…

高等工程数学张韵华版第四章课后题答案

下面答案仅供参考! 章节目录 第4章 欧氏空间和二次型 4.1内积和欧氏空间 4.1.1内积的定义 4.1.2欧氏空间的性质 4.1.3 正交投影 4.1.4 施密特正交化 4.2 正交变换和对称变换 4.2.1 正交变换 4.2.2 正交矩阵 4.2.3 对称变换 4.2.4 对称矩阵 4.3 二…

12-JVM调优实战-2

上一篇:11-JVM调优实战-1 1.JVM运行情况预估 用 jstat gc -pid 命令可以计算出如下一些关键数据,有了这些数据就可以采用之前介绍过的优化思路,先给自己的系统设置一些初始性的JVM参数,比如堆内存大小,年轻代大小&a…