问题标签 [microblaze]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
assembly - 在 Microblaze 上启动时访问 MMU/TLB
我正在寻求在 Microblaze 上设置 TLB(实际上是在 OVP 上模拟),并已C_USE_MMU
设置为3
.
这是我的启动代码:
下面的行更新r1
为0x00040000
您所期望的:
但在下一行:
的值msr
保持不变,因此代码继续失败:
和:
(由于msr
尚未更新,它仍然读取0x00000000
,因此处理器在评估没有可用的 MMU 支持时是正确的)。
为什么我的代码不会更新msr
?
endianness - Barrelshifter 移位和字节序
我假设使用 Microblaze 桶形移位器进行移位没有简单移位的字节顺序复杂性,例如
r11 == r11 * 2
不管选择的字节顺序如何,都相当于?
memory-management - 为什么访问未映射的位置不会产生硬件异常 (Microblaze)
我想编写我的代码来处理 Microblaze 上的 TLB 未命中,当然还有页表等。这一切都在 OVPsim 上完成。
当我边走边学的时候,我编写了这个小程序集来引用一个未映射的位置(0x1000000)——我将它作为特权代码运行,并在 VM 上运行:
(即,将r20 == 0
out的内容写入ORing形成的地址r12 == 0x1000000
,r0 == 0 => 0x1000000
显然。)
但是 GDB 没有跳转到异常向量,而是报告“程序收到 SIGSEV”——我做错了什么?我没有在 MSR 中启用硬件异常位,但手册说您在任何情况下都不能屏蔽这些异常,所以这不应该是问题。
更多信息无论我是否使用调试器,我都无法执行任何异常处理代码(例如,包括未对齐异常)(除非我明确调用它)。关闭调试器后,我从 OVPsim 得到了这个输出(注意我只是改变了测试地址——上面的 0xA000000 和 0x100000 之间的区别没有意义):
这是所有代码都在特权模式下运行,所以我看不出它不调用处理程序的明显理由,除非我没有正确配置 Microblaze。我打开了这些:
没有理由相信这不会奏效,因为 OVPsim 将在 Microblaze 上运行 Linux。
gcc - 在 Microblaze/OVPsim 上访问半主机
我正在 OVPsim 上为 Microblaze 编写代码,想知道是否可以将半主机与我自己的链接器脚本和分页方案一起使用(即不使用crt0
?
我已经使用半主机构建了我的平台,但是当我的程序集遇到全局.exit
时 - 没有任何反应 - 下面的代码示例:
(我知道这应该被半主机自动捕获并导致模拟结束)。
我正在使用我自己的链接器脚本和我自己的 makefile:
如果我删除我的链接器脚本,则代码不会使用 OVP 提供的 makefile 进行编译(适合构建我的代码):
当我使用它时,无论是使用我自己的 makefile 还是 OVP 提供的 makefile,代码都会编译,但我似乎无法访问半主机。
我可以在不使用crt0
其他的情况下访问半主机吗?
更新
这就是我的代码开头的样子......
(你可以在https://github.com/mcmenaminadrian/mb_boot/blob/master/startup.S看到所有这些)
assembly - 我怎样才能让 GDB 前进到正确的地方?
我正在使用 GDB 和在 OVPsim 下运行的 Microblaze 程序集。我有以下问题:
即,虽然我要求 GDB 推进到一个特定的符号,但它远远超出了它——甚至似乎知道它已经远远超出了它。我想我可以要求它前进到特定地址(在本例中为 0x574),但有更通用的解决方案吗?
gcc - 在命令行上替换 .SET
我有一些(Microblaze)程序集需要构建(通过 GCC 交叉汇编器和链接器)并使用(相同)常量多次执行,目前通过
命令,每次都更改。
有没有办法以这种方式自动设置汇编常量,从而避免为每个构建重置代码的枯燥任务?
fpga - MicroBlaze 处于 RESET 状态
我正在使用 Atlys Spartan6 xc6slx45。运行程序时出现以下错误:
文件系统.ucf:
system.mhs 的一些细节:
我应该为重置设置什么值才能使 microblaze 工作。
fpga - 如何使用 sdk 从 microblaze 上的内存中读取数据
我使用 atlyse spartan-6 xc6slx45 并尝试在 sdk 上执行 C 代码,该代码允许从 microblaze 的内存中读取数据,然后对两个矩阵进行乘法运算。我发现许多教程可以对两个输入矩阵进行初始化C代码。任何人都可以有一个想法或教程如何配置代码以从microblaze的内存中读取数据输入?
fpga - Xilinx Virtext 5 microblaze digilent 与 Pmodacl 或 pmodjstck 通信
我有一个项目,我需要使用 digilent 的 microblaze 和 Pmodacl 或 Pmodjstck 来控制我的 Irobot 创意。
我已经将我的外设设置为 SPI 接口(我也了解 SPI 工作);但是,我不知道如何与 pmodacl 通信?
我已经搜索了整个网络,但我没有看到任何示例如何做到这一点。如果你给我一些例子,我会很有帮助。
vhdl - 在部分重配置中控制 icap
我将在 virtex5 Xilinx Board 上实现部分重新配置。我已经编写了 3 个模块(顶部模块和递增计数器和递减计数器)并通过 Plan-ahead 创建了位流。结果由 2 个 LED(递增或递减计数)显示。我的问题是如何交换柜台分区?或者如何通过时间或外部信号控制icap?我更喜欢不使用 Microblaze,所以为 icap 编写状态机如下:
我将其中一个计数器(例如递增计数器)的位流(.coe 文件)保存在 ROM 中。默认情况下,电路是递减计数,但是当我通过 icap 交换比特流(从 ROM 加载递增计数器的 .coe 文件)时,没有任何反应并且电路正在递减计数。(代码中的*****)我该如何解决?