toshas 0 20 ноября, 2017 Опубликовано 20 ноября, 2017 · Жалоба Как вариант посмотрите как настроить прерывание не по уровню, а по фронту. Можно сделать или через отдельный контроллер GPIO или вроде бы даже напрямую в контроллере прерываний. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ilyaprok 0 21 ноября, 2017 Опубликовано 21 ноября, 2017 (изменено) · Жалоба Как вариант посмотрите как настроить прерывание не по уровню, а по фронту. Можно сделать или через отдельный контроллер GPIO или вроде бы даже напрямую в контроллере прерываний. Да настроил,спасибо. С помощью функции XScuGic_SetPriorityTriggerType. Теперь все правильно работает. Остается как то скачать дамп памяти в файл и посмотреть. Пытаюсь через XSCT консоль - но не понимаю. Использую вот такую команду - mrd -bin -file mem.bin 0x01000000 360960. Но не понимаю где этот файл найти, или нужно сначала его открыть, потом записать, потом закрыть. А что за команды? Изменено 21 ноября, 2017 пользователем ilyaprok Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toshas 0 21 ноября, 2017 Опубликовано 21 ноября, 2017 · Жалоба В TCL консоли вы можете понять в какой рабочей директории находитесь командой dir. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ilyaprok 0 21 ноября, 2017 Опубликовано 21 ноября, 2017 (изменено) · Жалоба В TCL консоли вы можете понять в какой рабочей директории находитесь командой dir. Спасибо! получил первое изображение: Вам toshas и svedach Большое Спасибо!!!! Я прям рад! Однако вопрос возник - если идет запрос к DRAM памяти сразу несколькими мастерами как будет происходит чтение или запись? Можно например обращаться к памяти в DRAM, пока идет чтение или запись в тот же регион с помощью DMA? А если несколько DMA использовать - как они будут делить доступ? И еще вопрос по поводу глобальных переменных - где они создаются в кеше? какого уровня? И что означает эта функция, зачем очищать кэш? Xil_DCacheFlushRange Я использую по совету svedach Xil_Out32(XPAR_AXI_DMA_0_BASEADDR + 0x48, AddrDst); Xil_DCacheFlushRange(AddrDst, 752); Xil_Out32(XPAR_AXI_DMA_0_BASEADDR + 0x58, 752); И еще получается 480*60=28800 раз в секунду вызывается прерывание по DMA, это же съедает много процессорного времени? Изменено 21 ноября, 2017 пользователем ilyaprok Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
svedach 0 21 ноября, 2017 Опубликовано 21 ноября, 2017 · Жалоба Добрый день! Поздравляю! Xil_DCacheFlushRange - это сброс кешированных данных из кеша в ДДР. Как я смог разобраться, несмотря на то, что память распределена в ДДР, Цинк перегоняет данные в кеш, а потом как будет время - в ДДР. Эта команда заставляет его скинуть последние принятые данные в ДДР. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться