Связь между FPGA и Aria V HPS?

# #c #fpga #intel-fpga #nios #qsys

Вопрос:

Я хочу установить связь с помощью IP-компонента почтового ящика Altera MM между Aria V hps и моими процессорами nios.

Проект в Qsys

Мне удалось записать код C для процессоров Nios (на стороне FPGA) для работы с IP-адресом почтового ящика, затем я создал файл заголовка для HPS, используя sopc-create-заголовочные файлы через EDS.

ССЫЛКА НА СГЕНЕРИРОВАННЫЙ ФАЙЛ ЗАГОЛОВКА

Это то, что sopc-create-заголовочные файлы сделали для меня:

 #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 = %sn", 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() для сопоставления почтовых ящиков. Я не уверен.

Комментарии:

1. Может быть, вы захотите спросить об этом в одном из сообществ ПЛИС Intel.

2. Я задам этот вопрос и там. Спасибо вам за обратную связь.

Ответ №1:

Вы также должны сгенерировать двоичный файл дерева устройств с помощью sopc2dts, который обычно находится в пути intelFPGA/xxx/embedded/host_tools/altera/device_tree. Затем напишите драйверы 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.h