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

 
 
> AVR32: AP7000: Image Sensor Interface (ISI), Как переключаются буферы видеокадров?
Busel Roman
сообщение Jan 12 2008, 13:39
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 51
Регистрация: 19-06-07
Из: Республика Беларусь, г.Витебск
Пользователь №: 28 538



Пытаюсь подключить к STK1000 цифровую камеру с использованием имеющегося на борту AP7000 Image Sensor Interface (ISI). Не совсем понимаю, как переключать буферы, в которые будут писаться видеокадры.
Далее нужно вывести на LCD то, что в этих самых буферах находится с использованием встроенного LCD-контроллера (LCDC).

Может кто-нибудь подскажет, как вообще обрабатывается видеоинформация с использованием нескольких буферов.

Сообщение отредактировал Busel Roman - Jan 12 2008, 13:40
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AndyBig
сообщение Jan 16 2008, 15:22
Сообщение #2


Иногдящий
****

Группа: Свой
Сообщений: 691
Регистрация: 28-02-05
Пользователь №: 2 931



У каждого типа памяти свое заранее известное адресное пространство.
Во-первых, Вы можете указать статической переменной (тому же буферу) абсолютный адрес, по которому она должна располагаться оператором @. Например:
Код
__no_init unsigned int LCD_BUFFER1[1024] @ 0x20000000
__no_init unsigned int LCD_BUFFER2[1024] @ 0x20000400

Этот примр создаст две статических переменных - массивы по 1024 беззнаковых интовых значений.
А во-вторых можете указать не конкретный адрес, а только сегмент, внутри которого линкер уже сам выберет место размещения:
Код
__no_init unsigned int LCD_BUFFER1[1024] @ "SDRAM_SEGMENT"
__no_init unsigned int LCD_BUFFER2[1024] @ "SDRAM_SEGMENT"

Это создаст две статические переменные - буфера - в сегменте SDRAM_SEGMENT по адресу, выбранному линкером.

Для ограничения адресного пространства Вы можете просто определить свой сегмент с заданными адресными границами и при создании переменных указывать его.

Это все справедливо для IAR ARM, но нечто подобное должно быть и в других средах. Смотрите хелп на компилятор, раздел наподобие "Controling data placement in memory" smile.gif
Go to the top of the page
 
+Quote Post
Busel Roman
сообщение Jan 16 2008, 16:05
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 51
Регистрация: 19-06-07
Из: Республика Беларусь, г.Витебск
Пользователь №: 28 538



Программирую в среде AVR32Studio. Она использует GCC.

Кто знает, направьте, куда смотреть, какие файлы содержат описание "Controling data placement in memory"?

А также, где найти какие и как в GCC применяются директивы (может дополнительные знаки, типа @) при управлении распределением памяти.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Jan 16 2008, 21:21
Сообщение #4


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Busel Roman @ Jan 16 2008, 19:05) *
Программирую в среде AVR32Studio. Она использует GCC.
Кто знает, направьте, куда смотреть, какие файлы содержат описание "Controling data placement in memory"?
А также, где найти какие и как в GCC применяются директивы (может дополнительные знаки, типа @) при управлении распределением памяти.
В gcc пишут так
int myvar __attribute__((section("mysect1")));
char myarr[256] __attribute__((section("mysect2")));

ну и линкеру не забываем указать где находятся эти Ваши секции mysect1,mysect2,...
Go to the top of the page
 
+Quote Post
Busel Roman
сообщение Jan 17 2008, 08:01
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 51
Регистрация: 19-06-07
Из: Республика Беларусь, г.Витебск
Пользователь №: 28 538



Цитата(singlskv @ Jan 16 2008, 23:21) *
ну и линкеру не забываем указать где находятся эти Ваши секции mysect1,mysect2,...
Я прошу прощения за глупые вопросы, но как это указать линкеру?

Может для AP7000 где-то в файлах GCC уже указаны все возможные адресные пространства (согласно datasheet на этот микроконтроллер). Я всего-лишь хочу создать кадровый буфер во внешней SDRAM, подключенной аппаратно в моем STK1000.

Сообщение отредактировал Busel Roman - Jan 17 2008, 08:02
Go to the top of the page
 
+Quote Post
singlskv
сообщение Jan 17 2008, 08:49
Сообщение #6


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Busel Roman @ Jan 17 2008, 11:01) *
Я прошу прощения за глупые вопросы, но как это указать линкеру?

-Wl,--section-start=mysect=0x10000000
ну или другой нужный адрес подставить
Цитата
Может для AP7000 где-то в файлах GCC уже указаны все возможные адресные пространства

В хидерах на AP7000 ищите такие дефайны:
AVR32_EBI1_ADDRESS
Go to the top of the page
 
+Quote Post
Busel Roman
сообщение Jan 17 2008, 09:54
Сообщение #7


Участник
*

Группа: Новичок
Сообщений: 51
Регистрация: 19-06-07
Из: Республика Беларусь, г.Витебск
Пользователь №: 28 538



Цитата(singlskv @ Jan 17 2008, 10:49) *
В хидерах на AP7000 ищите такие дефайны:
AVR32_EBI1_ADDRESS

Спасибо, нашел - то что требовалось. Файл "ap7000.h"

Только вот что-то все-равно не так. Где бы почитать про аттрибуты GCC?
Go to the top of the page
 
+Quote Post
singlskv
сообщение Jan 17 2008, 10:50
Сообщение #8


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Busel Roman @ Jan 17 2008, 12:54) *
Только вот что-то все-равно не так. Где бы почитать про аттрибуты GCC?
А что не так ?
Посмотрите в файле gcc.info
ну или погуглите по словам __attribute__ section

P.S. А Вы SDRAM инициализируете ?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Busel Roman   AVR32: AP7000: Image Sensor Interface (ISI)   Jan 12 2008, 13:39
- - AndyBig   ЦитатаМожет кто-нибудь подскажет, как вообще обраб...   Jan 12 2008, 22:52
|- - Busel Roman   Цитата(AndyBig @ Jan 13 2008, 00:52) Скаж...   Jan 14 2008, 07:27
- - AndyBig   Заглянул сейчас в даташит, вроде бы там все распис...   Jan 14 2008, 08:30
|- - Busel Roman   Спасибо тебе, добрый человек! Когда первый раз...   Jan 14 2008, 09:32
- - AndyBig   ЦитатаА как думаете, зачем проверять регистр DMAFR...   Jan 15 2008, 12:56
|- - Busel Roman   Еще вот такой вопрос: Как в С получить численное...   Jan 16 2008, 07:34
- - dimitryl   char *buf; // указатель ...   Jan 16 2008, 08:01
|- - Busel Roman   А как можно установить определенный диапазон адрес...   Jan 16 2008, 09:52
- - dimitryl   Указатель это просто переменная, если нужно чтоб о...   Jan 16 2008, 11:35
|- - Busel Roman   Цитата(dimitryl @ Jan 16 2008, 13:35) Ука...   Jan 16 2008, 13:27
- - dimitryl   Самый простой способ - статически выделить память ...   Jan 16 2008, 14:19
|- - Busel Roman   Цитата(dimitryl @ Jan 16 2008, 16:19) Сам...   Jan 16 2008, 14:42
- - Busel Roman   Цитата(singlskv @ Jan 17 2008, 12:50) А ч...   Jan 17 2008, 13:33
- - singlskv   Цитата(Busel Roman @ Jan 17 2008, 16:33) ...   Jan 17 2008, 16:12


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

 


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


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