|
Грамотная работа с 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
|
|
|
|
|
 |
Ответов
|
Mar 3 2009, 08:19
|
Участник

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

|
Столкнулся с проблемой, что при передаче по EDMA копируются не все фреймы...
Делал небольшой эксперимент на симуляторе процессора TMS320C6415.
Требуется скопировать данные с прореживанием из одной области внешней памяти (из адреса 0x80......) в другую (в адрес 0x80000000).
Такая задача возникает когда грузишь байтовые данные из файла, и каждый байт занимает целое слово, т.е. полезная информация идет через каждые 4 байта. (Наприм.: 255 0 0 0 119 0 0 0 67 0 0 0 и т.д., а нужно: 255 119 67).
"Полезных" байтов у меня 1024x1024, т.е. 1Мбайт. Организовываю EDMA-передачу: Frame Synchronized 1D-to-1D Transfer (SUM = 11, DUM = 01), размер элемента - 8бит. Если я правильно понимаю, теперь мне требуется 1024 синхро-сигналов, чтоб передать весь массив. Но у меня передается только 9 фреймов, т.е. 9 строк!
Вот фрагмент кода: hEdma_input = EDMA_open(EDMA_CHA_ANY,EDMA_OPEN_RESET);
cfgEdmaInput.src=...; cfgEdmaInput.dst=...; cfgEdmaInput.idx=(Uint32)(1024<<18) | 4; cfgEdmaInput.cnt=(Uint32)((1024-1)<<16) | (1024);
EDMA_config(hEdma_input,&cfgEdmaInput); for (sync=0; sync<4; sync++){ EDMA_setChannel(hEdma_input); TSK_sleep(10000);} while (1) { if (EDMA_intTest(INPUT_EDMA_TCC)) { EDMA_intClear(INPUT_EDMA_TCC); break; } }
|
|
|
|
Сообщений в этой теме
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 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|