Перейти к содержанию
    

LPC4088: SDRAM+LCD, DMA+MCI

Здравствуйте, господа.

Мучаю проектик (или он меня), в котором собираюсь связать чтение с SD-карты файлов графики, используя DMA, в область памяти внешней SDRAM, откуда всё попадёт на TFT.

Тырю куски кода из открытых примеров. Например, используя отладочную плату SK-LPC4088, беру из комплекта. Связку, которую хотелось бы сделать мне, там нет.

Настроил связку DMA+MCI. Присоединяю связку SDRAM+LCD, которая отдельно работала (достаточно кинуть данные в область внешней памяти) и от цепочки: Инициализация диска - Монтирование файловой системы - Открытие файла - Чтение файла - Закрытие файла, остаются только две первых операции - файл уже не открывается. Библиотека FatFs. В проекте конфигурируется SysTick на 1 мс для обеспечения пауз. Может в этом всё зло?

С контроллерами LPCxxxx у нас в стране связано меньше разработчиков, чем STMxxxx и, откровенно говоря, хотелось бы найти гуру, который изредка согласился бы подсказывать.

Могу отправить проект рожденный в MCUXpresso под вышеназванную плату, если понадобится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 hours ago, dvf said:

LPCxxxx у нас в стране связано меньше разработчиков, чем STMxxxx

Это не так важно, пока дело не касается деталей (реализации в железе конкретной периферии). Вы отлаживаеть проект пробовали? Как? Сейчас ваш вопрос не имеет чёткого ответа, т.к. причин - более бесконечности. Изучите эту тему.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 hours ago, dvf said:

Настроил связку DMA+MCI. Присоединяю связку SDRAM+LCD, которая отдельно работала (достаточно кинуть данные в область внешней памяти) и от цепочки: Инициализация диска - Монтирование файловой системы - Открытие файла - Чтение файла - Закрытие файла, остаются только две первых операции - файл уже не открывается.

 

Можно подробней что и в какой момент сломалось? Файл раньше открывался? и не открывается после DMA и MCI? Если так,  работу функций disk_read и disk_write проверяли?

3 hours ago, haker_fox said:

Это не так важно

Согласен! Вот если бы Вы( @dvf ) спросили почему не работает DMA, вот в этом случае нужно знать модель контроллера.
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 часов назад, haker_fox сказал:

Сейчас ваш вопрос не имеет чёткого ответа, т.к. причин - более бесконечности.

Чётко осознаю, что мой вопрос идёт вразрез с этикой нашего форума.

12 часов назад, haker_fox сказал:

Изучите эту тему. 

Отлаживаю через JTAG без оптимизации.

9 часов назад, Integro сказал:

Можно подробней что и в какой момент сломалось? Файл раньше открывался? и не открывается после DMA и MCI? Если так,  работу функций disk_read и disk_write проверяли?

Во время отладки DMA+MCI на всех названных выше шагах получаю положительные подтверждения  в терминале IDE (впрочем, и при выводе во внешнюю консольку тоже). Ранее, тестил SDRAM+LCD, где графику заносил в область внешней памяти из области программы. А дальше юный мичуринец решил скрестить два проекта... От цепочки в FatFs остаётся только: Инициализация диска - Монтирование файловой системы. И происходит это сразу после инициализации LCD.

Догадка такая. У LCD есть свой собственный DMA. Может конфликт на шине?

По большому счёту, откровенно, я не знаю алгоритма как в целом должна строится и функционировать связка и MCI+DMA->SDRAM+LCD. Отсюда и пространные вопросы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я вот этого не понимаю:

8 hours ago, dvf said:

От цепочки в FatFs остаётся только: Инициализация диска - Монтирование файловой системы. И происходит это сразу после инициализации LCD.

Остаётся реализовать? Так это самое начало, за этим нужно все реализовывать и проверять! Что значит остаётся? Где остаётся?

 

8 hours ago, dvf said:

откровенно, я не знаю алгоритма как в целом должна строится и функционировать связка и MCI+DMA->SDRAM+LCD

Описанный вами алгоритм: читать данные в память затем из памяти отрисовывать эти данные, имеет право на жизнь :)
 

8 hours ago, dvf said:

Догадка такая. У LCD есть свой собственный DMA. Может конфликт на шине?

В это хорошо, взяли правильный курс, решили локализовать пролему. Вот только не нужно догадываться, у Вас ведь под рукой весь необходимый инстурментарий чтобы четко понимать где проблема.

В общем,
- нужно локализовать проблему. Лично я, все еще не понимаю что ломалось.
- а для лучшего понимания проблемы, я бы Вам порекомендовал опубликовать здесь следующие куски кода: инициализацию периферии, функции работы с необходимой периферией и простенький пример связывающий все это в осмысленную программу. Не нужно бездумно скидывать весь проект, мало кто хочет разбираться в чужом коде. но такой подход поможет Вам понять где проблема и доходчиво это донести до участников форума.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

54 минуты назад, Integro сказал:

Остаётся реализовать?

Нет. Инициализация диска -> Монтирование файловой системы проходят удачно, а остальное - нет.

59 минут назад, Integro сказал:

мало кто хочет разбираться в чужом коде.

Покопаюсь ещё. Если не продвинусь, последую Вашему совету о примерах кода. Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 minutes ago, dvf said:

а остальное - нет.

Тогда нужно убедиться в работоспособности функций disk_read и disk_write их использует fatfs, записать и прочитать сектор. Но понятно, после этих манипуляций файловая может быть повреждена, не забудьте карту отформатировать

Еще, возможно, при переносе кода, Вы могли забыть перенести какие то  определения препроцессора которые находтся в параметрах проекта.

LCD тоже не работает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 минуты назад, Integro сказал:

Тогда нужно убедиться в работоспособности функций disk_read и disk_write

Я же говорю, что работает, пока не доходит до инициализации LCD. Что именно в этой инициализации мешает, буду разбираться.

13 минут назад, Integro сказал:

LCD тоже не работает?

А вот это я даже не перепроверил, зациклившись на проблеме с fatfs.

Если, что накопаю, подниму тему.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 hours ago, dvf said:

Что именно в этой инициализации мешает

Например от банальных перенастроек ножек, к которым подключен ваш насоитель, до порчи памяти, например из-за неаккуратной работы в драйвере LCD с указателями. Попробуйте в инициализации ставить return в разных местах функции инициализации, и таким образом сузьте место до той строки, котрая всё портит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...