|
Грамотная работа с EDMA, SDRAM --EDMA--> L2 |
|
|
|
Dec 5 2008, 05:30
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 26-06-08
Пользователь №: 38 561

|
Здравствуйте!
Возникло сомнение, что правильно передаю данные через EDMA из внешней памяти (SDRAM) во внутреннюю (L2).
А именно, на стартер ките на базе С6416 передача 16-ти КБайт занимает примерно 54000 тиков таймера, что соотвествует примерно 0.6 мсек реального времени (720 МГц) или скорости 25 МБайт/с. По-хорошему, скорость обмена между внешней и внутренней памятью должна быть раз в 20 больше! Передачу делаю Блок-синхронизированную из 2D в 1D: транслируется квадрат байтов размера 128 на 128. Замер времени производился на участке проверки соответствующего бита CIPR-регистра. Именно этот цикл проверки и занимает 54000 тиков. Прерывание я не отправляю, поскольку далее программа работает с переданными данными и необходимо знать, что передача окончена. вот пример участка кода, на котором производится замер: EDMA_setChannel(hEdma_fragm); while (1) { if (EDMA_intTest(FRAGM_EDMA_TCC)) { EDMA_intClear(FRAGM_EDMA_TCC); break; }
Подскажите, пожалуйста, где искать ошибку. 1) Неправильно настроил канал передачи 2) Нельзя напрямую многократно опрашивать регистр CIPR 3) Существуют какие-то настройки памяти, которые надо изменить (например, через DSP/BIOS) 4) Неправильно произведен замер времени ...
Сообщение отредактировал lamateur - Dec 5 2008, 06:21
|
|
|
|
|
 |
Ответов
|
Dec 9 2008, 07:58
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 26-06-08
Пользователь №: 38 561

|
bav, 1) для других размеров массивов объем переданных в секунду данных не меняется: 256х256 (64 КБайт) ~ 215000 тиков. 128х128 (16 КБайт) ~ 54000 тиков. 128х128 (1 КБайт) = 3407 тиков. 8х8 (64 Байт) = 245 тиков.
Получается все те же 26МБайт/сек... если я правильно понял, что Вы имели ввиду.
Кстати, внутренняя передача (из одной области L2 в другую) 4КБайт занимает 11000 тиков, что соответствует 33Мбайт/сек.
2) При передачи через QDMA скорости те же самые. Делал QDMA по примеру в spra636a.pdf (EDMA: Example Application), пример Subframe Extraction (стр. 49). Кстати как раз описан мой случай - экстракции малой прямоугольной области из большей области...
3) Память представляет из себя две спаренные 32-битные SDARM по 8 МБайт. Таким образом, общая полоса на 64 бит. Тактируется, если я правильно разобрался, с частотой ECLKOUT1, которая соответствует входной частоте EMIF: ECLKIN, а уже последняя в свою очередь либо внешняя, либо CPU/4, либо CPU/6. А вот где это задается - хоть убей - не нашел. Нашел только в комментах GEL-файла, что EMIF работает на 120MHz, наверное это и есть та самая ECLKIN.
bve, Если я Вас правильно понял и правильно понял структуру памяти, в одном банке (на 16 Mbit) моей памяти: 2048 строк и 256 колонок. А массив байт 128х128 я беру из области 1024х1024, т.е. как минимум каждая новая последовательность в 128 байт будет экстрагироваться из новой строки памяти. Наглядно это показано в примере Subframe Extraction (см. выше).
rokhan, на 3) Можете пояснить, где именно должна располагаться функция типа ini_dsp() или что именно она меняет: регистры EMIF, ядра,..?
на 4) А что определяет частота работы EDMA? Могу предположить только, что частота самой передачи будет определяться "самым слабым" звеном в системе. В данном случае наименьшая частота - частота обращения к памяти через EMIF - 120MHz.
Какие цифры позволили бы вам судить о правильной настройке EDMA?
|
|
|
|
Сообщений в этой теме
lamateur Грамотная работа с EDMA Dec 5 2008, 05:30 bav думаю, п.4
попробуй поварьировать с разными разме... Dec 5 2008, 12:06 bve Попробуйте грамотно расположить массив во внешней ... Dec 5 2008, 12:26 rokhan 1) Скорее всего вы неправильно настроили.
2) Можно... Dec 8 2008, 15:31 rokhan 1. Если вы использовали стандартный DSP/BIOS проек... Dec 9 2008, 09:30 bav Цитата3) Память представляет из себя две спаренные... Dec 9 2008, 10:42 lamateur Цитата(bav @ Dec 9 2008, 13:42) задается ... Dec 9 2008, 13:24 bav не знаю, может быть. посмотри таблицу Device Confi... Dec 9 2008, 13:32 lamateur rokhan,
Да, стандартный dsp/bios проект для dsk641... Dec 10 2008, 08:35 bav как узнать через CCS не знаю. не приходилось. это ... Dec 10 2008, 09:41 lamateur bav,
я на всякий случай еще раз акцентирую внимани... Dec 10 2008, 10:29 bav в общем, как писал выше, подозрение в не корректно... Dec 10 2008, 10:50 rokhan 1. Почитай http://focus.ti.com/lit/an/spraa02/spra... Dec 10 2008, 13:31 lamateur rokhan,
Крутой документ этот spraa02! Буду раз... Dec 10 2008, 13:50 lamateur Теперь, когда переделал, еще раз спасибо!
Нав... Dec 11 2008, 09:00 lamateur Столкнулся с проблемой, что при передаче по EDMA к... Mar 3 2009, 08:19
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|