Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопрос по BF533
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Сигнальные процессоры и их программирование - DSP
ЮрийБо
Сдраствуйте. Мучает такой вопрос: С помощью DMA копирую видеопоток из PPI в RAM, причем RAM начинается с 0x0 адреса(Пример, который идет с платой). Получаю например 10000 точек.
Вопрос: Каким образом разместить матрицу именно в этой области памяти, т.е. как узакать начальный адрес первого элемента, чтобы обращаться к полученным данным через эту матрицу.
blackfin
Цитата(ЮрийБо @ May 23 2008, 18:04) *
Вопрос: Каким образом разместить матрицу именно в этой области памяти, т.е. как указать начальный адрес первого элемента, чтобы обращаться к полученным данным через эту матрицу.
Какая разница по какому адресу размещена матрица? Программируйте DMA на начало матрицы: *pDMA_START_ADDRESS = your_matrix;
ЮрийБо
Цитата(blackfin @ May 23 2008, 20:08) *
Какая разница по какому адресу размещена матрица? Программируйте DMA на начало матрицы: *pDMA_START_ADDRESS = your_matrix;


Я пробовал так делать. Когда объявляю матрицу глобально- например Matr[720][288], компилятор говорит что не хватает памяти, а когда объявляю локально, в какойнибудь фукции, то компиляция проходит. Если создать матрицу, например Matr[100]- то есть небольшую, и дать DMA указатель на эту матрицу, тогда DMA не создает прерывания об окончании работы - судя по размещению в памяти, DMA просто не помещается в памяти и происходит ошибка DMA.
Получается какой то бред- для большой матрицы - глобально компилю, компилятор видмо считяет что я хочу запихнуть эту матрицу во внутр. память. Если есть решение этой проблмы, подскажите, буду очень признателен.
ЮрийБо
Когда компилю проект с матрицей [720][288] выдает ошибку вида:
For more details, see 'linker_log.xml' in the output directory.


[Error li1040] "C:\Program Files\Analog Devices\VisualDSP 4.5\Blackfin\ldf\ADSP-BF533.ldf":560 Out of memory in output section 'bsz_L1_data_a' in processor 'p0'
Total of 0xfa00 word(s) were not mapped.

Я так понял что при компиляции не включается ОЗУ, и поэтому матрица не помещается. Подскажите какие есть способы, чтобы компилятор знал что матрицу необходимо расположить в ОЗУ.
aaarrr
Цитата(ЮрийБо @ May 24 2008, 11:14) *
Я так понял что при компиляции не включается ОЗУ, и поэтому матрица не помещается. Подскажите какие есть способы, чтобы компилятор знал что матрицу необходимо расположить в ОЗУ.

В Project Options->Link->Processor выберите SDRAM, в Project Options->LDF Settings пропишите нужную конфигурацию.

Для размещения массива в нужном сегменте можно воспользоваться прагмой:
Код
#pragma section("sdram0_bank1")
char matrix[720][288];
sevstels
А лучше всего, выделить под видеобуфер область памяти непосредственно в ldf и затем работать с ней по фиксированнымадресам, не используя какие либо указатели на переменные или массивы. Пришёл к такому выводу после двухнедельного траха с компилятором по такому же поводу.

Отгрыз кусочек от одного из банков под буфер, конкретно указав размер. Может это и не очень удобно, зато работает без проблем и непоняток.
ЮрийБо
Всем спасибо за помощь- сам успел разобраться- действительно надо в настройках подключить LDF и включить память и тогда проект корректно компилируется. Кинул DMA указатель на матрицу и теперь работаю с изображением как с матрицей.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.