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

Altera PCIE Bar Expansion

Добрый день, встала задача разобраться с Bar Expansion в мегакорке PCI Express от Альтеры. Использую отладочную плату Stratix IV GX Development Kit.

 

Во-первых, в Qsys (и в SOPC) Bar Expansion не доступен для настройки, его просто нету как параметра у компонента pcie. Это же написано в user_guide на PCI Express от Альтеры. (Не спроста ли????)

 

Пошел другим путем. Сгенерил компонент PCIE бычным мегавизардом. Bar Expansion у него доступен. Устанавливаю ему Enable и 4КБт размер (По идеи в Bar Expansion как минимум младший бит должен стать 1 - enable).

Компилирую проект, загружаю. Под линуксом смотрю lspci и вижу, что у моей платы Bar Expansion disable и 4КБт размер. Почему disable - не понятно.

 

Ковыряю дальше. У компонента pcie есть интерфейс LMI, позволяющий достучаться до конфигурационного пространства.

Пытаюсь просмотреть его путем перекидывания информации из конфигурационного пространства в память, которую видно в In System Memory Content Editor.

 

В итоге: включаю комп, оставляю его на этапе выбора операционки. Смотрю, что в конф. пространстве.

device id - тот что я задал,

vendor id - тот что я задал,

Bar0 = 0x00000008,

Bar1 = 0x00000008,

...

Bar Expansion = 0x00000000 - Bar Expansion ПУСТОЙ.

 

 

Дальше загружаю линукс. Линукс выделает моим барам адреса в памяти:

device id - тот что я задал,

vendor id - тот что я задал,

Bar0 = 0xFC000008,

Bar1 = 0xFC004008,

...

Bar Expansion = 0x00000000 - Bar Expansion ПУСТОЙ.

 

С помощью lspci вижу, что адреса в барах, вычитанные LMI совпдают с теми, что выдает lspci.

А вот Bar Expansion, выдаваемый LMI, пустой, а lspci показывает, что ему все таки присовен адрес 0xFC960000, он disable и размер 4КБт. Почему так?

 

Есть у кого то успешный опыт работы с Altera PCIE Bar Expansion.

Может у них так баг какой?

 

 

 

 

 

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


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

Неужто никто не возился с этим вопросом? Генерю в мегавизарде pcie компонент, как показано на картинке, а bar expansion не доступен все равно. Помогите!

post-52845-1385397986_thumb.png

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


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

Разобрался с Bar Expansion в мегакорке PCI Express от Альтеры.

 

Вообщем, у компонента pcie, созданного в Qsys, отсутствует возможность настроить и разрешить использовать Bar Expansion.

 

У компонента pcie, созданного в megawizard'ом, такая возможность имеется.

В результате, в проекте удалось вычитать POST BIOS'ом через pcie из BAR-EXP содержимое подключенной к ПЛИС флешки. Это факт.

 

По той информации, которую удалось найти в интернете, пришел к выводу, что POST BIOS после того, как прочитает Option ROM (а точнее скопирует ее в ОЗУ), запрещает дальнейшее ее использование.

Вот ссылки для ознакомления (кому интересно):

http://perscom.ru/index.php/pci-pci-x/94--...pansion-rom-pci

Цитата: Далее чтение ПЗУ запрещается (записью в поле Expansion ROM Base Address) и вызывается процедура инициализации модуля (по адресу 3).

 

http://www.rulit.net/books/apparatnye-inte...239558-218.html

Цитата: Далее POST, по возможности, запрещает работу (отображение в область UMA) исходного модуля ПЗУ и продолжает свой путь к вызову процедуры начальной загрузки.

 

http://forum.sources.ru/index.php?showtopic=322712&st=15

 

Поэтому то в линуксе (lspci) я и видел, что bar-exp disable.

 

 

 

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


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

Разобрался с Bar Expansion в мегакорке PCI Express от Альтеры.

 

Вообщем, у компонента pcie, созданного в Qsys, отсутствует возможность настроить и разрешить использовать Bar Expansion.

 

У компонента pcie, созданного в megawizard'ом, такая возможность имеется.

В результате, в проекте удалось вычитать POST BIOS'ом через pcie из BAR-EXP содержимое подключенной к ПЛИС флешки. Это факт.

 

По той информации, которую удалось найти в интернете, пришел к выводу, что POST BIOS после того, как прочитает Option ROM (а точнее скопирует ее в ОЗУ), запрещает дальнейшее ее использование.

Вот ссылки для ознакомления (кому интересно):

http://perscom.ru/index.php/pci-pci-x/94--...pansion-rom-pci

Цитата: Далее чтение ПЗУ запрещается (записью в поле Expansion ROM Base Address) и вызывается процедура инициализации модуля (по адресу 3).

 

http://www.rulit.net/books/apparatnye-inte...239558-218.html

Цитата: Далее POST, по возможности, запрещает работу (отображение в область UMA) исходного модуля ПЗУ и продолжает свой путь к вызову процедуры начальной загрузки.

 

http://forum.sources.ru/index.php?showtopic=322712&st=15

 

Поэтому то в линуксе (lspci) я и видел, что bar-exp disable.

 

 

Здравствуйте!

 

Могли бы Вы прислать или опубликовать исходники простейшего проекта Quartus, демонстрирующую работоспособность PCIe Expansion ROM?

 

Заранее благодарен.

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


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

Здравствуйте. Проекта у меня того уже нет.

 

А что вы хотели в нём увидеть?

 

В корке, сгенеренной в SOPC или Qsys, bar expantion порт отсутствует.

 

В корке, сгенеренной мегавизардом, bar expantion порт присутствует.

Настраиваете в корке его размер в размер с вашей флешкой, откуда будет считываться option rom. И enable ему указываете.

 

Дальше к этому порту цепляете интерфейс флешки.

У меня в тестовом проекте флешки не было, поэтому цеплял внутреннюю память ПЛИС.

 

После компиляции, прошивки и перезагрузки Биос определяет, что в системе есть pcie плата, что у неё разрешён bar expantion, Биос попытается прочитать его содержимое.

 

Если в памяти (флешке) первые байты будут 0x55aa (вот сейчас уже не помню, может и 0xaa55), Биос поймёт, что у вас действительно option rom, и Биос его прочитает весь. Если же в памяти будут другие начальные байты, то Биос все вычитывать не будет.

В любом случае после процедуры post Биос сбрасывает флаг enable для bar expantion.

 

На этом мои эксперименты закончились, отдал проект в таком виде дальше.

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


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

Спасибо за ответ. Корку мегавизардом сгенерировал с bar expantion rom, звесь все понятно.

 

Правильно ли я понял, что базовый адрес rom expantion в памяти флешки равен 0? (по смещению 0 будет храниться 55h)

Хотелось бы подробнее узнать как подцепить корку PCIe к флешке или внутренней памяти ПЛИС - получается нужен преобразователь из Avalon ST в MM?

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


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

Правильно ли я понял, что базовый адрес rom expantion в памяти флешки равен 0? (по смещению 0 будет храниться 55h)

Да

 

Хотелось бы подробнее узнать как подцепить корку PCIe к флешке или внутренней памяти ПЛИС - получается нужен преобразователь из Avalon ST в MM?

Тут два варианта.

1. Вы используете Qsys. Контроллер флешки у вас получается будет Avalon MM. Или внутреннюю память будете использовать, она тоже будет Avalon MM в Qsys.

Так как pcie корка сгенерена мегавизардом, вам придется написать свой компонент для Qsys, в котором обвяжете pcie корку, прикрутите к ней Avalon MM.

 

2. Вы не используете Qsys. Контроллер флешки у вас хоть какой.

Пишите некий костыль для стыковки этого контроллера флешки с коркой pcie.

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

 

Тут заковыка в том, что у pcie корки выход то Avalon ST, но напрямую данные от другого источника Avalon ST туда подавать нельзя.

В корку нужно засовывать пакеты в соответствии с форматом Transaction Layer Protocol в соответствии со спецификацией PCI Express.

Тоже касается и приходящих из корки пакетов - там вместе с данными присутствует заголовок пакета.

Почитать о формате пакетов можно здесь http://xillybus.com/tutorials/pci-express-...utorial-guide-1

 

То есть Биос будет пытаться читать ваш bar expantion.

По шине Avalon ST от корки к вам будут прилетать Read Request пакеты.

Вы их должны обнаружить (по полям Fmt и Type, а также Length=1, также адрес будет ссылаться на ваш bar expantion).

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

 

Отличие и достоинства Qsys варианта PCIE корки в том, что не нужно заморачиваться с заголовками.

Но в нее не заложили bar expantion, поэтому придется пыхтеть над заголовками pcie пакетов.

 

 

 

 

 

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


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

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

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

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

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

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

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

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

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

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