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

 
 
 
Reply to this topicStart new topic
> Внешняя SDRAM одновременно как видеопамять и память программ
murug
сообщение May 7 2015, 12:04
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 23-12-10
Пользователь №: 61 816



Доброго времени суток всем!
Микроконтроллер LPC2478, внешняя SDRAM MT48LC и TFT-дисплей Powertip PH480272T-006-I13Q с контроллером OTA5180A. В качестве видеопамяти используются первые 512 кБ внешней SDRAM (она используется через модуль EMC).
При создании бутлоадера столкнулся с такой проблемой. Пока программа выполняется из внутреннего флеша микроконтроллера - все в порядке. Но стоит загрузить и начать выполнять ее из внешней SDRAM (области после видеопамяти), как изображение на дисплее начинает дергаться.
В ходе отладки урезал программу до вывода нескольких черных точек на белом экране. Если точки в нулевой (самой верхней) или например в 16-й строчке дисплея - не дергаются. В сотой - дергаются. Это если их периодически отрисовывать, даже не стирая. Если отрисовать один раз и больше экран не трогать - не дергаются.
С чем может быть связано такое поведение? Это вообще корректно - использовать внешнюю SDRAM сразу и под видеопамять и под память программ?

P.S. А еще обнаружил, что код выполняется из MT48LC в 1.4 раза медленнее, чем из внутреннего флеша с включенным MAM, и в 1.6 раз медленнее, чем из внутренней ОЗУ. Это нормально? Или надо оптимизировать какие-то настройки EMC?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 7 2015, 12:09
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(murug @ May 7 2015, 15:04) *
С чем может быть связано такое поведение? Это вообще корректно - использовать внешнюю SDRAM сразу и под видеопамять и под память программ?

P.S. А еще обнаружил, что код выполняется из MT48LC в 1.4 раза медленнее, чем из внутреннего флеша с включенным MAM, и в 1.6 раз медленнее, чем из внутренней ОЗУ. Это нормально? Или надо оптимизировать какие-то настройки EMC?

Проверьте настройки приоритетов AHB, там по умолчанию для LCD стоит низкий приоритет, если не ошибаюсь.

Использовать на LPC24 SDRAM под память программ вообще плохая идея из-за отсутствия кэш-памяти. Поэтому и медленно, настройками EMC не лечится.
Go to the top of the page
 
+Quote Post
murug
сообщение May 7 2015, 12:42
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 23-12-10
Пользователь №: 61 816



Цитата(aaarrr @ May 7 2015, 15:09) *
Проверьте настройки приоритетов AHB, там по умолчанию для LCD стоит низкий приоритет, если не ошибаюсь.

Офигеть, помогло! Несколько дней долбежки головой об стену были просто из-за незнания матчасти (
Спасибо огромное!
Сделал
Код
  AHBCFG1_bit.SHDL = 0;     // priority arbitration
// AHBCFG1_bit.BB   = 0;     // Never break defined length bursts.
//  AHBCFG1_bit.QT   = 0;     // A quantum is an AHB clock.
//  AHBCFG1_bit.QT   = 4;     // Preemptive, re-arbitrate after 16 AHB quanta.
//  AHBCFG1_bit.DM   = 1;     // Master 1 (CPU) is the default master.
  AHBCFG1_bit.EP1  = 4;     // External priority for master 1 (CPU).
  AHBCFG1_bit.EP2  = 1;     // External priority for master 2 (GPDMA).
  AHBCFG1_bit.EP3  = 2;     // External priority for master 3 (AHB1).
  AHBCFG1_bit.EP4  = 3;     // External priority for master 4 (USB).
  AHBCFG1_bit.EP5  = 5;     // External priority for master 5 (LCD).

А как понижение приоритета скажем CPU скажется на работе программы?
И, собственно, почему были эти дергания? Контроллер LCD так требователен к непрерывности чтения данных?

Цитата(aaarrr @ May 7 2015, 15:09) *
Использовать на LPC24 SDRAM под память программ вообще плохая идея из-за отсутствия кэш-памяти. Поэтому и медленно, настройками EMC не лечится.

Так вроде же есть что-то вроде кеша в EMC -
Цитата
The AHB interface reads and writes via buffersto improve memory bandwidth and reduce
transaction latency. The EMC contains four 16-word buffers
?
Go to the top of the page
 
+Quote Post
adnega
сообщение May 7 2015, 12:50
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Очень хорошо обращаться к SDRAM большими порциями. Рандомное по-байтовое чтение-запись резко убивает производительность, по сравнению со встроенной RAM.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 7 2015, 12:59
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(murug @ May 7 2015, 15:42) *
А как понижение приоритета скажем CPU скажется на работе программы?
И, собственно, почему были эти дергания? Контроллер LCD так требователен к непрерывности чтения данных?

Если в какой-то единичный момент времени процессор не получит данные, то это вряд ли заметно скажется на общей производительности. А вот когда контроллер LCD не может вовремя заполнить FIFO, появляются "дерганья".

Цитата(murug @ May 7 2015, 15:42) *
Так вроде же есть что-то вроде кеша в EMC - ?

Что-то вроде, это Вы правильно заметили sm.gif Хотя и такой буфер работает в какой-то степени: без него производительность упала бы не в 1.4-1.6 раза, а гораздо сильнее.
Go to the top of the page
 
+Quote Post
murug
сообщение May 8 2015, 07:26
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 23-12-10
Пользователь №: 61 816



Цитата(aaarrr @ May 7 2015, 15:59) *
Если в какой-то единичный момент времени процессор не получит данные, то это вряд ли заметно скажется на общей производительности. А вот когда контроллер LCD не может вовремя заполнить FIFO, появляются "дерганья".

А с USB могут возникнуть проблемы? Интересуют режимы и Host и OTG.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 8 2015, 08:17
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(murug @ May 8 2015, 10:26) *
А с USB могут возникнуть проблемы? Интересуют режимы и Host и OTG.

Сломаться совсем (то есть до получения состояния ошибки) может только хост в изохронном режиме. Все остальные передачи полностью буферизируются во внутренних FIFO.
Go to the top of the page
 
+Quote Post
murug
сообщение May 8 2015, 11:22
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 23-12-10
Пользователь №: 61 816



Цитата(aaarrr @ May 8 2015, 11:17) *
Сломаться совсем (то есть до получения состояния ошибки) может только хост в изохронном режиме. Все остальные передачи полностью буферизируются во внутренних FIFO.

Благодарю.
Go to the top of the page
 
+Quote Post
owl
сообщение Feb 12 2016, 09:44
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 90
Регистрация: 7-08-06
Из: Смоленск
Пользователь №: 19 370



Всем здравствуйте.
Немного повторюсь по теме.
Теже симптомы, но на STM32F429.(Обращение к внешней SDRAM, используемой для памяти дисплея и внешней памяти вызывает дерганье экрана)
Существует ли доступ к управлению приоритетам AHB для STM?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 11:40
Рейтинг@Mail.ru


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