我想使用Altera MM Mailbox IP组件在Aria V hps和我的nios处理器之间进行通信。
我设法写下了Nios处理器(FPGA端)的C代码来处理邮箱IP,然后我通过EDS使用sopc-create- header -files为HPS制作了头文件。
这就是sopc-create-header-files为我做的:
#define MAILBOX_SIMPLE_0_COMPONENT_TYPE altera_avalon_mailbox_simple
#define MAILBOX_SIMPLE_0_COMPONENT_NAME mailbox_simple_0
#define MAILBOX_SIMPLE_0_BASE 0x60
#define MAILBOX_SIMPLE_0_SPAN 16
#define MAILBOX_SIMPLE_0_END 0x6f但是我不知道怎么用它。在NIOS IDE中我已经包含了库altera_avalon_mailbox_simple.h,而在DS-5中我没有这个库。是否有任何其他邮箱库我应该包括在我的DS-5项目?也许我应该使用相同的方法将邮箱映射为外围设备?
void mmap_fpga_peripherals()
{
h2f_lw_axi_master = mmap(NULL, h2f_lw_axi_master_span, PROT_READ | PROT_WRITE, MAP_SHARED, fd_dev_mem, h2f_lw_axi_master_ofst);
if(h2f_lw_axi_master == MAP_FAILED)
{
printf("ERROR: h2f_lw_axi_master mmap() failed.\n");
printf(" errno = %s\n", strerror(errno));
close(fd_dev_mem);
exit(EXIT_FAILURE);
}
fpga_buttons = h2f_lw_axi_master + BUTTONS_0_BASE;
fpga_hex_displays[0] = h2f_lw_axi_master + HEX_0_BASE;
fpga_hex_displays[1] = h2f_lw_axi_master + HEX_1_BASE;
fpga_hex_displays[2] = h2f_lw_axi_master + HEX_2_BASE;
fpga_hex_displays[3] = h2f_lw_axi_master + HEX_3_BASE;
fpga_hex_displays[4] = h2f_lw_axi_master + HEX_4_BASE;
fpga_hex_displays[5] = h2f_lw_axi_master + HEX_5_BASE;
}但我不认为我应该使用mmap_fpga_peripherals()来映射邮箱。我没有把握。
发布于 2021-10-13 08:02:59
您还应该通过通常位于路径intelFPGA/xxx/embedded/host_tools/altera/device_tree.下的sopc2dts生成设备树二进制文件然后在邮箱设备的基础上编写Linux驱动程序。有关详细信息,请参阅Linux项目中的规范。
Documentation/devicetree/bindings/mailbox/altera-mailbox.txt
Documentation/mailbox.txt
drivers/mailbox/mailbox.c
drivers/mailbox/mailbox-altera.c
drivers/mailbox/mailbox-test.c
include/linux/mailbox_client.h
include/linux/mailbox_controller.hhttps://stackoverflow.com/questions/67658836
复制相似问题