Я хочу начать писать код приложения для "DMA Altera IP DMA-сбора данных", который передает данные из одного места в другое с помощью предварительно определенных дескрипторов. Каждый дескриптор представляет собой структурированный тип данных, содержащий write_address
, read_address
, length
данных для передачи, address of next descriptor
в качестве членов внутри этой структуры. Я могу иметь любое количество дескрипторов. Коллекция этих дескрипторов называется списком. Я должен переместить этот список на устройство памяти (блок hw на ПЛИС), используя его базовый адрес (что-то вроде 0x10002000
). (это программная часть, код c запускается из SDK). ).
Ядро DMA (аппаратное обеспечение) считывает список из памяти и выполняет передачи в соответствии с доступной информацией из каждого дескриптора. (этот пункт является аппаратной частью).
Это идея. Теперь я должен поместить первый абзац в код C, используя API, указанный в коде драйвера. это:
структура дескриптора:
typedef struct {
alt_u32 read_address;
alt_u32 write_address;
alt_u32 transfer_length;
alt_u32 next_desc_ptr;
alt_u32 bytes_transfered;
alt_u16 status;
alt_u16 _pad1_rsvd;
alt_u32 _pad2_rsvd;
alt_u32 control;
} alt_msgdma_prefetcher_standard_descriptor_packed alt_msgdma_prefetcher_standard_descriptor;
API 1:
static int alt_msgdma_construct_prefetcher_standard_descriptor(
alt_msgdma_dev *dev,
alt_msgdma_prefetcher_standard_descriptor *descriptor,
alt_u32 read_address,
alt_u32 write_address,
alt_u32 length,
alt_u32 control)
API 2:
int alt_msgdma_construct_prefetcher_standard_mm_to_mm_descriptor (
alt_msgdma_dev *dev,
alt_msgdma_prefetcher_standard_descriptor *descriptor,
alt_u32 read_address,
alt_u32 write_address,
alt_u32 length,
alt_u32 control)
{
return alt_msgdma_construct_prefetcher_standard_descriptor(dev, descriptor,
read_address, write_address, length, control);
}
API 3:
int alt_msgdma_prefetcher_add_standard_desc_to_list (
alt_msgdma_prefetcher_standard_descriptor** list,
alt_msgdma_prefetcher_standard_descriptor* descriptor)
, а затем еще 2 API для инициации переводов.
Я понятия не имею, как проверить свое оборудование на ПЛИС (устройство hw, которое содержит цифровые схемы, такие как процессор, DDR, PCIE, встроенная память, логика нестандартного дизайна, написанная на Verilog или VHDL и т. Д.).