- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经成功地使用 Vivado 和 SDK 为 Digilent Zybo 板上的 Zynq XC7Z010
开发 VHDL 和 C。我也一直在使用 GNAT GPS IDE 学习针对 STM32F4
处理器的 Ada(使用受支持的开发板之一)。
GPS 还附带一组针对 XC7Z020
的 zynq7000
运行时(据我所知)。通过查看这些目标的 BSP,我相信生成的代码也应该在 XC7Z010
上运行,因为 ARM 内核看起来是相同的。可能会发现存在差异,在这种情况下,我将尝试基于现有的 zynq7000
BSP 构建一个特定的运行时(Adacore 已经记录了这个过程并给出了一个生成新的 STM32F4
BSP)。
我的主要问题是我不确定如何在我的 Zybo 上加载和运行生成的 Ada elf
文件。我尝试生成一个 BOOT.ini
文件,其中包含一个 FSBL
(使用 SDK 构建并使用我从 Vivado 导出的硬件)、一个比特流和 Ada elf
文件(Zybo 有一个 MicroSD 接口(interface),可以配置为启动设备,这与比特流和通过 Vivado/SDK 生成的 C elf
完美配合)。
无论如何,这没有用...我猜这可能是链接问题、引导加载程序问题或类似问题。以我目前的知识水平,现阶段我还不确定。
如有任何建议或指点,我们将不胜感激!
最佳答案
事实证明我的 BOOT.ini
没有问题,问题与访问我的比特流中定义的自定义 AXI
寄存器有关。如果我从 Ada 中删除这些引用,生成的 ELF
文件将完美运行。例如,使用 Text_IO.Put_Line()
在 Zybo 的 VCP 上打印,使用 Ada 运行时 delay
和 Clock
操作等。
由于某些原因,当我启动 Ada ELF
文件时,AXI
接口(interface)不工作。如果我将其替换为等效的 C,那么一切都很好。
这个特殊问题目前尚未解决,但与我原来的问题无关!
(这可能是 Ada 运行时依赖于 FSBL
或 u-Boot
来初始化它,不确定。如果您有任何意见,请随时发表评论知道,我也会在解决这个问题时添加评论)
**** 更新 ****
这里有一些额外的背景知识,并描述了我必须做些什么才能让我的自定义 AXI IP 正常工作。
所提供的 AdaCore BSP
(用于构建运行时的板级支持包)针对 Xilinx XC702
开发板。我使用的是 Digilent Zybo(旧版本)。这两 block 板使用不同的 Zynq 部件,XC702
基于 XC7Z020
而 Zybo 使用 XC7Z010
(有一个新版本带有XC7Z020
选项)。
我按照 AdaCore 说明(可在他们的网站上找到)专门为 Zybo 构建了一个 BSP
。最初我只是更新时钟细节,因为 Zybo 以不同的速度运行,然后验证 Ada delay
函数是否正常工作(作为 Ravenscar
运行时构建的一部分提供来自更新的 BSP
)。但是,我的自定义 AXI
IP 仍然无法正常工作...
长话短说,Ada 运行时包含名为 start-ram.S
的汇编文件,其中包括设置 MMU
。有一个名为 memmap.inc
的包含文件,其中包含作为一系列 .long
指令的实际 MMU
页面定义。我必须通过编辑特定指令来更新 AXI_GP0
地址条目,
.long 0x43c10c16 @ for 0x43c00000, axi_gp0
之前它被设置为 0x00000000 @ for 0x43c00000, *none*
。这些条目在 start-ram.S
中解码,然后用于配置 MMU
(前 12 位设置页面,其余位被切碎并用作页面配置)。
所以,一旦我在我的 Zybo BSP
中编辑了这个文件并重新构建了运行时,IP 就可以从 PS 访问并按预期工作。这一切都花了一些时间才弄清楚,但这是值得的,因为我在探索死胡同的同时学到了很多东西!
我希望这对将来的人有所帮助,我也强烈推荐使用 Ada 进行 Zynq 开发,尤其是当您最终需要 DO-178 认证或类似认证时。
关于ada - 使用 Digilent Zybo 开发板在 Zynq 上运行 Ada,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49374281/
如何在过程中编写迭代器?对不起我的转储问题,我是新手。感谢您的回答。 最佳答案 这完全取决于您需要迭代的内容。 数组?使用loop : plain, for, or while. predefined
我现在知道很多编程语言。回到我 18 岁的时候,我几乎加入了美国空军,并且对 Ada 进行了测试。那是十多年前的事了。 Ada 编程语言在军队中是否仍然像以前一样重要? 我想知道新的军事软件项目是否仍
在 Java 或 C# 中,您经常会拥有 final 的类成员。或 readonly - 它们设置一次,然后再也不碰。它们可以为类的不同实例保存不同的值。 艾达有没有类似的东西?我试图在 Ada 中创
即使使用这个简单的示例,我也无法让动态调度正常工作。我相信问题在于我如何设置类型和方法,但看不到在哪里! with Ada.Text_Io; procedure Simple is type A
我目前正在自学 Ada,尽管我可以从解决一些更传统的问题开始。 更具体地说,我尝试计算阶乘 n!,而 n>100。到目前为止,我的实现是: with Ada.Text_IO; with Ada.Int
目前正在学习 Ada 并真正享受它,有一件事情困扰着我:什么是 tagged类型?根据 John Barnes 的 Programming in Ada 2012,它表示实例化的对象在运行时带有标签。
你好 我正在尝试我在 Ada 中创建单人骰子游戏的第一个程序。 但面临着保持球员得分的问题。 目标:每个玩家有 10 个回合,如果 2 次掷骰总数为 7,则获得 10 分 问题:每次总分被重置并且 1
您可以通过让函数返回一个值来分配给变量: My_Int : Integer := My_Math_Func [(optional params)]; 或者你可以用一个过程来做到这一点(假设 My_In
我试图在 Ada 中将字符转换为整数,似乎没有任何效果,到目前为止我已经能够从 ASCII 返回 DEC,但我想返回 0(整数)。 Character'Pos('0'); 返回 48 --我希望它返回
假设我有以下常量来定义一个只接受其范围定义内的有效值的子类型: type Unsigned_4_T is mod 2**4; valid_1 : constant Unsigned_4_T :=
我正在尝试创建一个 tree-sitter解析器,以便 IDE(在本例中为 Vim)可以解析 Ada 程序文本并进行更高级的操作,例如 extract-subprogram 和 rename-vari
我正在写一篇关于 Ada 83 的论文。我们有一个作业,列出了论文的各个部分(历史、设计目标、语法等)。讲师提到我们中的一些人将有一些部分简单地说“此语言不支持此功能。” 其中两个部分是数据类型和
假设我有以下常量来定义一个只接受其范围定义内的有效值的子类型: type Unsigned_4_T is mod 2**4; valid_1 : constant Unsigned_4_T :=
我正在尝试创建一个 tree-sitter解析器,以便 IDE(在本例中为 Vim)可以解析 Ada 程序文本并进行更高级的操作,例如 extract-subprogram 和 rename-vari
我想声明一个元素类型为变体记录的数组。像这样: type myStruct (theType : vehicleType) is record ... when car => numOfWheels
我正在实例化一个带有枚举的通用包,以访问多个值之一并在子程序重载中使用。我想要一组定义明确、编译时检查过的值,我可以使用和查找。 generic -- Different types beca
我有以下包: ------------------- -- File: father.ads ------------------- package Father with SPARK_Mode =>
对于最后的程序,我从 gnat 收到以下错误消息: test2.adb:23:61: error: invalid operand types for operator "-" test2.adb:2
我编写了一个加密文件的 Ada 程序。它逐 block 读取它们以节省目标机器上的内存。不幸的是,Ada 的目录库读取 Long_Integer 中的文件大小,将读取限制为近 2GB 文件。尝试读取超
我想打印访问变量(指针)的地址以进行调试。 type Node is private; type Node_Ptr is access Node; procedure foo(n: in out No
我是一名优秀的程序员,十分优秀!