|
Cyclone V два ядра в baremetal |
|
|
|
 |
Ответов
|
Jul 4 2016, 14:23
|
Участник

Группа: Участник
Сообщений: 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.pdfPS. В Altera'вских примерах нашёл пример MPL прелоадер, если оттуда вырезать загрузку с флешек, и поддержку фата(чем я собираюсь на днях заняться), то как раз получится каркас Baremetal приложения работающего без загрузчика(само по себе загрузчик), которое можно будет отлаживать без танцев с бубном но с ограничением в 64Килобайта на приложение.
|
|
|
|
|
Jul 5 2016, 05:48
|

Местный
  
Группа: Свой
Сообщений: 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 это делается очень просто и там мне все понятно), работа кешей (вроде понятно что и для чего, но каким образом идет их работа и откуда проц знает есть там нужная ему инфа или нет - не понятно) ну и еще местами. Все до Архитектуры компьютера от Харрис добраться не могу..
|
|
|
|
|
Jul 5 2016, 08:34
|
Участник

Группа: Участник
Сообщений: 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 и выполняешь, основная проблема(для меня), это инициалировать процессор, там куча заморочек что проще в итоге взять готовый инициализатор и использовать чем пытаться это самому сделать.
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|