Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:6
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:10
Форум » starterkit.ru » Отладочные платы » SK-LPC2478-S3E
использование scatter/gather для двойной буферизации
Fish
Добавлено 03.05.2011 15:09
0
Сообщение: 1
Fish
5

Пункты: 294
Регистрация: 22.10.2009
Пол: Мужчина
Из: Екатеринбург
Подскажите, пожалуйста разобраться. Пытаюсь сделать так, чтобы из области памяти, которая отображается на экране, данные быстро копировались в буфер, где будет формироваться будущее изображение. Если использовать простой способ попиксельного копирования, то всё работает, но хочется, чтобы это делалось через DMA, т.к. скопировать экран 800х480 простым способом - процесс немимолётный.
Вроде бы связанные списки формирую правильно (как написано в мануале на проц), потом вызываю разовую посылку по DMA с указанием начала списка, но копирование происходит не полностью, либо вообще ничего не копируется. С чем это может быть связанно не понятно.
Спуститься к концу Подняться к началу
Персональная информация
dmdv321
Добавлено 03.05.2011 19:02 Сообщение: 2
dmdv321
0

Пункты: 223
Регистрация: 20.07.2009
Пол: Мужчина
Связанные списки должны находиться в той области памяти, в которую DMA контроллер имеет доступ (например USB RAM).
Спуститься к концу Подняться к началу
Персональная информация
Fish
Добавлено 04.05.2011 13:44 Сообщение: 3
Fish
5

Пункты: 294
Регистрация: 22.10.2009
Пол: Мужчина
Из: Екатеринбург
Цитата
Связанные списки должны находиться в той области памяти, в которую DMA контроллер имеет доступ (например USB RAM).

это всё понятно, использую внешнюю динамическую память. Сейчас оно у меня работает, но не так, как хотелось бы :( Поставил задержку после Enable Channel и вроде как копирует то, что нужно, но при этом наблюдаю дёрганья экрана (((( вот как от них избавиться? Используется встроенный в LPC2478 контроллер LCD. Видимо одновременно с экраном к одной и той же памяти обращается ещё и DMA, в следствии чего наблюдаются подобные дёрганья/сбои.
Спуститься к концу Подняться к началу
Персональная информация
sherr
Добавлено 04.05.2011 15:02 Сообщение: 4
sherr
0

Пункты: 6512
Регистрация: 02.11.2009
Цитата
Цитата
Связанные списки должны находиться в той области памяти, в которую DMA контроллер имеет доступ (например USB RAM).

это всё понятно, использую внешнюю динамическую память. Сейчас оно у меня работает, но не так, как хотелось бы :( Поставил задержку после Enable Channel и вроде как копирует то, что нужно, но при этом наблюдаю дёрганья экрана (((( вот как от них избавиться? Используется встроенный в LPC2478 контроллер LCD. Видимо одновременно с экраном к одной и той же памяти обращается ещё и DMA, в следствии чего наблюдаются подобные дёрганья/сбои.


Попробовать поиграть параметрами приоритета устройств на шине в регистре AHBCFG1 ( UserManual гл. 3.4) и поставить
LCD контроллеру высший приоритет на шине.
Спуститься к концу Подняться к началу
Персональная информация
Fish
Добавлено 05.05.2011 16:26 Сообщение: 5
Fish
5

Пункты: 294
Регистрация: 22.10.2009
Пол: Мужчина
Из: Екатеринбург
спасибо за совет, вот только всячески пробую поставить приоритеты, а ничего не работает + приходится через flash utility стирать память, т.к. кейл не может остановить устройство. Есть подозрение,что недостаточно просто изменить значения регистра AHBCFG1 или я делаю это не в том месте программы (в самом начале).
Спуститься к концу Подняться к началу
Персональная информация
Fish
Добавлено 10.05.2011 14:10 Сообщение: 6
Fish
5

Пункты: 294
Регистрация: 22.10.2009
Пол: Мужчина
Из: Екатеринбург
Как внести изменения в регистр ahbсfg1, чтобы контроллер не зависал? (((
Спуститься к концу Подняться к началу
Персональная информация
Fish
Добавлено 11.05.2011 08:15 Сообщение: 7
Fish
5

Пункты: 294
Регистрация: 22.10.2009
Пол: Мужчина
Из: Екатеринбург
Я победил, точнее нашёл на одном забугорном форуме значения, которые надо подставить в этот регистр:
AHBCFG1 = 0x10000144.
Вот источник:
http://www.embeddedrelated.com/groups/lpc2000/show/36072.php
УРА, товарищи!
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-LPC2478-S3E