Gunner 0 22 июля, 2009 Опубликовано 22 июля, 2009 · Жалоба На плате есть Blackfin и SDRAM. Пишу софт для процессора, используя VisualDSP. Как правильно разместить переменную (например массив) в памяти SDRAM, но чтобы при этом компилятор другие переменные в SDRAM без моего ведома не размещал? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 32 22 июля, 2009 Опубликовано 22 июля, 2009 · Жалоба Как правильно разместить переменную (например массив) в памяти SDRAM.. #pragma section ("sdram0") char array[256]; .. но чтобы при этом компилятор другие переменные в SDRAM без моего ведома не размещал? #pragma section ("L1_data_b") другие_переменные; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vik0 0 22 июля, 2009 Опубликовано 22 июля, 2009 · Жалоба #pragma section ("L1_data_b") другие_переменные; Можно и так. Но, по-моему, это правильней делать правкой ldf-файла: sdram0_bank0 { INPUT_SECTION_ALIGN(4) INPUT_SECTIONS($OBJECTS(my_vars_in_sdram)) /* Все остальное (нагенерированное VDSP) из секции выкинуть */ } > MEM_SDRAM0_BANK0 Ну и тогда, соответственно: #pragma section ("my_vars_in_sdram") char array[256]; PS. Править, естественно, надо секции для всех банков SDRAM Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
koljakh 0 22 июля, 2009 Опубликовано 22 июля, 2009 · Жалоба На плате есть Blackfin и SDRAM. Пишу софт для процессора, используя VisualDSP. Как правильно разместить переменную (например массив) в памяти SDRAM, но чтобы при этом компилятор другие переменные в SDRAM без моего ведома не размещал? Еще есть #pragma default_section на группу переменных, в отличие от #pragma section, которая работает только с ниже следующим объявлением, в хелпе гляньте синтаксис. Но, как уже сказали, лучше лдф подкорректировать под ваши задачи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gunner 0 22 июля, 2009 Опубликовано 22 июля, 2009 · Жалоба #pragma section ("sdram0") char array[256]; #pragma section ("L1_data_b") другие_переменные; У меня тогда два вопроса: 1) Секцию "sdram0" надо создавать в ldf-файле? Или она по умолчанию уже есть? 2) Если не указать вторую прагму, то куда будут размещаться все переменные в проекте? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
koljakh 0 22 июля, 2009 Опубликовано 22 июля, 2009 · Жалоба У меня тогда два вопроса: 1) Секцию "sdram0" надо создавать в ldf-файле? Или она по умолчанию уже есть? 2) Если не указать вторую прагму, то куда будут размещаться все переменные в проекте? А у вас лдф подключен к проекту свой, или тот, который по умолчанию? по умолчанию данные располагаются в секции data1 код - в секции program а эти секции могут быть где угодно, зависит от лдф Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 32 22 июля, 2009 Опубликовано 22 июля, 2009 · Жалоба У меня тогда два вопроса: 1) Секцию "sdram0" надо создавать в ldf-файле? Или она по умолчанию уже есть? 2) Если не указать вторую прагму, то куда будут размещаться все переменные в проекте? 1) уже есть, если ldf создан визардом. 2) в любое свободное место. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gunner 0 22 июля, 2009 Опубликовано 22 июля, 2009 · Жалоба 1) уже есть, если ldf создан визардом. 2) в любое свободное место. По поводу п.2: Получается, что и в SDRAM может размещать (чего я не хочу)? Как сделать, чтобы он этого не делал? Каждый раз использовать #pragma section ("L1_data_b") для других переменных или есть возможность каким-то образом запретить использовать SDRAM? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
koljakh 0 22 июля, 2009 Опубликовано 22 июля, 2009 · Жалоба По поводу п.2: Получается, что и в SDRAM может размещать (чего я не хочу)? Как сделать, чтобы он этого не делал? Каждый раз использовать #pragma section ("L1_data_b") для других переменных или есть возможность каким-то образом запретить использовать SDRAM? за комментируйте строку в лдф INPUT_SECTIONS( $OBJECTS(data1) ), которая относится к области SDRAM Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gunner 0 22 июля, 2009 Опубликовано 22 июля, 2009 · Жалоба за комментируйте строку в лдф INPUT_SECTIONS( $OBJECTS(data1) ), которая относится к области SDRAM Ага, спасибо. А через "Project Options --> ..." это не делается? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
koljakh 0 22 июля, 2009 Опубликовано 22 июля, 2009 · Жалоба Ага, спасибо. А через "Project Options --> ..." это не делается? Нет, через "Project Options --> ..." все не сделаешь :):) Там только типичные случаи. Если разрешен SDRAM, то он добивает L1 до упора, а потом SDRAM. Да, еще, глобальные переменные, которые инитятся нулями помещаются в bsz секцию, а const и строки проинициализированные, в constdata, так что лдф редактировать надо. Почитайте доку по линкеру, а точнее, по синтаксису лдф файла. Там много всего интересного. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gunner 0 22 июля, 2009 Опубликовано 22 июля, 2009 · Жалоба Нет, через "Project Options --> ..." все не сделаешь :):) Там только типичные случаи. Если разрешен SDRAM, то он добивает L1 до упора, а потом SDRAM. Да, еще, глобальные переменные, которые инитятся нулями помещаются в bsz секцию, а const и строки проинициализированные, в constdata, так что лдф редактировать надо. Почитайте доку по линкеру, а точнее, по синтаксису лдф файла. Там много всего интересного. Уже читаю, спасибо. Действительно много и интересно :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vik0 0 22 июля, 2009 Опубликовано 22 июля, 2009 · Жалоба Уже читаю, спасибо. Действительно много и интересно :) Будете править ldf, не забудьте визарду сказать "stop regenerate ldf", а то будет мучительно больно за пропавшие правки :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gunner 0 22 июля, 2009 Опубликовано 22 июля, 2009 · Жалоба Будете править ldf, не забудьте визарду сказать "stop regenerate ldf", а то будет мучительно больно за пропавшие правки :) Спасибо, что предупредили :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gunner 0 22 июля, 2009 Опубликовано 22 июля, 2009 · Жалоба Кстати никто не знает, почему использование SDRAM начинается не с 0-го адреса, а с 4-го (судя по описанию ldf-файла)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться