Перейти к содержанию
    

Что делать после получения директории handoff

Имею KIT для CyclonV.

С процессором ARM раньше не работал ни когда.

Работаю с Quartus 16.1

Со стороны HPS на вывод GPIO41 припаян светодиод.

Я хочу чтобы программа исполняемая процессором мигала светодиодом.

Для этого сделал следующее.

В Qsys создал компонент Hard Processor System.

В настройках HPS отключил всё кроме DDR3(её нельзя отключить).

На закладке "Peripherals_Pins" кликнул на вывод GPIO41.

GPIO41 стал отображаться жирным шрифтом.

Сгенерировал Qsys систему, прикрутил ее в свой модуль верхнего уровня.

Откомпилировал проект.

На этапе компиляции Assemblies создалась директория hps_isw_handoff.

На сколько я понимаю эта директория содержит описание процессорной системы.

 

Я знаю, что с помощью BSP Editor на основе директории hps_isw_handoff

можно сгенерировать файлы загрузчика, затем откомпилировать их и получить Preloader в виде bin файла.

 

А дальше не знаю что делать.

На сколько я понимаю Preloader всего лишь настроит процессорную систему,

загрузит содержимое флэш памяти в DDR и передаст управление.

У меня сейчас следующие вопросы:

1. Откуда процессор узнает, из какого носителя надо брать Preloader?

2. Как записать Preloader bin файл на носитель, с которой его заберет процессор?

3. Как создать загрузчик следующего уровня, тот самый, который в DDR ляжет?

4. Откуда Preloader узнает из какого места надо тянуть следующий загрузчик?

 

Если кто-то может помочь советом или указявкой где все это искать буду очень благодарен.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какая у вас плата с циклоном?

 

По поводу загрузки "голого" приложения (Bare Metal) смогу подсказать.

 

В настройках HPS модуля не забудьте включить SD/MMC контроллер (для того, чтобы загрузиться с SD карты памяти).

Также включите UART0, для вывода отладочной информации загрузчиками или своим приложением.

 

По вашим вопросам:

1. Начальной загрузкой занимается первичный загрузчик, который находится в BootROM. Выбор устройства задаётся пинами BSEL (BOOTSEL), на отладочных платах для этого обычно ставят dip переключатель или жёстко распаивают режим загрузки - с карты памяти, например.

 

2. Из консоли SoC EDS Command Shell, например, для карты памяти - командой "alt-boot-disk-util -a write -p mpl_C5_s-mkpimage.bin -d k", где mpl_C5_s-mkpimage.bin - файл загрузчика и буква k - буква диска (кардридер с картой памяти).

 

3. В DDR ложится уже либо большой загрузчик - UBOOT для линукса, либо своё приложение baremetal.

В первом случае не подскажу - пока не пробовал, а во втором без проблем - ниже.

 

4. Это задаётся настройками перед компиляцией прелоадера.

 

После того, как Квартус сгенерировал папку hps_isw_handoff, в консоли SoC EDS Command Shell запустите редактор командой bsp-editor.

В нём выбираете в меню New HPS BSP и указываете путь до файла hps.xml внутри hps_isw_handoff.

Ставите нужные настройки и генерируете BSP.

 

Далее надо собрать прелоадер.

Для MPL загрузчика - исходники находятся в папке examples дистрибутива SoC EDS под именем Altera-SoCFPGA-HardwareLib-MPL.tar.gz

Импортируйте его в DS-5, настройте и скомпилируйте.

Он может также загружать и FPGA, что очень удобно - не надо с этим возиться самому.

 

Вот страничка Bare Metal User Guide с полезной информацией.

 

В моём случае получается так: на карте памяти в формате FAT лежат файлы приложения и прошивки для FPGA.

MPL загрузчик грузит оба файла, конфигурирует FPGA и передаёт управление моему приложению.

 

ЗЫ: карту памяти нужно несколько хитро отформатировать - на ней должно быть два раздела.

Первый - это обычный FAT, а вот маленький второй - кастомный с типом раздела 0xA2, в котором лежит прелоадер.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня KIT: DK-DEV-5CSXC6N

https://www.altera.com/products/boards_and_...lone-v-soc.html

 

Заказчик хочет тестировать AriaV на входном контроле.

KIT на AriaV приедет только через 12 недель. Разбираюсь пока на ките CyclonV.

 

В итоге мне нужно будет прийти к тому, что у вас.

Чтобы процессор заливал зашивки в FPGA.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Видео сделано для среды версии 14.1

В видео ведущий редактирует файл config.mk

При этом он меняет запись

HANDOFF_BASE := $(SOCEDS_DEST_ROOT)\examples\hardware\cv_soc_devkit_ghrd

на вот такую

HANDOFF_BASE := С:\demo\cv_soc_devkit_ghrd

 

Остальные записи ссылаются на $(HANDOFF_BASE)\.

 

У меня среда версии 16.1

И в моем файле config.mk нет такой записи.

Есть только такая

SOCEDS_DEST_ROOT ?= $(SOCEDS_ROOT)

 

 

# Must be set to either SDMMC, SDMMC_FAT, QSPI, or NAND

BOOT_SOURCE := QSPI

 

# Must be set to either C5 (Cyclone5), A5 (Arria5), or A10 (Arria10)

DEVICE := C5

 

# Set this to have MPL print status to serial out, or 0 for no status

PRINTF_UART := 1

 

# Must be either ARM or GNU

COMPILER := GNU

 

# Enable this to indicate that MPL should load the FPGA

LOAD_FPGA := 1

 

# Enable the MPL to boot the HPS device from the FPGA

BOOT_FROM_FPGA := 0

 

SOCEDS_DEST_ROOT ?= $(SOCEDS_ROOT)

 

 

Что мне сделать, чтобы пример из видео заработал?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И еще, зачем они вызывают BSP Editor и генерируют BSP?

В результате создается поддиректория <Директория проекта>\software\spl_bsp

Но они дальше не пользуются содержимым поддиректории \software\spl_bsp

Они работают только с Altera-SoCFPGA-HardwareLib-MPL.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Видео сделано для среды версии 14.1

В видео ведущий редактирует файл config.mk

При этом он меняет запись

HANDOFF_BASE := $(SOCEDS_DEST_ROOT)\examples\hardware\cv_soc_devkit_ghrd

на вот такую

HANDOFF_BASE := С:\demo\cv_soc_devkit_ghrd

 

Что мне сделать, чтобы пример из видео заработал?

HANDOFF_BASE задаётся в файле Makefile, который лежит в одной папке с config.mk.

Эта переменная должна указывать на директорию проекта с папкой hps_isw_handoff.

 

А в config.mk задаются другие важные параметры загрузчика - выставьте их правильно.

И еще, зачем они вызывают BSP Editor и генерируют BSP?

В результате создается поддиректория <Директория проекта>\software\spl_bsp

Но они дальше не пользуются содержимым поддиректории \software\spl_bsp

Они работают только с Altera-SoCFPGA-HardwareLib-MPL.

Затем, что файлы BSP непосредственно используются MPL при его компиляции, на них указывает другая переменная из Makefile: HANDOFF_DIR ?= $(HANDOFF_BASE)/software/spl_bsp/generated

 

Любому загрузчику необходима информация о сгенерированной системе, чтобы правильно её проинициализировать.

Эти данные предоставляются с помощью BSP-Editor.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что мне сделать, чтобы пример из видео заработал?

Тут придётся поредактировать.

 

И еще, зачем они вызывают BSP Editor и генерируют BSP?

В результате создается поддиректория <Директория проекта>\software\spl_bsp

Но они дальше не пользуются содержимым поддиректории \software\spl_bsp

Они работают только с Altera-SoCFPGA-HardwareLib-MPL.

Я тоже ковырял эту тему, в конце зафиксировал результат, посмотрите, может быть вам что-то пригодится. Больше этого не скажу, не стал дальше копать SoC CV.

 

Проект собирается (только пути к тулчейну и HWLib надо откорректировать). Я его загружал по JTAG, он работает, в т.ч. печатает диагностические сообщения в консоль.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Наконец-то до редактировал до того, чтобы пример заработал.

 

И так в дирекории Altera-SoCFPGA-HardwareLib-MPL есть файлы:

mpl_C5_q-mkpimage.bin это Preloader с заголовком.

mpl_test_C5_whdr.bin это приложение которое мигает светодиодами.

 

Заметил, что при выполнении команды make

обновляется только файл прелодера mpl_C5_q-mkpimage.bin,

а файл приложения mpl_test_C5_whdr.bin остается неизменным.

 

Теперь у меня следующий вопрос.

Как и с помощью чего мне увидеть код приложения mpl_test_C5_whdr

где его поменять и как перекомпилировать, чтобы получить свой mpl_test_C5_whdr ?

 

Подозреваю, что с помощью DS-5, но какой последовательностью действий?

Мне нужно как-то открыть проект из директории Altera-SoCFPGA-HardwareLib-MPL

найти код приложения mpl_test_C5_whdr и как-то его перекомпилировать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Создавайте новый проект, и делайте в нем, что хотите.

Выбирайте новый проект для циклона и baremetal приложения.

 

Примеры есть на сайте Альтеры в разделе Design Examples.

 

Тут, кстати, очень помогает отладка по JTAG, которая есть только в платной версии DS-5.

В закромах она есть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В той же папке с примерами в SoC EDS (в моём случае c:\altera\16.0\embedded\examples\software\), где лежит проект MPL, рядом лежит совсем простой проект Altera-SoCFPGA-HelloWorld-Baremetal.

Он просто выводит текст в UART.

 

Попробуйте его собрать, по JTAG загрузить в железо и запустить.

 

В случае со светодиодом надо ещё предварительно настроить нужный порт GPIO.

Пример для двух пинов - один вход с кнопкой, второй - выход со светодиодом (HardwareLib):

    // Setup GPIOs
    // Reset GPIO module
    alt_gpio_init();
    ALT_GPIO_CONFIG_RECORD_t gpio_init_pins[] =
    {
        // HPS_LED
        { ALT_GPIO_1BIT_53, ALT_GPIO_PIN_OUTPUT, ALT_GPIO_PIN_LEVEL_TRIG_INT, ALT_GPIO_PIN_ACTIVE_LOW, ALT_GPIO_PIN_NODEBOUNCE, ALT_GPIO_PIN_DATAZERO },
        // HPS_KEY
        { ALT_GPIO_1BIT_54, ALT_GPIO_PIN_INPUT, ALT_GPIO_PIN_LEVEL_TRIG_INT, ALT_GPIO_PIN_ACTIVE_LOW, ALT_GPIO_PIN_DEBOUNCE, ALT_GPIO_PIN_DATAZERO }
    };
    alt_gpio_group_config(gpio_init_pins, ARRAY_COUNT(gpio_init_pins));

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо <Sonycman> только что увидел твой ответ, буду пробовать.

 

А пока наткнулся вот на что.

 

Смотрю данное видео в котором ведущий создает Bare Metal приложение.

https://www.youtube.com/watch?v=GHuM2mBlLxc

 

В среде eclipse он кликнул пункт меню File->New->C_Project

А в диалоговом окне "C Project" сделал следующий выбор.

Project Type: Bare Metal Executable ;;НО у меня нет такого варианта!!!

ToolChains: DS-5 GCC

 

У меня есть только такой вариант.

Project Type: Executable

А в ToolChains доступны следующие варианты:

ARM Compiler 5 (DS-5 built-in)

ARM Compiler 6 (DS-5 built-in)

Cygwin GCC

GCC 4.x [arm-linux-gnueabihf](DS-5 built-in)

MinGW GCC

 

Какой из них выбрать?

Чем они отличаются?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вероятнее всего первые три варианта и есть версии компиляторов под чистое железо.

ARM - это фирменный коммерческий компилятор, а GCC - бесплатный "народный".

Выбирайте между ними то, с чем привычнее работать.

 

Точнее смогу подсказать только вечером, когда с работы приду.

 

Четвёртый вариант - это линуксовый тулчейн, вам он пока что не нужен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

совсем простой проект Altera-SoCFPGA-HelloWorld-Baremetal.

Он просто выводит текст в UART.

 

Попробуйте его собрать, по JTAG загрузить в железо и запустить

 

Не получается загрузить.

То ли я что-то не понимаю, то ли у меня среда не рабочая.

Скачивал я SoC EDS где положено с официального сайта. Лицензия тоже имеется.

 

Импортирую проект Altera-SoCFPGA-HelloWorld-Baremetal из архива в свое рабочее пространство.

Компилирую Project->Build Project

Дальше хочу залить и выполнить.

Выбираю Project->Debug as

Выбираю пункт DS-5 Debugger, выбираю мою ПЛИС, включаю KIT.

Далее в одном из выпадающих списков выбираю USB-Blaster и жму кнопку "Browse"

Должно появится окошко, в котором я должен выбрать свой USB Blaster.

Окошко-то появляется, но оно пустое, и не просто пустое а с сообщением о том что не удалось запустить обозреватель и советует смотреть некий Error log.

 

Я не понимаю, это поведение связано с тем что у меня со средой что-то не так?

Или все дело в настройках проекта, которые тоже надо как-то настраивать? А как?

 

Ну должен же быть простой алгоритм действий, чтобы с чистого листа создать и запустить программу "Hello World".

Пожалуйста помогите преодолеть этот тупик.

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Импортирую проект Altera-SoCFPGA-HelloWorld-Baremetal из архива в свое рабочее пространство.

Компилирую Project->Build Project

Дальше хочу залить и выполнить.

Выбираю Project->Debug as

Выбираю пункт DS-5 Debugger, выбираю мою ПЛИС, включаю KIT.

Далее в одном из выпадающих списков выбираю USB-Blaster и жму кнопку "Browse"

Должно появится окошко, в котором я должен выбрать свой USB Blaster.

Окошко-то появляется, но оно пустое, и не просто пустое а с сообщением о том что не удалось запустить обозреватель и советует смотреть некий Error log.

 

Я не понимаю, это поведение связано с тем что у меня со средой что-то не так?

Или все дело в настройках проекта, которые тоже надо как-то настраивать? А как?

 

Ну должен же быть простой алгоритм действий, чтобы с чистого листа создать и запустить программу "Hello World".

Пожалуйста помогите преодолеть этот тупик.

Работаете под Windows, насколько я понимаю?

 

Запускаете DS-5 напрямую? Через иконку Eclipse for DS-5?

 

Это неправильно.

Его надо запускать из под консоли SoC EDS Command Shell.

В ней набираете eclipse - запустится DS-5.

 

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

 

Попробуйте :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...