gpt4 book ai didi

assembly - Zynq 上的裸机组装程序,没有 Vivado/SDK

转载 作者:行者123 更新时间:2023-12-03 23:38:14 31 4
gpt4 key购买 nike

我有一个问题想问那些熟悉 Xilinx Zynq 和相关设计工具的人......

  1. 是否可以为 Zynq 7010 (Zybo dev board) 编译和运行 C 代码不使用 Xilinx 工具链 (Vivado/SDK)
  2. 是否可以在 Zynq 上汇编和运行 ARM 汇编代码 (Thumb2)不使用 Xilinx 工具链 (Vivado/SDK)?我的意思是编写一个不使用任何 Xilinx 驱动程序库或自动生成的初始化代码的程序(即构建您自己的简单向量表,为各种异常处理程序提供定义等)
  3. 如果没有,是否至少可以从 SDK 中组装和链接 ARM 汇编代码?

我正在帮助将一个介绍性嵌入式系统类(class)从 STM32F4(ARM M3 开发板)移植到 Zynq,前几周总是介绍组装。通常我们使用 arm-none-eabi 工具链从命令行手动执行所有操作,因此我会对维护该结构感兴趣,而不是立即跳入 Xilinx Vivado/SDK 环境。但是,如果没有 Xilinx 工具套件,我无法找到任何有关对器件进行编程的资源,我觉得这很奇怪。我无法想象这是不可能的,所以任何信息将不胜感激。

谢谢!

最佳答案

我没有使用 ZyBo 的直接经验,但是我多次遇到类似的情况,我学会了如何从互联网(甚至在互联网之前)收集信息并用一些逆向工程,然后是反复试验。

我收集了一些我认为有用的信息,但我从未拥有过 ZyBo,所以对此持保留态度。
另外,如果您不了解某些术语,请花时间阅读链接的文档。


看来您可以避开 Vivado SDK 和 IDE 的一部分,Zynq 7000 Software Developer guide附录 A 中描述了使用 bootgenBIF 文件生成启动镜像。

在 Zybo 术语中,引导镜像包含 BootROM header 和第一阶段引导加载程序(引导过程的第一阶段,它还包含用户代码)。
请注意,BootROM 本身是不可写的,因此您无法更改阶段 0,除非您找到破解它的方法(虽然这不是一个好主意,阶段 0 只做最少的工作并使板可用)。

取自该手册的示例

// A simple BIF file example.
the_ROM_image:
{
[init]init_data.int
[bootloader]myDesign.elf
Partition1.bit
Partition1.rbt
Partition2.elf
}

手册明确指出ELF是一种受支持的文件格式(至少我希望它是 that ELF)。

因此,您可以使用 GCC 生成 ARM ELF,然后使用 bootgen 制作启动镜像(当然没有 C 运行时)。
也支持二进制文件,因此任何 ARM 汇编程序都可以。
这应该避免任何 SDK 初始化代码,只在您的代码之前执行阶段 0。

Zynq 7000 Technical Reference Manual详细描述了BootROM头格式。
它还解释了各种硬件组件和做出的架构决策,包括启动过程和各种裸机选项。
因此,您甚至可以摆脱 bootgen 并制作自己的工具。

BootROM header 似乎有一个字段用于在 XIP 模式下定义中断表,但是,如上所述,它是 BootROM 执行的第一个代码,因此您不必从 ARM 复位向量开始。


熟悉 SDK,但我敢肯定,如果您窥探 SDK bin 文件夹,您会发现很多用于 ARM 工具链的常用 GNU 工具(几乎就像发生在 Android NDK 上一样)。
XILINX 在其一份文件中(唉,我不记得是哪一份了)声明他们使用了标准的 GNU 工具,并进行了轻微的扩充。

至于避免使用 XILINX 库,您可以尝试阅读它们的源代码(如果有)或反汇编它们的二进制文件。
在技​​术引用手册的帮助下,您应该能够首先避免它们。


XILINX 在链接的两个文档(shorter one is here)上很好地描述了它的董事会,阅读这两个文档将解释很多事情。

通常供应商会重用现有工具,因此,除非 XILINX 自己开发,否则您应该会发现 IDE 使用的命令行工具很熟悉。
在深入了解 Vivado SDK 的工作原理后,您甚至可能会开始喜欢它!

关于assembly - Zynq 上的裸机组装程序,没有 Vivado/SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41751536/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com