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

 
 
 
Reply to this topicStart new topic
> Общие вопросы по SoC Altera, GSRD, GHRD, BSP, Device tree
verali
сообщение Aug 17 2015, 09:17
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Добрый день! Помогите разобраться в множестве понятий, относящихся к embedded linux и к SoC от Altera (плата Arrow SoCkit)
Передо мной стоит задача передать поток данных с ПЛИС на ПК через ethernet.
Решил на процессор поставить linux, на linux написать программу для передачи данных по ethernet и с помощью терминальной программы принимать данные (16-ти битное слово с частотой 500 кГц)
На сайте http://rocketboards.org/ начал изучать материалы по этому вопросу и немного запутался с терминами:
1) Golden System Reference Design - provides a set of essential hardware and software system components that can be used as a starting point for various custom user design.
Получается что GSRD - это набор драйверов, preloader, bootloader, дистрибутив linux, компонент процессора в qsys, bsp? Т.е это готовый toolchain для заливки в fpga?
2) BSP - из wiki - набор драйверов, встраиваемый в ОС.
Получается в каждый дистрибутив идет без bsp и его надо подключать отдельно?
3) В квикстарте http://rocketboards.org/foswiki/view/Documentation/ArrowSoCKITEvaluationBoard141LinuxGettingStarted описан процесс загрузки линукса, в котором мы делаем загрузочную SD-карту и получаем линукс, которым мы можем управлять с помощью терминальной программы (putty), хотя в мануале по HPS (hard processor system) явно указано, что для загрузки линукса требуется bootrom, preloader, bootloader.
Так что требуется для загрузки linux?

Go to the top of the page
 
+Quote Post
COMA
сообщение Aug 17 2015, 09:32
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 851
Регистрация: 28-08-04
Пользователь №: 559



У вас все в кучу свалено.

Рассматривайте SoC как два отдельных устрйоства.
Процессор с ARM Cortex-A9 и FGPA.
Go to the top of the page
 
+Quote Post
verali
сообщение Aug 17 2015, 09:53
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Цитата(COMA @ Aug 17 2015, 09:32) *
У вас все в кучу свалено.

Рассматирвайте SoC как два отдельных устрйоства.
Процессор с ARM Cortex-A9 и FGPA.

Сейчас я рассматриваю SoC именно как два разных устройства.
Сообщения выше относятся к ARM Cortex-A9, так как именно на него я буду ставить linux.
Как раз таки я хочу разгрести эту кучу и расставить все по полочкам.
Go to the top of the page
 
+Quote Post
COMA
сообщение Aug 17 2015, 10:04
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 851
Регистрация: 28-08-04
Пользователь №: 559



Тут описан процесс загрузки линукса.
http://rocketboards.org/foswiki/view/Docum...1#HPS_Boot_Flow

Вкратце - вам надо собрать Preloader, U-boot и найти образ ядра под свою плату. Или собрать свое ядро, если плата уникальная.
Go to the top of the page
 
+Quote Post
serjj
сообщение Aug 17 2015, 10:33
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
Передо мной стоит задача передать поток данных с ПЛИС на ПК через ethernet.

Какая скорость? Какой протокол?
Go to the top of the page
 
+Quote Post
verali
сообщение Aug 17 2015, 11:08
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Цитата(COMA @ Aug 17 2015, 11:04) *
Тут описан процесс загрузки линукса.
http://rocketboards.org/foswiki/view/Docum...1#HPS_Boot_Flow

Вкратце - вам надо собрать Preloader, U-boot и найти образ ядра под свою плату. Или собрать свое ядро, если плата уникальная.

В первом сообщении я дал ссылку на мануал, в котором описывался процесс загрузки линукса без preloader и bootloader. Сделал все по этому мануалу и получилось через терминал (putty) поморгать диодиками на плате. Поэтому у меня возник вопрос - а почему так получилось? Так как я не собирал ни прилодер, ни бутлодер!

Цитата(serjj @ Aug 17 2015, 11:33) *
Какая скорость? Какой протокол?

Данные - это 32 разрядное слово идет с частотой 500 кГц.
Как мне посоветовали надо делать tcp/ip
Go to the top of the page
 
+Quote Post
COMA
сообщение Aug 17 2015, 11:13
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 851
Регистрация: 28-08-04
Пользователь №: 559



Получилось потому что Вы прошили готовые образы для платы на SD карту и все.
Вся работа по сборке была сделана за Вас.
Go to the top of the page
 
+Quote Post
Jury093
сообщение Aug 17 2015, 11:23
Сообщение #8


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(verali @ Aug 17 2015, 12:17) *
Так что требуется для загрузки linux?

вот тут почитайте, вполне доступно расписано:
http://habrahabr.ru/company/metrotek/blog/235707/
Go to the top of the page
 
+Quote Post
serjj
сообщение Aug 17 2015, 11:30
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
Данные - это 32 разрядное слово идет с частотой 500 кГц.

Ну это всего 8 Мбит/с. Посылать 4 байта через Eth нецелесообразно, если есть возможность, то лучше копить несколько слов, хотя бы байт до 32-64, а потом уже слать их. Eth не предназначен для частой посылки сверхмалых пакетов. Гораздо выгоднее слать сразу пачку. У вас точка-точка или устройство должно будет работать в сети со сложной топологией? Зачем вам tcp/ip? Может лучше взять обычный udp, который прост как валинок? Если у вас данные супер отвественные, то можно сгородить собственную систему подтверждения доставки и запроса на пересылку в случае ошибки. Если всё так, то вам можно не связываться с EMAC в составе HPS, линухом, dma и прочим. Вы можете взять свой/чужой простенький Eth контроллер с интерфейсом Avalon/AXI4, он на ура подключается к AMR через FPGA2HPS bridge. На него пишется простенький драйвер с поддержкой UDP/ARP/ICMP, больше вам ничего не понадобится.
Go to the top of the page
 
+Quote Post
verali
сообщение Aug 17 2015, 11:53
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Цитата(COMA @ Aug 17 2015, 12:13) *
Получилось потому что Вы прошили готовые образы для платы на SD карту и все.
Вся работа по сборке была сделана за Вас.

Спасибо за разъяснение, где то вычитал, что bootrom находится во флеш-памяти процессора, поэтому и ввел самого себя в заблуждение.

Цитата(Jury093 @ Aug 17 2015, 12:23) *
вот тут почитайте, вполне доступно расписано:
http://habrahabr.ru/company/metrotek/blog/235707/

Сразу наткнулся на эту статью, но так как процесс заливки отличался от того, что представлено на rocketbard, решил повременить с разбором этой статьи.



Цитата(serjj @ Aug 17 2015, 12:30) *
Ну это всего 8 Мбит/с. Посылать 4 байта через Eth нецелесообразно, если есть возможность, то лучше копить несколько слов, хотя бы байт до 32-64, а потом уже слать их. Eth не предназначен для частой посылки сверхмалых пакетов. Гораздо выгоднее слать сразу пачку. У вас точка-точка или устройство должно будет работать в сети со сложной топологией? Зачем вам tcp/ip? Может лучше взять обычный udp, который прост как валинок? Если у вас данные супер отвественные, то можно сгородить собственную систему подтверждения доставки и запроса на пересылку в случае ошибки. Если всё так, то вам можно не связываться с EMAC в составе HPS, линухом, dma и прочим. Вы можете взять свой/чужой простенький Eth контроллер с интерфейсом Avalon/AXI4, он на ура подключается к AMR через FPGA2HPS bridge. На него пишется простенький драйвер с поддержкой UDP/ARP/ICMP, больше вам ничего не понадобится.

У меня точка-точка. tcp/ip - потому что на форуме посоветовали.
Был вариант разбираться с bare-metal, но информации оказалось очень мало.
Вариант с линуксом я выбрал, так как опыта написания дров у меня нет, вещи то может быть это и простые, но представления у меня о них очень слабые.
Go to the top of the page
 
+Quote Post
COMA
сообщение Aug 17 2015, 12:01
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 851
Регистрация: 28-08-04
Пользователь №: 559



Зачем для такой задачи Linux и SoC?
Может хватит обычного микроконтроллера?
Go to the top of the page
 
+Quote Post
verali
сообщение Aug 17 2015, 12:03
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540



Цитата(COMA @ Aug 17 2015, 13:01) *
Зачем для такой задачи Linux и SoC?
Может хватит обычного микроконтроллера?

Цифровая обработка происходит в fpga, в SoC находится еще и процессор! Думаю отличный повод начать изучать что-то новое.
Go to the top of the page
 
+Quote Post
serjj
сообщение Aug 17 2015, 12:23
Сообщение #13


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
У меня точка-точка. tcp/ip - потому что на форуме посоветовали.
Был вариант разбираться с bare-metal, но информации оказалось очень мало.
Вариант с линуксом я выбрал, так как опыта написания дров у меня нет, вещи то может быть это и простые, но представления у меня о них очень слабые.

Вам tcp/ip тут совершенно не нужен. Точка-точка, смешная скорость, udp пойдёт на ура, а с tcp запаритесь, кроме того у него избыточность выше чем у udp, он ещё меньше подходит для вашей задачи частой передачи маленьких сообщений.
А в чём проблема с baremetal? Суть такая же как и в Nios. Для периферии используется hwlib. Хелпом на него являются его исходники, а именно h файлы, там по каждой функции избыточная справка дана.
Дрова вам нужно будет писать не на HPS компонент, а на собственный eth, банальнейший memory map device. Если есть опыт с avl, но нет с axi, то можно смело писать под avl, т.к. qsys автоматически обеспечивает поддержку с avalon'ом при подключении hps компонента через fpga2hps. К драйверу нужно добавить 3 простых протокола: arp(для определения в сети), icmp(пинг) и udp(данные), а в программулине у вас сделать если требуется надстройку в виде контроля целостности (например по frame id, но это уже совсем тривиально).
Здесь всё будет прозрачно и написано вами. А теперь представте, что у вас на вашей плате (не отладочной) под линухом, который вы доблестно собрали начинаются проблемы с tcp/ip, ваши действия?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Aug 17 2015, 12:41
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Если написано arp, icmp, udp, то добавив тривиальщину в виде контроля целостности пакета, и контроля пропуска-повторения, что вас будет отличать от ТСР?
А потом захочется чтобы IP плате выдали, и чтобы в хаб оно воткнулось, и чтобы из другой подсети было доступно, и чтобы настройки сетевые можно передать, и понеслась....

так что я бы сказал есть 2 варианта:
1. это просто формирователь UDP пакетов и все, есть даже реализация полностью в железе
2. полноценный стэк до TCP/IP с DHCP, всякие виртуальные сети и каналы в целом можно опустить.

И конечно же его не надо писать, надо взять готовый, стабильных и полноценных вариантов в природе много. В этом стеке мало славы, много надо написать, мало что придумать, обертки данных и обсчеты CRC, и зачем это самим писать?





Go to the top of the page
 
+Quote Post
serjj
сообщение Aug 17 2015, 12:50
Сообщение #15


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Цитата
Если написано arp, icmp, udp, то добавив тривиальщину в виде контроля целостности пакета, и контроля пропуска-повторения, что вас будет отличать от ТСР?

то что это не весь стек, а только опция, которая вам нужна, для обеспечения надежности передачи важной информации, если таковая требуется. При этом добавляемые избыточность/сложность минимальны и определяются разработчиком.
Цитата
А потом захочется чтобы IP плате выдали, и чтобы в хаб оно воткнулось, и чтобы из другой подсети было доступно, и чтобы настройки сетевые можно передать, и понеслась....

ip входит в udp. Через хаб это работать будет. Настроить ip адрес по сетке через предложенную схему тоже можно (я собственно так и делаю).
Я в своих рассуждениях отталкивался только от оговоренной задачи. Исходя из условий, не вижу тут никакой надобности в универсальном сетевом изделии с поддержкой всевозможных протоколов, имхо для простой связи железка - свич - пк перечисленных трех протоколов хватает.
ps. ну и если есть желание включать железку, которая работает по точка-точка, в большую сеть, то есть немалая вероятность призвать админов rolleyes.gif

Сообщение отредактировал serjj - Aug 17 2015, 12:55
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 18:27
Рейтинг@Mail.ru


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