nmurzin 0 4 мая, 2017 Опубликовано 4 мая, 2017 · Жалоба Имею 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 узнает из какого места надо тянуть следующий загрузчик? Если кто-то может помочь советом или указявкой где все это искать буду очень благодарен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 4 мая, 2017 Опубликовано 4 мая, 2017 · Жалоба Какая у вас плата с циклоном? По поводу загрузки "голого" приложения (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, в котором лежит прелоадер. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nmurzin 0 4 мая, 2017 Опубликовано 4 мая, 2017 · Жалоба У меня KIT: DK-DEV-5CSXC6N https://www.altera.com/products/boards_and_...lone-v-soc.html Заказчик хочет тестировать AriaV на входном контроле. KIT на AriaV приедет только через 12 недель. Разбираюсь пока на ките CyclonV. В итоге мне нужно будет прийти к тому, что у вас. Чтобы процессор заливал зашивки в FPGA. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 34 5 мая, 2017 Опубликовано 5 мая, 2017 · Жалоба Видео: как собрать и загрузить MPL Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nmurzin 0 5 мая, 2017 Опубликовано 5 мая, 2017 · Жалоба Видео сделано для среды версии 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) Что мне сделать, чтобы пример из видео заработал? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nmurzin 0 5 мая, 2017 Опубликовано 5 мая, 2017 · Жалоба И еще, зачем они вызывают BSP Editor и генерируют BSP? В результате создается поддиректория <Директория проекта>\software\spl_bsp Но они дальше не пользуются содержимым поддиректории \software\spl_bsp Они работают только с Altera-SoCFPGA-HardwareLib-MPL. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 5 мая, 2017 Опубликовано 5 мая, 2017 · Жалоба Видео сделано для среды версии 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 34 6 мая, 2017 Опубликовано 6 мая, 2017 · Жалоба Что мне сделать, чтобы пример из видео заработал? Тут придётся поредактировать. И еще, зачем они вызывают BSP Editor и генерируют BSP? В результате создается поддиректория <Директория проекта>\software\spl_bsp Но они дальше не пользуются содержимым поддиректории \software\spl_bsp Они работают только с Altera-SoCFPGA-HardwareLib-MPL. Я тоже ковырял эту тему, в конце зафиксировал результат, посмотрите, может быть вам что-то пригодится. Больше этого не скажу, не стал дальше копать SoC CV. Проект собирается (только пути к тулчейну и HWLib надо откорректировать). Я его загружал по JTAG, он работает, в т.ч. печатает диагностические сообщения в консоль. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nmurzin 0 10 мая, 2017 Опубликовано 10 мая, 2017 · Жалоба Наконец-то до редактировал до того, чтобы пример заработал. И так в дирекории 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 и как-то его перекомпилировать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 10 мая, 2017 Опубликовано 10 мая, 2017 · Жалоба Создавайте новый проект, и делайте в нем, что хотите. Выбирайте новый проект для циклона и baremetal приложения. Примеры есть на сайте Альтеры в разделе Design Examples. Тут, кстати, очень помогает отладка по JTAG, которая есть только в платной версии DS-5. В закромах она есть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 10 мая, 2017 Опубликовано 10 мая, 2017 · Жалоба В той же папке с примерами в 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)); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nmurzin 0 11 мая, 2017 Опубликовано 11 мая, 2017 · Жалоба Спасибо <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 Какой из них выбрать? Чем они отличаются? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 11 мая, 2017 Опубликовано 11 мая, 2017 · Жалоба Вероятнее всего первые три варианта и есть версии компиляторов под чистое железо. ARM - это фирменный коммерческий компилятор, а GCC - бесплатный "народный". Выбирайте между ними то, с чем привычнее работать. Точнее смогу подсказать только вечером, когда с работы приду. Четвёртый вариант - это линуксовый тулчейн, вам он пока что не нужен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nmurzin 0 11 мая, 2017 Опубликовано 11 мая, 2017 · Жалоба совсем простой проект 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". Пожалуйста помогите преодолеть этот тупик. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 11 мая, 2017 Опубликовано 11 мая, 2017 · Жалоба Импортирую проект 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. Консоль активирует системные переменные окружения, без которых среда правильно работать не будет. Попробуйте :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться