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

 
 
> Cyclone V два ядра в baremetal
alexPec
сообщение Feb 2 2016, 19:15
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Всем доброго дня. Пускал ли кто 2 ядра в baremetal, не в операционке? Если да, подтолкните в правильном направлении - литература там, может даже код загрузки второго ядра (если не жалко), ну и вообще любую информацию. Нужно запустить совершенно разные программы на разных ядрах.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
RadiatoR
сообщение Jul 3 2016, 15:55
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 270
Регистрация: 8-08-15
Из: Москва
Пользователь №: 87 901



1. То есть программирование идет только на флешку? (у меня DE0-nano soc).

2. А в каком виде должна находиться прошивка на SD? Я в последнем разделе (Booting and configuration) не нашел (может плохо искал?), там есть биты BSEL, которые отвечают за устройство загрузки и еще какая-то инфа, бегло пробежавшись не увидел как должно быть.

3. А как тогда идет отладка? Точнее каким образом записывается на карту программа? Ведь что бы закинуть файл на SD там нужно файловую систему поднять... А отлаживать потом как? Или можно каким-то софтом залить? В примерах видел только через линкус, и то там образ заливался.

4. Кстати VBKesha упоминал про то, что сначала работать с внешней памятью нельзя (контролер не инициализировал ее, это понятно), но можно работать с 64 встроенной RAM. Вот тут можете в 2х словах сказать откуда выполняется программа? Из ОЗУ, кто ее туда копирует? То есть не как в микроконтроллере из flash? А как в этом случае работает программа из ROM?

Спасибо)
Go to the top of the page
 
+Quote Post
VBKesha
сообщение Jul 4 2016, 14:23
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 10-01-07
Из: Брянск
Пользователь №: 24 263



Цитата(RadiatoR @ Jul 3 2016, 18:55) *
1. То есть программирование идет только на флешку? (у меня DE0-nano soc).

На DE0-nano-soc да, откуда грузить проц выбирается через ноги BSEL а на DE0-nano-soc они запаяны перемычками и поменять их нельзя. Только SD Карта

Цитата(RadiatoR @ Jul 3 2016, 18:55) *
2. А в каком виде должна находиться прошивка на SD? Я в последнем разделе (Booting and configuration) не нашел (может плохо искал?), там есть биты BSEL, которые отвечают за устройство загрузки и еще какая-то инфа, бегло пробежавшись не увидел как должно быть.

Биты BSEL это пины. Прошивка, тут всё интересней изначально система грузит прелоадер, прелоадер лежит на разделе флешки с определенным ID, то есть по сути прелоадер лежит не на файловой системе а как RAW данные в спец разделе. Есть ещё вариант когда просто прелодер лежит в начале флешки но тогда там вообще не будет разделов и прочего. Прелоадер по сути это первая внешняя прога которую стартует этот проц. На этом в целом может всё и закончится то есть прелоадер будет основной прогой. Если же нет то дальше прелоадер решает как и что грузить.

Цитата(RadiatoR @ Jul 3 2016, 18:55) *
3. А как тогда идет отладка? Точнее каким образом записывается на карту программа? Ведь что бы закинуть файл на SD там нужно файловую систему поднять... А отлаживать потом как? Или можно каким-то софтом залить? В примерах видел только через линкус, и то там образ заливался.

Вот тут начинается веселье. Во всех смыслах этого слова. Дебаг идёт через дебаг скрипт. Суть скрипта всякими манипуляциями довести проц до твоей программы и уже на ней сделать брякпоинт. Делает он обычно это так сначало на карту пишешь прелоадер. Дальше стандартный скрипт расписан так:
1. Делается ресет процу.
2. Ставит бряк на процедуру прелоадера которая начинает загрузку приложения с карты.
3. Загружает в память elf(они его зачем то зовут axf) в память уже инициализированого чипа.
4. Ставит точку стартка на main приложения.

Как писать приложение на карту зависит от прелоадера, может быть файл на файловой системе, может "прилипится" к прелоадеру, да хоть по езернету загрузиться.

Цитата(RadiatoR @ Jul 3 2016, 18:55) *
4. Кстати VBKesha упоминал про то, что сначала работать с внешней памятью нельзя (контролер не инициализировал ее, это понятно), но можно работать с 64 встроенной RAM. Вот тут можете в 2х словах сказать откуда выполняется программа? Из ОЗУ, кто ее туда копирует? То есть не как в микроконтроллере из flash? А как в этом случае работает программа из ROM?

Есть BootROM(поменять его нельзя, по крайней мере нигде не описано как) у него простой алгоритм:
1.Провести минимальную инициализация.
2. Прочитать BSEL выбрать откуда грузиться.
3. Поискать заголовок прелоадера, если нашёл то загрузить его в OCRAM(те самые 64 килобайта) передать управление на него.
По идее если не смог загрузится откуда либо он должен попытаться загрузится из FPGA но что то у меня это не сработало.
Вот в этом документе описано подробней что и как https://www.altera.com/content/dam/altera-w...re/an/an709.pdf

PS. В Altera'вских примерах нашёл пример MPL прелоадер, если оттуда вырезать загрузку с флешек, и поддержку фата(чем я собираюсь на днях заняться), то как раз получится каркас Baremetal приложения работающего без загрузчика(само по себе загрузчик), которое можно будет отлаживать без танцев с бубном но с ограничением в 64Килобайта на приложение.
Go to the top of the page
 
+Quote Post
RadiatoR
сообщение Jul 5 2016, 05:48
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 270
Регистрация: 8-08-15
Из: Москва
Пользователь №: 87 901



С прелоадером и вообще с картой загрузки, что откуда стартует я разобрался.

Цитата(VBKesha @ Jul 4 2016, 17:23) *
по сути прелоадер лежит не на файловой системе а как RAW данные в спец разделе. Есть ещё вариант когда просто прелодер лежит в начале флешки но тогда там вообще не будет разделов и прочего.


Но ведь с компа нельзя будет загрузить на флешку что либо без поднятия файловой системы. Хотя может можно это через цпец софт сделать...


Цитата(VBKesha @ Jul 4 2016, 17:23) *
Вот тут начинается веселье. Во всех смыслах этого слова. Дебаг идёт через дебаг скрипт. Суть скрипта всякими манипуляциями довести проц до твоей программы и уже на ней сделать брякпоинт. Делает он обычно это так сначало на карту пишешь прелоадер. Дальше стандартный скрипт расписан так:
1. Делается ресет процу.
2. Ставит бряк на процедуру прелоадера которая начинает загрузку приложения с карты.
3. Загружает в память elf(они его зачем то зовут axf) в память уже инициализированого чипа.
4. Ставит точку стартка на main приложения.

Как писать приложение на карту зависит от прелоадера, может быть файл на файловой системе, может "прилипится" к прелоадеру, да хоть по езернету загрузиться.

Хм. Могли бы хотя бы сделать полной отладкой вместе с BootRom. А то так получается скрипт хз что делает и какими-то путями приводит к main.
А вот интересно, ведь прелоадер имеет тоже свой main или я не прав? Сам прелоадер пишется вместе с основной прогой или отдельно? Вообще исходя из мануала как сделать "BareMetal" приложение я так и не понял что и куда там зашивается. А учитывая что не написано "вытащите флешку, залейте на нее что-нибудь и воткните обратно" становится еще менее понятно. Более того в нескольких примерах была обычная эмуляция без работы реальной железки. Прям тайна какая-то.


Цитата(VBKesha @ Jul 4 2016, 17:23) *
PS. В Altera'вских примерах нашёл пример MPL прелоадер, если оттуда вырезать загрузку с флешек, и поддержку фата(чем я собираюсь на днях заняться), то как раз получится каркас Baremetal приложения работающего без загрузчика(само по себе загрузчик), которое можно будет отлаживать без танцев с бубном но с ограничением в 64Килобайта на приложение.

64кб связано с размером OCRAM? То есть проц просто загрузит в нее приложение, оставит в ней место для кучи и стека и будет выполянть? Если он выполняет приложение из OCRAM тогда я не понял - если код и RO data приложения будет весить близко к 64кб, то где он возьмет место для стека и кучи?

Отпишитесь по результатам как у вас получилось чего. А то жалко получается - FPGA легко программируется, вообще без проблем, а тут "Не въедешь" © =)

Спасибо

ps. К сожалению я чувствую глубокий провал по знаниям в область процессора (именно устройства таких софтверных 1ГГц+), выполнения кода из RAM (хотя в STM32 это делается очень просто и там мне все понятно), работа кешей (вроде понятно что и для чего, но каким образом идет их работа и откуда проц знает есть там нужная ему инфа или нет - не понятно) ну и еще местами. Все до Архитектуры компьютера от Харрис добраться не могу..
Go to the top of the page
 
+Quote Post
VBKesha
сообщение Jul 5 2016, 08:34
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 10-01-07
Из: Брянск
Пользователь №: 24 263



Цитата(RadiatoR @ Jul 5 2016, 08:48) *
Но ведь с компа нельзя будет загрузить на флешку что либо без поднятия файловой системы. Хотя может можно это через цпец софт сделать...

В комплекте софта для этого чипа идёт утилита alt-boot-disk-util.exe которая умеет писать прелоадер, но раздел всё равно должен быть уже создан какой нибудь прогой.

Цитата(RadiatoR @ Jul 5 2016, 08:48) *
Хм. Могли бы хотя бы сделать полной отладкой вместе с BootRom. А то так получается скрипт хз что делает и какими-то путями приводит к main.
А вот интересно, ведь прелоадер имеет тоже свой main или я не прав? Сам прелоадер пишется вместе с основной прогой или отдельно? Вообще исходя из мануала как сделать "BareMetal" приложение я так и не понял что и куда там зашивается. А учитывая что не написано "вытащите флешку, залейте на нее что-нибудь и воткните обратно" становится еще менее понятно. Более того в нескольких примерах была обычная эмуляция без работы реальной железки. Прям тайна какая-то.

Да в принципе дебаг скрипт вполне себе текстовый файл просто с набором команд дебагера. Имеет ли прелоадер main зависит от самого прелоадера, MPL имееет, а тот что идёт с U-Boot вроде бы нет. Пишется он обычно без проги и потом уже загружает её. Про флешку не написали потому что если уйти от DE0-Nano-SoC то чип может грузится ещё и из QSPI/NAND/FPGA а там обычно файловых систем нет, и прелоадер может брать прогу по каким либо адресам. Вообще это проц серии A их использование обычно подразумевает использование операционки а не чистый BareMetal вот поэтому и столько проблем.


Цитата(RadiatoR @ Jul 5 2016, 08:48) *
64кб связано с размером OCRAM? То есть проц просто загрузит в нее приложение, оставит в ней место для кучи и стека и будет выполянть? Если он выполняет приложение из OCRAM тогда я не понял - если код и RO data приложения будет весить близко к 64кб, то где он возьмет место для стека и кучи?

По сути да BootROM загрузит прогу и стартнаёт её, вот поэтому по манулам обычно всё разбивают на этап BootROM->Preloader->Soft. Прелоадер обычно инициализирует DDR, и уже в неё может закинуть основную программу и стартануть выполнение чтобы на всё хватало.

Цитата(RadiatoR @ Jul 5 2016, 08:48) *
ps. К сожалению я чувствую глубокий провал по знаниям в область процессора (именно устройства таких софтверных 1ГГц+), выполнения кода из RAM (хотя в STM32 это делается очень просто и там мне все понятно), работа кешей (вроде понятно что и для чего, но каким образом идет их работа и откуда проц знает есть там нужная ему инфа или нет - не понятно) ну и еще местами. Все до Архитектуры компьютера от Харрис добраться не могу..

Тут выполнить прогу из RAM тоже не проблема, грузишь дебагером прогу в RAM и выполняешь, основная проблема(для меня), это инициалировать процессор, там куча заморочек что проще в итоге взять готовый инициализатор и использовать чем пытаться это самому сделать.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- alexPec   Cyclone V два ядра в baremetal   Feb 2 2016, 19:15
- - Zlodeinik   Цитата(alexPec @ Feb 2 2016, 19:15) Всем ...   Mar 10 2016, 11:00
- - ЯadiatoR   Подниму тему - тоже интересует данные вопрос. Есть...   May 22 2016, 18:55
|- - VBKesha   Цитата(ЯadiatoR @ May 22 2016, 21:55) Под...   May 31 2016, 10:15
|- - RadiatoR   Цитата(VBKesha @ May 31 2016, 13:15) Вчер...   Jul 1 2016, 17:20
- - VBKesha   Адрес который указывает с какого места стартовать ...   Jun 1 2016, 12:16
- - vadimuzzz   Что потребуется кроме указанных регистров: в скри...   Jun 5 2016, 02:38
- - RadiatoR   Кстати а куда в случае bare metal приложения залив...   Jul 2 2016, 19:26
|- - vadimuzzz   Цитата(RadiatoR @ Jul 3 2016, 01:26) Кст...   Jul 3 2016, 02:39
- - RadiatoR   Хочется именно в boot ROM, ибо с осями я никогда н...   Jul 3 2016, 08:21
|- - vadimuzzz   Цитата(RadiatoR @ Jul 3 2016, 14:21) Хоч...   Jul 3 2016, 14:32
|- - vadimuzzz   Программируется флеш, отладка идет из ОЗУ. Прошивк...   Jul 4 2016, 00:31
|- - RadiatoR   Цитата(VBKesha @ Jul 5 2016, 11:34) Тут в...   Jul 5 2016, 13:06
- - sonycman   А альтеровской HWLib кто нибудь пользуется? Это ве...   Jul 26 2016, 13:25
- - sonycman   И ещё вопрос возник - применительно к процессорной...   Jul 26 2016, 22:37
|- - vadimuzzz   ЦитатаА альтеровской HWLib кто нибудь пользуется? ...   Jul 27 2016, 03:03
|- - sonycman   Цитата(vadimuzzz @ Jul 27 2016, 07:03) я ...   Jul 27 2016, 09:38
|- - vadimuzzz   Цитата(sonycman @ Jul 27 2016, 15:38) Час...   Jul 27 2016, 09:47
|- - sonycman   Цитата(vadimuzzz @ Jul 27 2016, 13:47) На...   Jul 27 2016, 10:51
|- - Stewart Little   Цитата(sonycman @ Jul 27 2016, 13:51) А д...   Jul 27 2016, 12:44
|- - sonycman   Цитата(Stewart Little @ Jul 27 2016, 16:4...   Jul 27 2016, 14:47
|- - VBKesha   Цитата(sonycman @ Jul 27 2016, 17:47) Инт...   Aug 1 2016, 13:16
- - sonycman   VBKesha Спасибо за помощь! Да, в файлах MPL е...   Aug 2 2016, 10:44
- - VBKesha   Цитата(sonycman @ Aug 2 2016, 13:44) Да, ...   Aug 2 2016, 16:03
- - sonycman   Цитата(VBKesha @ Aug 2 2016, 20:03) Вот т...   Aug 2 2016, 16:30


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 02:33
Рейтинг@Mail.ru


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