qemu arm-trusted-firmware atf 的编译

news/2024/5/19 2:40:03 标签: arm开发, atf, tf-a

参考网站

  • ATF (arm-trusted-firmware),可以称之为 Trusted Firmware-A (TF-A),也就是 TF-A

  • https://www.trustedfirmware.org/

  • https://github.com/ARM-software/arm-trusted-firmware

环境

  • 使用 qemu,就是不需要板子

  • win10 64位 VMware Workstation Pro 16

  • ubuntu 20.04

  • qemu (虚拟ARM开发板),qemu aarch64 平台

  • ATF(TF-A)版本:2.9

  • gcc 交叉编译工具链:gcc version 12.2.1 20230401

下载 ATF

  • git clone https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git

  • 也可以从 github 下载:https://github.com/ARM-software/arm-trusted-firmware

编译方法

  • 配置好 gcc 交叉编译工具链,这里使用 gcc version 12.2.1 20230401,下载地址: https://snapshots.linaro.org/gnu-toolchain/12.2-2023.04-1/aarch64-linux-gnu/

  • 配置好 交叉编译工具链的 环境变量

  • 编译命令:make ARCH=aarch64 CROSS_COMPILE=aarch64-linux-gnu- PLAT=qemu all DEBUG=1

  • 【注意】新版本的 ATF,ARCH=aarch64 而不是 ARCH=arm64

在这里插入图片描述

编译产物

  • 主要为 :bl1.bin bl2.bin bl31.bin

在这里插入图片描述

qemu 引导验证

  • 当前没有 u-boot,貌似无法正确的引导,初步引起的信息如下

  • qemu.sh 脚本

#!/bin/bash

qemu-system-aarch64 \
        -nographic \
        -machine virt,secure=on \
        -cpu cortex-a53 \
        -smp 2 \
        -m 1024 \
        -bios bl1.bin \
        -semihosting-config enable,target=native
  • 备注: -semihosting-config enable,target=native 需要这条

  • 正常的板子,各个 bin 文件应该是烧写到 Flash 上的分区的,这里使用 qemu 模拟,需要本地文件的支持

  • chmod +x qemu.sh,执行 ./qemu.sh

在这里插入图片描述

小结

  • 初步了解 基于 qemu aarch64 平台 ATF 的编译方法,后面继续研究 如何与 u-boot 配合,引导整个Linux 系统

http://www.niftyadmin.cn/n/463436.html

相关文章

【数据结构】单链表 创建 插入 删除 查找 完整代码

3.1 单链表 3.1.1 定义 注: 元素离散的分布在存储空间中,所以单链表是非随机存取的存储结构。 即不能直接找到表中某个特定的结点,需要从表头开始遍历,依次查找。 定义的代码 typedef struct LNode {ElemType data;//每个节点存放…

Spring Cloud Gateway集成Nacos作为注册中心和配置中心

文章目录 前言POM依赖配置文件网关启动网关转发请求测试 源码 前言 本篇文章将介绍Spring Cloud Alibaba体系下Spring Cloud Gateway的搭建,服务注册中心和分布式配置中心使用Nacos,后续将会持续更新,介绍集成Sentinel,如何做日志…

关于机器人精度的总结(重复精度和绝对精度区分)

ABB系列某款机器人精度参数表 机械臂是工业生产中的重要设备,在焊接码垛 以及 非 接触测量等 领域中有 着重要应 用。然而由于机械臂本体制造中存在机械制造公差装配误差导致的运动学参数误差以及电机转角与关节转角间减速比误差等,导致机械臂存在重复性定位精度较高(0.05 mm …

津津乐道设计模式 - 模版模式详解(以女友化妆流程带你彻底明白)

🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Micro麦可乐的博客 🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战 🌺《RabbitMQ》…

关于Redis缓存问题的总结:缓存穿透、缓存击穿、缓存雪崩

文章目录 1、缓存穿透解决办法1. 布隆过滤器2.空值缓存:3. 异常处理: 2、缓存击穿解决方法1、设置热点数据永不过期 3、缓存雪崩解决方法1、合理规划key的过期时间2. 引入缓存预热:3. **使用多级缓存**:4、使用限流和熔断机制&…

【MySQL数据库】主从复制与读写分离

目录 一、读写分离1.1概述1.2为什么要读写分离呢?1.3什么时候要读写分离? 1.4主从复制与读写分离1.5mtsql支持的复制类型1.6主从复制工作流程1.7主从复制原理 二、主从复制实战 一、读写分离 1.1概述 读写分离,基本的原理是让主数据库处理事…

DNS-域名解析服务器-域名转IP原理-常用域名解析服务器地址-Python直接访问域名解析服务器

文章目录 1.DNS是什么?2.hosts文件2.1.window hosts文件2.2.linux hosts文件 3.常用域名解析服务器4.Python访问域名服务器4.1.dnspython安装4.2.查询指定域名IP 5.云服务器6.总结 1.DNS是什么? 域名系统(英文:Domain Name Syste…

AI绘图软件分享:Midjourney 基础教程(三)

大家好,我是权知星球,今天继续给大家分享Midjourney 基础教程(三):Midjourney 图生图。 刚开始学习使⽤ AI 绘画时,⼤部分⼈的绘画⽅式: 有⼀个想象中的画⾯,⽤中⽂将这个画⾯描述…