dvf 1 27 декабря, 2018 Опубликовано 27 декабря, 2018 · Жалоба Здравствуйте, господа. Мучаю проектик (или он меня), в котором собираюсь связать чтение с SD-карты файлов графики, используя DMA, в область памяти внешней SDRAM, откуда всё попадёт на TFT. Тырю куски кода из открытых примеров. Например, используя отладочную плату SK-LPC4088, беру из комплекта. Связку, которую хотелось бы сделать мне, там нет. Настроил связку DMA+MCI. Присоединяю связку SDRAM+LCD, которая отдельно работала (достаточно кинуть данные в область внешней памяти) и от цепочки: Инициализация диска - Монтирование файловой системы - Открытие файла - Чтение файла - Закрытие файла, остаются только две первых операции - файл уже не открывается. Библиотека FatFs. В проекте конфигурируется SysTick на 1 мс для обеспечения пауз. Может в этом всё зло? С контроллерами LPCxxxx у нас в стране связано меньше разработчиков, чем STMxxxx и, откровенно говоря, хотелось бы найти гуру, который изредка согласился бы подсказывать. Могу отправить проект рожденный в MCUXpresso под вышеназванную плату, если понадобится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 59 28 декабря, 2018 Опубликовано 28 декабря, 2018 · Жалоба 12 hours ago, dvf said: LPCxxxx у нас в стране связано меньше разработчиков, чем STMxxxx Это не так важно, пока дело не касается деталей (реализации в железе конкретной периферии). Вы отлаживаеть проект пробовали? Как? Сейчас ваш вопрос не имеет чёткого ответа, т.к. причин - более бесконечности. Изучите эту тему. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Integro 0 28 декабря, 2018 Опубликовано 28 декабря, 2018 · Жалоба 16 hours ago, dvf said: Настроил связку DMA+MCI. Присоединяю связку SDRAM+LCD, которая отдельно работала (достаточно кинуть данные в область внешней памяти) и от цепочки: Инициализация диска - Монтирование файловой системы - Открытие файла - Чтение файла - Закрытие файла, остаются только две первых операции - файл уже не открывается. Можно подробней что и в какой момент сломалось? Файл раньше открывался? и не открывается после DMA и MCI? Если так, работу функций disk_read и disk_write проверяли? 3 hours ago, haker_fox said: Это не так важно Согласен! Вот если бы Вы( @dvf ) спросили почему не работает DMA, вот в этом случае нужно знать модель контроллера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvf 1 28 декабря, 2018 Опубликовано 28 декабря, 2018 · Жалоба 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. Отсюда и пространные вопросы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Integro 0 29 декабря, 2018 Опубликовано 29 декабря, 2018 · Жалоба Я вот этого не понимаю: 8 hours ago, dvf said: От цепочки в FatFs остаётся только: Инициализация диска - Монтирование файловой системы. И происходит это сразу после инициализации LCD. Остаётся реализовать? Так это самое начало, за этим нужно все реализовывать и проверять! Что значит остаётся? Где остаётся? 8 hours ago, dvf said: откровенно, я не знаю алгоритма как в целом должна строится и функционировать связка и MCI+DMA->SDRAM+LCD Описанный вами алгоритм: читать данные в память затем из памяти отрисовывать эти данные, имеет право на жизнь :) 8 hours ago, dvf said: Догадка такая. У LCD есть свой собственный DMA. Может конфликт на шине? В это хорошо, взяли правильный курс, решили локализовать пролему. Вот только не нужно догадываться, у Вас ведь под рукой весь необходимый инстурментарий чтобы четко понимать где проблема. В общем, - нужно локализовать проблему. Лично я, все еще не понимаю что ломалось. - а для лучшего понимания проблемы, я бы Вам порекомендовал опубликовать здесь следующие куски кода: инициализацию периферии, функции работы с необходимой периферией и простенький пример связывающий все это в осмысленную программу. Не нужно бездумно скидывать весь проект, мало кто хочет разбираться в чужом коде. но такой подход поможет Вам понять где проблема и доходчиво это донести до участников форума. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvf 1 29 декабря, 2018 Опубликовано 29 декабря, 2018 · Жалоба 54 минуты назад, Integro сказал: Остаётся реализовать? Нет. Инициализация диска -> Монтирование файловой системы проходят удачно, а остальное - нет. 59 минут назад, Integro сказал: мало кто хочет разбираться в чужом коде. Покопаюсь ещё. Если не продвинусь, последую Вашему совету о примерах кода. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Integro 0 29 декабря, 2018 Опубликовано 29 декабря, 2018 · Жалоба 6 minutes ago, dvf said: а остальное - нет. Тогда нужно убедиться в работоспособности функций disk_read и disk_write их использует fatfs, записать и прочитать сектор. Но понятно, после этих манипуляций файловая может быть повреждена, не забудьте карту отформатировать Еще, возможно, при переносе кода, Вы могли забыть перенести какие то определения препроцессора которые находтся в параметрах проекта. LCD тоже не работает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvf 1 29 декабря, 2018 Опубликовано 29 декабря, 2018 · Жалоба 2 минуты назад, Integro сказал: Тогда нужно убедиться в работоспособности функций disk_read и disk_write Я же говорю, что работает, пока не доходит до инициализации LCD. Что именно в этой инициализации мешает, буду разбираться. 13 минут назад, Integro сказал: LCD тоже не работает? А вот это я даже не перепроверил, зациклившись на проблеме с fatfs. Если, что накопаю, подниму тему. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 59 29 декабря, 2018 Опубликовано 29 декабря, 2018 · Жалоба 5 hours ago, dvf said: Что именно в этой инициализации мешает Например от банальных перенастроек ножек, к которым подключен ваш насоитель, до порчи памяти, например из-за неаккуратной работы в драйвере LCD с указателями. Попробуйте в инициализации ставить return в разных местах функции инициализации, и таким образом сузьте место до той строки, котрая всё портит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться