Cortex-A53 + GIC700 + Boot BRAM Vivado 全流程复现
Cortex-A53 GIC700 Boot BRAM Vivado 全流程复现本文档用于复现以下内容将 Cortex-A53 封装成 Vivado IPcortexa53_axi将 GIC700 封装成 Vivado IPgic700_a53_min搭建 A53 GIC700 AXI Boot BRAM UARTLite 外部 DDR AXI 端口的最小 BD编译 BRAM boot stub并初始化到 Boot BRAM编译一个 DDR payload用来模拟 Linux handoff 后的 DDR 取指路径运行 xsim 行为仿真确认A53 能从 BRAM 启动A53 能通过 AXI 读写 BRAMBRAM boot 能跳转到 DDR 地址窗口中的 payloadDDR payload 能读写 BRAM且读回结果一致注意当前流程验证的是 Linux handoff 路径不是完整 Linux kernel boot。要证明真实 Linux 完整起来还需要真实 LinuxImage、DTB、rootfs/initramfs以及足够大的 DDR/MIG 仿真模型。1. 环境要求当前工作目录cd/data/vmshare/cortex_a53需要的工具Vivado 2020.2命令行可执行vivadoAArch64 bare-metal 交叉编译器aarch64-none-elf-gccDevice tree compilerdtc本机已验证可用的工具路径/home/ubuntu/Xilinx/Vitis/2020.2/gnu/aarch64/lin/aarch64-none/bin/aarch64-none-elf-gcc /home/ubuntu/Xilinx/Vitis/2020.2/bin/dtc如果aarch64-none-elf-gcc不在PATH脚本会优先使用上面的 Vitis 路径。若本机没有该工具链可设置 Arm GNU Toolchain 下载链接exportARM_GNU_TOOLCHAIN_URLArm GNU Toolchain Linux x86_64 AArch64 bare-metal tarball URL./vivado_system/scripts/setup_toolchain.sh2. 可选清理如果希望从较干净的输出目录重新开始可以删除生成结果rm-rfvivado_ip/output vivado_ip/generatedrm-rfvivado_gic700_ip/outputrm-rfvivado_system/output这不会删除原始 ARM RTL 发布目录。3. 打包 Cortex-A53 Vivado IP执行chmodx vivado_ip/build_vivado_ip.shPARTxcvu19p-fsva3824-2-e ./vivado_ip/build_vivado_ip.sh生成的 IP 仓库vivado_ip/output/ip_repoIP 名称user.org:user:cortexa53_axi:1.0A53 wrapper 关键默认配置BOOT_ADDR启动地址默认0x0000000000PERIPHBASE_ADDRGIC/private peripheral base系统脚本中设置为0x2F000000GICCDISABLE默认0启用 A53 GIC CPU interface非必要复位、调试、低功耗、DFT、MBIST 等端口在 wrapper 内部 tie-offSYSBARDISABLE1避免简单 AXI/BRAM 仿真中 barrier 类事务导致死锁ca53_generic_ram已替换为 Vivado 友好的 RAM wrapper用于 BRAM/URAM 推断如果只想验证 IP 仓库是否能加载vivado-modebatch-sourcevivado_ip/scripts/validate_ip_repo.tcl-tclargs-partxcvu19p-fsva3824-2-e4. 打包 GIC700 Vivado IP执行chmodx vivado_gic700_ip/build_gic700_ip.shPARTxcvu19p-fsva3824-2-e ./vivado_gic700_ip/build_gic700_ip.sh生成的 IP 仓库vivado_gic700_ip/output/ip_repoIP 名称user.org:user:gic700_a53_min:1.0GIC700 wrapper 暴露的主要接口ACLK,ARESETNS_AXIGIC register AXI slaveM_GICD连接 A53S_GICDS_GICC连接 A53M_GICCTIMER_IRQ[3:0]来自 A53 timer IRQSPI[31:0]外部 SPI 中断当前系统中 UARTLite interrupt 接到SPI[0]WAKE_REQUEST,FAULT_INT,ERR_INT,PMU_INT状态输出低功耗、DFT、MBIST、sample、ACE-Lite sideband 等非必要信号在 wrapper 内部 tie-off。5. 构建 A53 GIC700 Boot BRAM 系统执行chmodx vivado_system/build_system.sh ./vivado_system/build_system.sh该脚本会完成编译vivado_system/boot/boot.S生成 BRAM 初始化文件编译 DTS 为 DTB调用 Vivado 创建 BD 工程主要输出vivado_system/output/vivado_system/a53_gic_bram_system.xpr vivado_system/output/boot/boot.elf vivado_system/output/boot/boot.bin vivado_system/output/boot/boot.coe vivado_system/output/boot/boot.mem128 vivado_system/output/linux/a53_gic_bram_system.dtb系统 BD 默认地址图Boot BRAM: 0x00000000 / 0x00010000 GIC700: 0x2F000000 / 0x00070000 UARTLite: 0x40600000 / 0x00010000 DDR AXI: 0x80000000 / 0x80000000系统顶层对外接口尽量少只暴露sys_clksys_resetnM_AXI_DDRUARTGIC 状态输出WAKE_REQUEST,FAULT_INT,ERR_INT,PMU_INT6. 运行 BRAM Boot Smoke 仿真执行chmodx vivado_system/run_boot_smoke_sim.sh ./vivado_system/run_boot_smoke_sim.sh该仿真验证A53 从 Boot BRAM 地址0x00000000取指boot stub 写 BRAM offset0x1000boot stub 读回并比较数据pass/fail 状态写到 BRAM offset0x0f00预期 PASSBOOT_SMOKE_PASS: BRAM write/readback matched status4252414d5f4f4b31 value01122334455667788 value199aabbccddeeff00日志vivado_system/output/logs/boot_smoke_sim.log7. 运行 Linux Handoff Smoke 仿真执行chmodx vivado_system/run_linux_handoff_smoke_sim.sh ./vivado_system/run_linux_handoff_smoke_sim.sh该脚本会重新构建 boot stub并设置KERNEL_ENTRY0x80080000 DTB_ADDR0x80100000 DDR_BASE0x80000000 DDR_SIZE_BYTES0x00200000然后编译vivado_system/payload/linux_handoff_payload.S并生成 DDR 仿真初始化文件vivado_system/output/payload/ddr.mem32仿真中A53 从 BRAM boot stub 启动。boot stub 先完成 BRAM 写读一致性检查。boot stub 设置 Linux handoff 寄存器x0 DTB_ADDRx1 0x2 0x3 0boot stub 跳转到KERNEL_ENTRY0x80080000。DDR AXI memory model 在0x80080000返回 payload 指令。payload 验证x0-x3并通过 AXI 写读 BRAM。预期 PASSLINUX_HANDOFF_PASS: BRAM boot jumped to DDR payload and BRAM read/write matched boot_status4252414d5f4f4b31 linux_status4c494e55585f4f4b value00badf00d12345678 value1fedcba9876543210日志vivado_system/output/logs/linux_handoff_smoke_sim.log8. 在 Vivado GUI 中加载 IP 仓库打开任意 Vivado 工程后添加两个 IP reposet_property ip_repo_paths [list \ /data/vmshare/cortex_a53/vivado_ip/output/ip_repo \ /data/vmshare/cortex_a53/vivado_gic700_ip/output/ip_repo \ ] [current_project] update_ip_catalog应能在 IP Catalog 中看到cortexa53_axi gic700_a53_min也可以直接打开系统工程vivado vivado_system/output/vivado_system/a53_gic_bram_system.xprBD 文件路径vivado_system/output/vivado_system/a53_gic_bram_system.srcs/sources_1/bd/a53_gic_bram_system/a53_gic_bram_system.bd9. 接入 DDR MIG 的硬件连接方式系统 BD 已将 SmartConnect 的M03_AXI做成外部接口并命名为M_AXI_DDR在硬件工程中把M_AXI_DDR连接到 DDR MIG 的 AXI slave 侧。默认地址窗口0x80000000 .. 0xffffffffBoot BRAM 初始化文件可使用vivado_system/output/boot/boot.mem128 vivado_system/output/boot/boot.coe如果希望硬件上让 BRAM boot 直接跳到 DDR 中的 Linux Image重新构建 boot stubKERNEL_ENTRY0x80080000DTB_ADDR0x88000000 ./vivado_system/build_system.sh含义KERNEL_ENTRYLinuxImage在 DDR 中的入口地址DTB_ADDRDTB 在 DDR 中的地址启动前需要保证 DDR 中已经放好Linux Image - KERNEL_ENTRY DTB - DTB_ADDR rootfs - 按 bootargs 或 initramfs 方案放置10. 当前 Linux Bring-Up 边界当前已经验证A53 IP 可被 Vivado 加载GIC700 IP 可被 Vivado 加载两个 IP 能在 BD 中互连Boot BRAM 能放置 boot stubA53 能从 BRAM 启动A53 能通过 AXI/SmartConnect 访问 BRAMBRAM boot 能跳到 DDR 地址窗口Linux handoff register contract 已在仿真中检查当前尚未验证真实 LinuxImage完整启动Linux 初始化真实 GIC700 后的中断行为真实 MIG DDR 时序/校准UART 控制台打印真实 Linux logrootfs/initramfs 挂载要做完整 Linux boot建议下一步加入真实 LinuxImage与地址图匹配的 DTBinitramfs 或可访问的 rootfs更大的 AXI DDR/MIG simulation modelboot stub 中必要的 EL、cache/MMU、CNTFRQ_EL0设置或直接替换为 TF-A/U-Boot11. 快速检查命令检查两个 smoke 仿真是否通过grep-EBOOT_SMOKE_PASS|LINUX_HANDOFF_PASS\vivado_system/output/logs/boot_smoke_sim.log\vivado_system/output/logs/linux_handoff_smoke_sim.log预期看到BOOT_SMOKE_PASS: BRAM write/readback matched LINUX_HANDOFF_PASS: BRAM boot jumped to DDR payload and BRAM read/write matched检查关键输出文件是否存在ls-lh\vivado_ip/output/ip_repo\vivado_gic700_ip/output/ip_repo\vivado_system/output/vivado_system/a53_gic_bram_system.xpr\vivado_system/output/boot/boot.mem128\vivado_system/output/linux/a53_gic_bram_system.dtb\vivado_system/output/payload/ddr.mem3212. 常见参数修改修改启动地址BOOT_ADDR0x0000000000 ./vivado_ip/build_vivado_ip.sh在系统 BD 中create_a53_gic_bram_system.tcl默认把BOOT_ADDR设置成-boot_base当前为0x00000000修改 Linux handoff 地址KERNEL_ENTRY0x80080000DTB_ADDR0x88000000 ./vivado_system/build_system.sh修改器件型号PARTxcvu19p-fsva3824-2-e ./vivado_ip/build_vivado_ip.shPARTxcvu19p-fsva3824-2-e ./vivado_gic700_ip/build_gic700_ip.shPARTxcvu19p-fsva3824-2-e ./vivado_system/build_system.sh当前默认器件就是xcvu19p-fsva3824-2-e

相关新闻

QCoro:用C++20协程重构Qt异步编程,告别回调地狱

QCoro:用C++20协程重构Qt异步编程,告别回调地狱

1. 项目概述:当Qt遇上C20协程如果你是一名长期在Qt框架下摸爬滚打的C开发者,最近几年可能和我有同样的感受:一方面,我们享受着Qt强大的信号槽机制、跨平台UI能力和丰富的模块生态;另一方面,当处理异步I/O、…

2026/7/30 8:09:06阅读更多 →
DC-2靶场渗透实战:从信息收集到权限提升的完整攻击链解析

DC-2靶场渗透实战:从信息收集到权限提升的完整攻击链解析

1. 项目概述:从靶场到实战的桥梁 DC-2靶场,对于很多刚入门网络安全、想上手渗透测试的朋友来说,是一个绕不开的经典练手环境。它不像一些大型综合靶场那样复杂,也不像DVWA那样功能模块化,DC-2更像是一个精心设计的“密…

2026/7/30 8:09:06阅读更多 →
大模型检索中的嵌入损失函数:Triplet/Contrastive/Angular对比与实践

大模型检索中的嵌入损失函数:Triplet/Contrastive/Angular对比与实践

1. 大模型检索技术中的嵌入损失函数核心价值 在构建大模型检索系统时,嵌入质量直接决定了语义匹配的精准度。就像图书馆的图书编码系统决定了读者找书的效率一样,损失函数就是那个隐形的编码规则制定者。过去三年我参与过7个不同行业的检索系统搭建&…

2026/7/30 8:09:06阅读更多 →
3个颠覆性功能:用SillyTavern打造沉浸式AI角色对话体验

3个颠覆性功能:用SillyTavern打造沉浸式AI角色对话体验

3个颠覆性功能:用SillyTavern打造沉浸式AI角色对话体验 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern SillyTavern是一个专为AI角色对话设计的强大前端界面,它让普…

2026/7/30 9:25:30阅读更多 →
2026 年最适合 AI 智能体的搜索工具有哪些?优选精准适配垂直领域的产品

2026 年最适合 AI 智能体的搜索工具有哪些?优选精准适配垂直领域的产品

要为你的 AI 智能体挑选合适的搜索工具,不妨先问自己一个问题:你是希望由 API 完成内容处理工作,还是更愿意自行搭建处理管线?过去的搜索工具一直是程序化的:你发送一条查询,得到一组链接、标题和摘要&…

2026/7/30 9:25:30阅读更多 →
Python安全编程实战指南:从漏洞防御到工程实践

Python安全编程实战指南:从漏洞防御到工程实践

1. 项目概述:为什么Python开发者必须关注安全编程?最近在社区里,看到不少朋友在讨论Python的各种应用,从数据分析、自动化脚本到Web开发,Python的身影无处不在。但聊到安全,很多人的第一反应往往是“那是运…

2026/7/30 9:25:30阅读更多 →
环保在线监测系统中的异常数据识别:从规则判断到 Python 实现

环保在线监测系统中的异常数据识别:从规则判断到 Python 实现

前言 环保在线监测系统每天会产生大量数据,例如废气流量、颗粒物浓度、二氧化硫浓度、氮氧化物浓度、污水流量、化学需氧量、氨氮、pH值以及设备运行状态等。 这些数据通常会经过采集仪器、数据采集传输设备、网络和管理平台等多个环节。任何一个环节出现传感器故障…

2026/7/30 9:25:30阅读更多 →
Ubuntu与Windows网线直连:搭建高速稳定开发环境全攻略

Ubuntu与Windows网线直连:搭建高速稳定开发环境全攻略

1. 项目概述:为什么选择网线直连?如果你手头有一台Ubuntu服务器(可能是闲置的旧电脑、树莓派,或者一台没有显示器的开发机)和一台Windows笔记本,想要快速搭建一个稳定、高速的开发或调试环境,那…

2026/7/30 9:25:30阅读更多 →
如何用MetaboAnalystR快速完成LC-MS代谢组学分析:面向科研人员的完整指南

如何用MetaboAnalystR快速完成LC-MS代谢组学分析:面向科研人员的完整指南

如何用MetaboAnalystR快速完成LC-MS代谢组学分析:面向科研人员的完整指南 【免费下载链接】MetaboAnalystR R package for MetaboAnalyst 项目地址: https://gitcode.com/gh_mirrors/me/MetaboAnalystR 代谢组学研究正成为生命科学领域的热点,但面…

2026/7/30 9:23:30阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/29 9:47:45阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/29 7:00:19阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/29 7:58:51阅读更多 →
3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 🚀 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 你是否曾经因为iOS系统的严格…

2026/7/30 0:00:58阅读更多 →
[GESP202606 四级] 扫雷

[GESP202606 四级] 扫雷

B4557 [GESP202606 四级] 扫雷 https://www.luogu.com.cn/problem/B4557 中国计算机学会(CCF)2026年6月C四级讲解——扫雷 https://www.bilibili.com/video/BV1MCMg6AEXR/ B4557 [GESP202606 四级] 扫雷 https://www.bilibili.com/video/BV1ZKTj6ZEVh/ 2…

2026/7/30 0:00:58阅读更多 →
Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:58阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/30 0:27:26阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/30 4:47:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/29 14:26:42阅读更多 →