我正在尝试编写一个在嵌入式系统上与DMA接口的平台驱动程序。我们使用的是Zedboard和Xilinx的AXI DMA IP。然而,我相信我们的错误与Linux内核有关。
为了获得DMA的tx/rx通道,linux提供了dma_request_channel函数。此函数使用需要与DMA匹配的过滤器和过滤器参数。此函数获取系统中所有可用DMA的列表,并使用过滤器将其与我们想要的匹配。但是,这似乎不能获得所有可用的DMA,而只能获得一个。ARM内核自带PL330 hard IP DMA。这是它唯一能看到的。
内核代码如此复杂,以至于我被困在列表头文件中
谁能解释一下LIST_HEAD_INIT是做
我正在尝试将Wilink8内核模块与ZedBoard(Zync series SoC from Xilinx)集成,当我尝试编译我的linux- WiFi来创建uImage时,我得到了以下错误:
In file included from drivers/net/wireless/ti/wlcore/main.c:43:0:
drivers/net/wireless/ti/wlcore/version.h:1:39: error: macro "__TIMESTAMP__" might prevent reproducible builds [-Werror=date-time
我是新ZedBoard。我的ZedBoard在Xilinx 2015.4上运行(devicetree.dtb、boot.bin和uImage手动编译;其他文件来自预编译系统的原始存档)。我创建了非常简单的FPGA配置,只有PS,AXI GPIO和LED。在Vivado地址中,我可以看到这一行:
Cell Slave Interface Base name Offset addr. Range High addr.
axi_gpio_0 S_AXI Reg 0x4120_0000 64K 0x4120_FFFF
我想为这个FPGA配置创建自己的内
意图:
我在ZedBoard上读取内存中的数据,内存由32位长字组成,所以我使用以下缓冲区
type mem_word is array (0 to 127) of std_logic_vector(31 downto 0);
signal buffer_word : mem_word;
但是,我想以线性的方式,在中间的线性缓冲区中处理数据。
signal buffer_linear : std_logic_vector(4095 downto 0);
buffer_linear <= buffer_word; -- !!! PROBLEM
因此,我可以轻松地寻址缓冲区中的任何位