- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们可以使用 EDK 在 Microblaze C 编程中展开循环吗?
这是必需的,因为我需要更多性能。传统上,我的 C 代码将串行运行,因此使用一些编译器指令展开循环可以加速我的应用程序。
(例如,就像我们使用 openMP 所做的那样)。
#pragma Unroll
for (i = 0; i < 100; i++ ) {
a[i] = fetch_data(i);
}
对于 Microblaze 这可能吗?如果是,是否有相同的例子?
最佳答案
不,没有像那样的任何自动循环展开。对于像这样的紧密循环,Xilinx 论坛上的常见建议是手动展开 10-20 次,看看性能是否可以接受,或者在汇编中编写循环代码。
您通常会在每个循环分支上损失 3 或 4 个时钟周期,因此根据 fetch_data 执行的时间长短,您可以计算出您想要执行多少展开。
for (i = 0; i < 100; i+=10 ) {
a[i] = fetch_data(i);
a[i+1] = fetch_data(i+1);
a[i+2] = fetch_data(i+2);
a[i+3] = fetch_data(i+3);
a[i+4] = fetch_data(i+4);
a[i+5] = fetch_data(i+5);
a[i+6] = fetch_data(i+6);
a[i+7] = fetch_data(i+7);
a[i+8] = fetch_data(i+8);
a[i+9] = fetch_data(i+9);
}
确保注意标准循环展开的注意事项,例如注意间隔大小不是增量步长的倍数。
关于c - 循环展开-Microblaze C编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10407389/
我有一个简单的 microblaze 设置,带有两个 GPIO(按钮和开关)。我想处理两个设备的中断。 这是我当前的非工作代码。 #include #include #include #include
我想编写我的代码来处理 Microblaze 上的 TLB 未命中,当然还有页表等。这一切都在 OVPsim 上完成。 在我学习的过程中,我编写了这个小程序集来引用未映射的位置 (0x1000000)
我们可以使用 EDK 在 Microblaze C 编程中展开循环吗? 这是必需的,因为我需要更多性能。传统上,我的 C 代码将串行运行,因此使用一些编译器指令展开循环可以加速我的应用程序。 (例如,
当我对在 Microblaze 上运行的代码进行一些修改时,有时会发现遵循相同路径的代码执行在运行时存在很大差异。为了说明我所说的相同路径的真正含义,请举个例子, if ( condition )
我想构建一个可重定位的库(即除了局部变量之外什么都没有。我还想强制库的位置位于内存中的固定位置。我认为这必须在 makefile 中完成,但我很困惑我必须做什么才能强制将库加载到固定位置。这是使用 m
我正在使用运行 Linux(内核版本 3.0)的 Xililnx 开发板。板上配置了microblaze。 我的主机运行 Ubuntu 12.04 X86_64 并安装了工具链 (tools-4.1.
我有一个针对 MicroBlaze CPU 的“c”代码。 当我在 Eclipse + GCC 或 Visual Studio 中调试代码作为 c 程序时,我得到了我想要的结果。 然而,当我在目标上奔
用 Microblaze 创建计时器的最佳方法是什么,这将使我能够让它更类似于 delay_ms() 或 sleep() 中的函数更传统的脚本? 很容易,我可以像这样创建一个愚蠢的函数: void d
一年多来,我一直在使用 C++ 为 Microblaze 处理器开发嵌入式软件。我的设计并没有那么复杂,所以我没有使用该语言强大的、面向对象的特性。 一段时间以来,我一直在努力增强我的设计结构。为此,
我有两个结构: Struct _size1 { union{ short a; struct { char
我正在 microblaze xilinx 13.1 中实现 UART。我想将rx值存储在fifo中,这是使用VHDL中的xilinx ipcore实现的。 我收到的字节是这样的, while(1)
我有一个用 C 编写的应用程序,用于 Xilinx Microblaze核。然而,性能并不是我想要的,所以我正在考虑重写汇编中的一些核心功能。我无法弄清楚如何让 Xilinx Platform Stu
在 echo 示例中,我们有这个函数可以再次发送相同的数据包,以便回显数据,我想更改它以便发送固定数据,无论用户发送什么,所以我更改了这个: err = tcp_write(tpcb, p->
有没有人为 MicroBlaze 编写过多线程 C++ 应用程序? Xilinx 文档指出: The standard C library provided with EDK is not built
所以我在互联网上找不到比 microblaze 和 lwip 的 echo 程序更简单的例子,它对我来说工作正常,这里是他们的文件: 回声.c: /* * Copyright (c) 2009 Xi
我对汇编语言和 microblaze cpu 还很陌生,并且在中断处理工作方面遇到问题。 我被迫编写自己的启动和初始化例程。 (通常包含在 crt0 中的东西)我想我在分支到指定地址的中断处理程序时做
我想要实现的目标是使用户空间中的内存块可以通过 PCIe 直接由 FPGA 板中的 DMA 内核访问(不受内核的任何干扰)。 为此,我在用户空间中使用 posix_memalign() 在用户空间中分
我正在 for 循环中尝试 xil_printf() 并通过 uart 将其提供给 SendBuffer。如何打印字符而不是整数?它所打印的只是十六进制数... uint32_t IRAM; for(
我的团队正在使用 microblaze,但我们在 ip 堆栈方面遇到了一些问题。 我通常不是嵌入式程序员,但我想学习如何提供帮助。 有没有关于IP栈的教程?这些是什么?它们是如何编程的?如何解决 IP
我有一个用 C 语言编写的应用程序,带有 Xilinx Microblaze 内核的内联汇编。我的内联汇编有一个延迟任务。函数“_delay_loop_X_x”正好延迟处理器每个循环的 4 个周期。输
我是一名优秀的程序员,十分优秀!