# #c #fpga #intel-fpga #nios #qsys
Вопрос:
Я хочу установить связь с помощью IP-компонента почтового ящика Altera MM между Aria V hps и моими процессорами nios.
Мне удалось записать код 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