реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Altera PCIE Bar Expansion
novartis
сообщение Nov 18 2013, 09:22
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 357
Регистрация: 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.
Может у них так баг какой?




Go to the top of the page
 
+Quote Post
novartis
сообщение Nov 25 2013, 16:49
Сообщение #2


Местный
***

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



Неужто никто не возился с этим вопросом? Генерю в мегавизарде pcie компонент, как показано на картинке, а bar expansion не доступен все равно. Помогите!
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
novartis
сообщение Dec 2 2013, 07:22
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 357
Регистрация: 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.


Go to the top of the page
 
+Quote Post
stalk
сообщение Jan 19 2016, 07:16
Сообщение #4





Группа: Новичок
Сообщений: 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?

Заранее благодарен.
Go to the top of the page
 
+Quote Post
novartis
сообщение Jan 20 2016, 04:44
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 357
Регистрация: 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.

На этом мои эксперименты закончились, отдал проект в таком виде дальше.
Go to the top of the page
 
+Quote Post
stalk
сообщение Jan 20 2016, 14:38
Сообщение #6





Группа: Новичок
Сообщений: 3
Регистрация: 19-01-16
Пользователь №: 90 095



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

Правильно ли я понял, что базовый адрес rom expantion в памяти флешки равен 0? (по смещению 0 будет храниться 55h)
Хотелось бы подробнее узнать как подцепить корку PCIe к флешке или внутренней памяти ПЛИС - получается нужен преобразователь из Avalon ST в MM?
Go to the top of the page
 
+Quote Post
novartis
сообщение Jan 20 2016, 17:35
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 357
Регистрация: 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 пакетов.




Go to the top of the page
 
+Quote Post
stalk
сообщение Jan 22 2016, 12:55
Сообщение #8





Группа: Новичок
Сообщений: 3
Регистрация: 19-01-16
Пользователь №: 90 095



Ясно. Буду пробовать, спасибо большое за ответ.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd August 2017 - 09:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.03301 секунд с 7
ELECTRONIX ©2004-2016