Перейти к содержанию
    

PPC405 в Virtex2-pro

Существуют ли компиляторы для PPC405x3 (который в V2P), кроме того, что встроен в EDK?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И ещё: каким образом заставить компилятор/линковщик собрать код, исходя из того, что память данных и память программ физически разные (Гарвардская архитектура).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Существуют ли компиляторы для PPC405x3 (который в V2P), кроме того, что встроен в EDK?

 

http://www.xilinx.com/ise/embedded/sw_dev.htm

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И ещё: каким образом заставить компилятор/линковщик собрать код, исходя из того, что память данных и память программ физически разные (Гарвардская архитектура).

 

так линковщику вобщем-то по-барабану (Нейман, Гарвард)

 

указываете: в эту память линковать данные, в ту программу...

 

да и у PPC юниформная память (то есть Неймановская) - то что где-то окажется контролер памяти, который разобъет адресное пространство на несколько физически разных памятей - на это линкеру и компилеру плевать и работе мешать не должно.

 

а у по-настоящему Гарвардских процев - инструкции разные для доступа к данным или программе и этот вопрос решает скорее компилятор

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...инструкции разные для доступа к данным или программе..
Скорее всего шины разные. Насчет инструкций для доступа к памяти инструкций - не уверен, есть ли они (да и нужны ли?). Есть команды для работы с кэшем инструкций. :)

В своём первом вопросе я не совсем внятно спросил, что хотел. Переформулирую: как средствами, входящими в EDK 6.2, сгенерить такой код, чтобы:

- подразумевалось, что физически память для инстукций и для данных была разная, и адреса их могли безболезнено пересекаться;

- (было бы неплохо...) не было необходимости инициализировать память данных перед стартом программы.

 

Насчёт пункта 1 - возможно, что "...указываете: в эту память линковать данные, в ту программу...". Линковщик при сборке руководствуется файл-скриптом (целым файлом с правилами сборки), и наверняка это можно сделать. Пока что у меня генериться такой код, что инстукции для проца разбросаны по всему обьёму памяти, в перемешку с данными. И если я хочу разместить в BRAM код, который должен работать с огромной внешней памятью - у меня это не получается.

 

А насчёт пункта 2... На осцилле видать, что при старте программы проц делает несколько ВЫБОРОК из памяти данных. Что он оттуда читает - непонятьно, потому как стандартными средствами эти участки кода не дизасемблируются... Как бы заставить компилер генерить код, который бы сам инициализировал память данных.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Н-да... А PPC то, оказывается, действительно не не Гарвардский... У него только кэш такой.

Но всё равно, предыдущие вопросы актуальности не теряют. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

c EDK я сам не работал (собираюсь вскоре, но не в рамках основных проектов, а потому что мне РРС нравится :-)

поэтому сейчас точно сказать не могу.

 

насколько я понял мозги EDK сделаны из GNU - ну и соответственно там так (да и в других линкерах идея такая же)

 

вначале описываете типы памяти - команда MEMORY { ... то есть имя области памяти, атрибуты, адреса

 

затем привязываете секции сгенеренные компилятором bss, text, data и т.п.

к областям памяти - команда SECTION (можно из отдельного файла секцию text (код) поместить в быструю память, или назвать специально секцию)

 

наверняка примеры скриптов в EDK есть

 

если что-то куда-то нелезет - линкер ругнется

 

----------

 

перед запуском С-программы (вызовом main), проц делает дофига всякой работы - т.н. стартап (в gnu обычно какой-нибудь crt0.o),

в этом коде (обычно) проц забивает нулями секцию bss, копирует данные для инициализированных переменных, с железом чего-нибудь делает и т.д.

 

для того чтобы избавится от стартапа - нужно

1) дать ключи, типа --no-startup или что-то подобное RTFM

2) вручную (через make) скомпилировать (не линковать!) исходники и слинковать их со своим стаотапом (стартап либо на асм-е, либо не должен пользовать внешних переменных, malloc-ов ...)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сенкс, уже теплее. :)

Есть над чем подумать (или попытаться подумать)...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А можно ли компилятором из EDK собрать прогу под другой процессор PowerPC, но не залитый в Virtex?

Интуитивно понимаю что должен, но бывает всякое. Был ли у кого опыт?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...