Технический форум по робототехнике.
Michael_K » 07 авг 2011, 16:10
Никак не могу красиво решить проблему.
Дано:
LPC2478, на внешней шине 16-битная SDRAM, подключен дисплей 800x480.
Буфер экрана, естественно, расположен в SDRAM.
- Дисплей работает в режиме 5:6:5 (16 бит на пиксель), кадровая - около 30 Герц.
- Память 75наносекунд, CAS-RAS latency 3:3.
- Мозги - 72 Мегагерца.
То есть должно хватать
(пропускная способность шины примерно в 2.5 раза больше, чем нужно дисплею).
Все по отдельности отлично работает, но...
Быстрый перенос из внутренней памяти в SDRAM - глючит. Ошибки случайные.
Тайминги и памяти, и дисплея менял в широких пределах - безрезультатно.
Колдовал с AHBCFG1 - безрезультатно.
Работают "костыли" типа "записывать в SDRAM по два байта с небольшими паузами", но это меня совершенно не устраивает (потому что каждый раз контролировать, что там генерит компилятор - нереально).
У кого есть опыт, предположения, может быть примеры?
Strijar » 08 авг 2011, 06:59
А копирование идет процессором? DMA там нет?
А память сама по себе точно нормально работает?
Michael_K » 08 авг 2011, 09:22
процом (дма - тоже, наверное, хотелось бы, но пока процом бы запустить)
память при выключенном LCD работает нормально (тестируется весь объем на байтовый, 16-ти и 32-х битный доступ)
Виталий » 08 авг 2011, 11:57
А используется Thumb режим? Там в эррата, какая-то жесть по этому поводу.
Michael_K » 08 авг 2011, 12:58
Ох тыж... действительно...
Добавлено спустя 27 секунд:
Перекомпилял в АРМ - не помогло.
Виталий » 08 авг 2011, 13:21
А чем копируешь память? Просто memcpy?
Michael_K » 08 авг 2011, 15:09
По разному. Даже просто циклом тупым.
Пока копируешь 16-битными словами - все вроде ок. Как только байты или 32-битные слова - ломается.
Выключаешь дисплей - все ок.
В общем, то ли настройки внутренней шины (AHB), то ли памяти. Ну, мне так кажется...