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

 
 
> Грамотная работа с EDMA, SDRAM --EDMA--> L2
lamateur
сообщение Dec 5 2008, 05:30
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
lamateur
сообщение Dec 10 2008, 08:35
Сообщение #2


Участник
*

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



rokhan,
Да, стандартный dsp/bios проект для dsk6416. В генерируемом cmd-файле есть такая строка:
GBL_USERINITFXN = _FXN_F_nop; Извините, но пока не хватает опыта, чтоб делать какие-то выводы из этого.

Вот листинг конфигурации и передачи с замером времени. Если что-то не очевидно, я поясню.

#define FRAGM_EDMA_TCC 11

EDMA_Config cfgEdmaFragm = {
EDMA_OPT_RMK(
EDMA_OPT_PRI_LOW,
EDMA_OPT_ESIZE_8BIT,
EDMA_OPT_2DS_YES,
EDMA_OPT_SUM_INC,
EDMA_OPT_2DD_NO,
EDMA_OPT_DUM_INC,
EDMA_OPT_TCINT_YES,
EDMA_OPT_TCC_OF(FRAGM_EDMA_TCC),
EDMA_OPT_TCCM_OF(0),
EDMA_OPT_ATCINT_NO,
EDMA_OPT_ATCC_OF(0),
EDMA_OPT_PDTS_DISABLE,
EDMA_OPT_PDTD_DISABLE,
EDMA_OPT_LINK_YES,
EDMA_OPT_FS_YES
),
EDMA_SRC_OF(NULL),
EDMA_CNT_RMK(NULL,NULL),
EDMA_DST_OF(NULL),
EDMA_IDX_RMK(NULL,NULL),
EDMA_RLD_RMK(0x0000,0x07E0)
};


Frame =(Uint8 *)(0x80500000);
hEdma_fragm = EDMA_open(EDMA_CHA_ANY,EDMA_OPEN_RESET);
//пробовал так же ставить конкретный канал
cfgEdmaFragm.cnt=(Uint32)((strbsize+2*delta-1)<<16) + (strbsize+2*delta);
cfgEdmaFragm.idx=(Uint32)((FRAME_WIDTH-strbsize-2*delta)<<16);
cfgEdmaFragm.src=(Uint32)(Frame+(32-delta)*FRAME_WIDTH +(32-delta));
cfgEdmaFragm.dst=(Uint32)(Fragm);
EDMA_config(hEdma_fragm,&cfgEdmaFragm);
TIMER_start(hTimer1);
EDMA_setChannel(hEdma_fragm);
while (1) {
if (EDMA_intTest(FRAGM_EDMA_TCC)) {
EDMA_intClear(FRAGM_EDMA_TCC);
break;
}
}
*tickcount1 = TIMER_getCount(hTimer1);

Кстати, я изначально в теме не правильно оценил скорость передачи... 54000 тиков - это 52 МБайт/сек. Что тоже медленно.


bav,

Спасибо за ссылку на пдф. Да, действительно, конфигурационный пин BEA[17:16] отвечает за настройку частоты. Если я правильно понял, BEA - это имя, а номера этих пинов B18 и A18. Можете подсказать, как теперь через CCStudio узнать, какой сигнал на них подается и как подать свой? Физически - это ножки процессора, да?

Осцильник я, конечно, рано или поздно возьму... ) Но я оценивал реалистичность измеряемых тиков обычным секундомером, запустив программу на 15 секунд реального времени. Соответствует.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
- - lamateur   bav, 1) для других размеров массивов объем переда...   Dec 9 2008, 07:58
- - 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
- - 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


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

 


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


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