реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> OMAP L137 - EDMA и NAND
Zayac
сообщение May 25 2017, 07:41
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 30-11-07
Пользователь №: 32 845



Добрый день!
Прошу подсказать бывалых, в какую сторону копать в следующей ситуации:
Есть девайс с процессором OMAP L137, ARM-ядро не используется, только DSP. К процу через EMIFA подключена ПЛИС. ПЛИС периодически генерит данные, выставляет уровень на GPIO процессора, возникает прерывание, и процессор вычитывает данные из ПЛИС посредством EDMA3. Интервал генерации прерываний 5 мс. В прерывании от GPIO происходит старт EDMA-передачи (EDMA3_DRV_TRIG_MODE_MANUAL), далее данные из ПЛИС копируются в заданную область памяти. Все прекрасно работает, но только до тех пор, пока не пытаемся работать с NAND-flash (которая также подключена к процессору) в DMA-режиме. В отладке видно, что в дебрях драйвера NAND происходит ожидание окончания EDMA-передачи, которое никогда не наступает, и процессор зависает. В режиме работы NAND-драйвера без DMA зависания не происходит, но появляются потери данных при вычитке из ПЛИС, видимо, процессор "замирает" на время записи-чтения страницы.
Драйвер NAND используется стандартный от TI, biospsp_03_00_01_00 с незначительными модификациями под тип микросхемы памяти.
Если запуск вычитки данных из ПЛИС запускать не из прерывания, а из потока, то зависания не происходит, однако и в этом случае возникают потери данных из ПЛИС. Судя по всему, принудительный запуск вычитки из ПЛИС в прерывании нарушает алгоритм работы с EDMA в драйвере NAND. Почему это происходит, до конца не понятно - каналы EDMA3 для вычитки из ПЛИС и NAND разные, в документации не нашел явного запрета на запуск передачи из прерывания.
Идеальным решением было бы обеспечить бесперебойную вычитку данных из ПЛИС, работу с NAND можно еще более замедлить. Прошу совета, как можно модифицировать алгоритм NAND-драйвера или алгоритм вычитки из ПЛИС.
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 25 2017, 21:00
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 689
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Zayac @ May 25 2017, 09:41) *
Прошу совета, как можно модифицировать алгоритм NAND-драйвера или алгоритм вычитки из ПЛИС.

Могу посоветовать: избавиться от "дебрей", прочитать даташит на периферию и написать самостоятельно работу и с EMIFA и с EDMA3. Сложного там ничего нет.
Ну или, раз работу с Flash можно замедлить, то зачем поставили параллельную? Может лучше было SPI-FLASH? И не было бы пересечения по EMIFA.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th October 2017 - 01:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.01212 секунд с 7
ELECTRONIX ©2004-2016