Я изменяю некоторый код, который был предоставлен мне для обработки передачи данных между FPGA и процессором с использованием DMA.В верхней части страницы есть константа, определенная как #define NUM_WORDS_IN_MEMORY(20)
, которая представляет количество слов, передаваемых в FPGA.Данные, которые мне нужно передать в FPGA, не всегда приходят в пакетах одинакового размера, поэтому я решил заменить NUM_WORDS_IN_MEMORY переменной.NUM_WORDS_IN_MEMORY используется только в трех местах в одной и той же функции.Первые два предназначены для циклов, которые функционируют, как ожидается, при замене на переменный размер.Окончательное использование записывает длину в регистр длины прямого доступа к памяти.Если я изменю два других использования на size и оставлю это как NUM_WORDS_IN_MEMORY, оно все равно будет работать.Это проблемный фрагмент кода
//This is a definition for writing to DMA
#define alt_write_word(dest, src) (*ALT_CAST(volatile uint32_t *, (dest)) = (src))
...
...
addr = fpga_dma_virt + DMA_LEN_REG_OFST; // Address to write to
data = NUM_WORDS_IN_MEMORY * sizeof(uint32_t);
alt_write_word(addr, data);
Мне кажется, что переключение с NUM_WORDS_IN_MEMORY на размер говорит FPGA о необходимости чтения сверх ожидаемой длины.Есть ли разница между Int и константой, как определено выше?