misyachniy
Feb 17 2014, 16:26
Проект перестал помещатся в 64К пришлось создать дополнительный блок и углубиться в изучение распределения памяти Microblaze. В сгенерированом по умолчанию скрипте линкера был блок размером чуть больше 64К.
Часть памяти отведена под прерывания.
Но когда я посмотрел архитектуру процессора то увидел, что она "Гарвардская" и имеет два блока по 64К.
Один для инструкций другой для данных.
Базовый адрес один.
По наименованию некоторых секций можно догадатся какого они типа.
Но остается не понятно: как линкер распределяет коды и данные?
Самостоятельно пакует коды в BRAM кодов , а данные в BRAM данных?
Пытался поискать в Итернете, так все ссылки забиты инструкциями к Eclipse/Java :-(
Подозреваю, что вот это вам надо - GNU Linker
https://web.eecs.umich.edu/~prabal/teaching...inker.pdf\Могу попробовать подкинуть линкер-скрипты для систем с DDR + BRAM
Golikov A.
Apr 8 2014, 19:26
где то на этот счет был хелп.
у него есть секция для маленьких данных и для больших, для маленьких и больших только на чтение
секция кода и прочей байды.
Вы максимум что можете без танцев и обманок, это попросить какие секции в каике куски памяти разложить, а далее все...
Более того есть соседняя тема про сколько памяти надо для микроблайз... там ближе к концу есть изыскания как микроблайз уговорить работать с более чем 1 брамом более 64 кБайт. Без бубна и танцев это невозможно... Легче сразу на ДДР переходить, а брамы на кеши потратить...
Непонятно причем тут упоминание о гарвардской архитектуре.
Больше 64 Кб, на сколько я понимаю, вам не позволит распределить по шинам ILMB/DLMB (если это не Virtex или Kintex). Если надо больше памяти за счет существующей bram, нужно подключать её через AXI/PLB, но программа, опять же как я понимаю, туда попадать не будет - это будут только данные.
И, может быть, стоит обратить внимание на оптимизацию кода программы. Вы действительно пользуетесь кучей - если нет - вот вам, к примеру, лишний килобайт.
Я тоже почти забил 64 Кб программой - но там ещё массивы данных хранятся + подхожу я к приделу только на Debug-версии.