|
|
  |
Altera PCIE Bar Expansion |
|
|
|
Nov 18 2013, 09:22
|

Местный
  
Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845

|
Добрый день, встала задача разобраться с 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. Может у них так баг какой?
|
|
|
|
|
Dec 2 2013, 07:22
|

Местный
  
Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845

|
Разобрался с 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.
|
|
|
|
|
Jan 19 2016, 07:16
|
Группа: Новичок
Сообщений: 3
Регистрация: 19-01-16
Пользователь №: 90 095

|
Цитата(novartis @ Dec 2 2013, 10:22)  Разобрался с 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? Заранее благодарен.
|
|
|
|
|
Jan 20 2016, 04:44
|

Местный
  
Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845

|
Здравствуйте. Проекта у меня того уже нет.
А что вы хотели в нём увидеть?
В корке, сгенеренной в SOPC или Qsys, bar expantion порт отсутствует.
В корке, сгенеренной мегавизардом, bar expantion порт присутствует. Настраиваете в корке его размер в размер с вашей флешкой, откуда будет считываться option rom. И enable ему указываете.
Дальше к этому порту цепляете интерфейс флешки. У меня в тестовом проекте флешки не было, поэтому цеплял внутреннюю память ПЛИС.
После компиляции, прошивки и перезагрузки Биос определяет, что в системе есть pcie плата, что у неё разрешён bar expantion, Биос попытается прочитать его содержимое.
Если в памяти (флешке) первые байты будут 0x55aa (вот сейчас уже не помню, может и 0xaa55), Биос поймёт, что у вас действительно option rom, и Биос его прочитает весь. Если же в памяти будут другие начальные байты, то Биос все вычитывать не будет. В любом случае после процедуры post Биос сбрасывает флаг enable для bar expantion.
На этом мои эксперименты закончились, отдал проект в таком виде дальше.
|
|
|
|
|
Jan 20 2016, 14:38
|
Группа: Новичок
Сообщений: 3
Регистрация: 19-01-16
Пользователь №: 90 095

|
Спасибо за ответ. Корку мегавизардом сгенерировал с bar expantion rom, звесь все понятно.
Правильно ли я понял, что базовый адрес rom expantion в памяти флешки равен 0? (по смещению 0 будет храниться 55h) Хотелось бы подробнее узнать как подцепить корку PCIe к флешке или внутренней памяти ПЛИС - получается нужен преобразователь из Avalon ST в MM?
|
|
|
|
|
Jan 20 2016, 17:35
|

Местный
  
Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845

|
Цитата Правильно ли я понял, что базовый адрес 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 пакетов.
|
|
|
|
|
Jan 22 2016, 12:55
|
Группа: Новичок
Сообщений: 3
Регистрация: 19-01-16
Пользователь №: 90 095

|
Ясно. Буду пробовать, спасибо большое за ответ.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|