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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> AVR32: AP7000: Image Sensor Interface (ISI), Как переключаются буферы видеокадров?
singlskv
сообщение Jan 16 2008, 21:21
Сообщение #16


дятел
*****

Группа: Свой
Сообщений: 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
Сообщение #17


Участник
*

Группа: Новичок
Сообщений: 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
Сообщение #18


дятел
*****

Группа: Свой
Сообщений: 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
Сообщение #19


Участник
*

Группа: Новичок
Сообщений: 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
Сообщение #20


дятел
*****

Группа: Свой
Сообщений: 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
сообщение Jan 17 2008, 13:33
Сообщение #21


Участник
*

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



Цитата(singlskv @ Jan 17 2008, 12:50) *
А что не так ?
Посмотрите в файле gcc.info
ну или погуглите по словам __attribute__ section

P.S. А Вы SDRAM инициализируете ?

Из gcc.info:
Код
`section ("SECTION-NAME")'
     Normally, the compiler places the code it generates in the `text'
     section.  Sometimes, however, you need additional sections, or you
     need certain particular functions to appear in special sections.
     The `section' attribute specifies that a function lives in a
     particular section.  For example, the declaration:

          extern void foobar (void) __attribute__ ((section ("bar")));

     puts the function `foobar' in the `bar' section.

     Some file formats do not support arbitrary sections so the
     `section' attribute is not available on all platforms.  If you
     need to map the entire contents of a module to a particular
     section, consider using the facilities of the linker instead.
Все верно, но не так явно указывается, как мне хотелось бы.

SDRAM, конечно, инициализирую.
Я взял AppNote для LCDC. На базе его делаю свою программу для вывода видеоизображения с ISI на LCD. При более детальном рассмотрении данного AppNote, нашел как они присваивают указателю определенное значение:
Код
unsigned char * framePtr = (unsigned char *) (lcdc_conf->dmabaddr1 | 0xA0000000);
Собственно, я про это и спрашивал.

Всем СПАСИБО за помощь!
Go to the top of the page
 
+Quote Post
singlskv
сообщение Jan 17 2008, 16:12
Сообщение #22


дятел
*****

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



Цитата(Busel Roman @ Jan 17 2008, 16:33) *
Из gcc.info:
......................
SDRAM, конечно, инициализирую.
Я взял AppNote для LCDC. На базе его делаю свою программу для вывода видеоизображения с ISI на LCD. При более детальном рассмотрении данного AppNote, нашел как они присваивают указателю определенное значение:
Код
unsigned char * framePtr = (unsigned char *) (lcdc_conf->dmabaddr1 | 0xA0000000);
Собственно, я про это и спрашивал.

Это конечно работает, в качестве аппноута, только все равно когда программа начнет разрастаться,
Вам придеться разбираться с section.
На этом проце SRAM не такая уж и большая и предполагается что в ней должны жить всякие
очень быстродоступные вещи типа обработчиков прерываний, важных для общей
производительности переменных(например семафоры, мьютексы,....) , и т.д.
Все остальное должно храниться в SDRAM(в том числе и обычные переменные и особенно массивы).
И вот здесь, без подробного разбирательства с sections не обойтись.
Вам нужно написать инициализацию SDRAM в определенной секции .initX ,
нужно написать процедуру копирования инициализированных данных из флеш в SDRAM,
нужно написать процедуру обнуления всех неинициализированных переменных,
нужно написать процедуру переноса "быстрого" кода в SRAM и "медленного" в SDRAM, и т.д.

Так что чем раньше Вы начнете разбираться с sections, тем быстрее потом будете
осваивать написание вышеперечисленных "нужно"....
Go to the top of the page
 
+Quote Post

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

 


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


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