Pull to refresh

Comments 19

Помнится я тоже промучался с BareMetal. В итоге перешел решил что удобней использовать ос например QNX.

Сразу после включения выполняется код расположенный прямо на Flash памяти Cortex-A9 называемый BootRom. Вы не можете изменить его или даже посмотреть его содержание.

Вроде бы его содержимое можно прочитать по адресу 0xfffd0000 (https://www.altera.com/hps/en_us/cyclone-v/hps.html#topic/sfo1410068186638.html)
Да, действительно, содержание BootRom находится по этому адресу. Но я имел ввиду что вы не найдете ни ассемблерный код, ни, конечно же, С код BootRom. Можно только в дебаггере посмотреть машинный код, но какой в этом смысл?
«Почему FPGA такие сложные?» — потому что чтобы поморгать светодиодом придётся потратить пол-часа на чтение документации по процу и IDE.
«Почему Arduino такой популярный?» — потому что чтобы поморгать светодиодом достаточно ткнуть «Run» в IDE (т.к. код уже есть написан, а вся механика рабоыт с железом уже реализована в стандартных либах и достаточно одной команды для управления пином.)
Да ну нет же. Здесь человек рассказывает о серьезной связке ПЛИС+процессор, программирование софтового микроконтроллера и т.д. Это и правда не просто. А мигать светодиодом на ПЛИС — вполне просто. Проект marsohod.org — там куча примеров для простых камней. Не слишком сложнее ардуин. Все-таки стоит ознакомиться с предметом, а потом ругаться)) В целом, эта самая моргалка диодом — ну 5 строк, максимум. Не так уж много и сложно. Даже как-то обидно стало за плисины)
Согласен — FPGA — это сложно. Но статья преподноситься, будто «Легко».
Отсюда и сравнение — простецкая ардуинка, у которой 90% «железных» функций сокрыты за простыми командами и иниализация (почти?)всего железа уже реализована в стандартной библиотеке.

В случае с FPGA — придётся всё выставлять ручками (Через редактор или сразу в коде).
Да и сам fpga — это не готовый проц, а набор логики, которая может работать как угодно. Отдельные модели позволяют манипулировать связями своих транзисторов, что позволяет чипу прикинуться обычным процом (Причем любым. Максимум — скорость работы будет отличаться)
Зачем сравнивать платформу(Arduino) и технологию FPGA?
Сравните голый ATMega и FPGA. Или Cyclone V SoC+Linux и Arduino.
И в этой статье идёт речь вообще о SoC.
Не стоит забывать про места применения. Когда понадобится запустить какой нибудь экран с LVDS на с клоком даже в 50 мегагерц, Arduino не поможет никак. А если надо моргать светодиодами то ставить FPGA смысла нет.

Да и к тому же это SoC а не FPGA…
Ардуино — попсовый вариант реализации микроконтроллера и имеет много недостатков в плане возможностей и производительности, поэтому нет смысла сравнивать с ПЛИС. По своему опыту: несколько лет назад меня пригласили в проект покодить MSP-430, так я с нуля изучал его неделю. На ПЛИС же я потратил гораздо меньше времени.

Ну, и в который раз — ПЛИС и микроконтроллеры имеют зачастую совершенно разные назначения, поэтому их сравнивать равносильно сравнению электропилы и перфоратора

В FPGA мигание светодиодом делается за 5 минут, причем вообще без программирования и знания Verilog/VHDL. Причем нужно знать только название пина, на котором сидит светодиод и пина входа для клока.

Для того, чтобы поморгать светодиодом нужен резистор килоома на полтора, конденсатор в микрофарад 300 и КТ315Б:
image

И светодиод, конечно. Я уж не упоминаю в суе К155ЛА3, с помощью которой можно построить эмулятор циклона 5, а потом на нем улететь в костмас. Но это, если конечно ракета позволит несколько сотен тонн ЛА3 вывезти с земли, а солнечные панели обеспечат питалово соизмеримо кол-ву ЛА3.
Не критики ради, а удобства для: можно быстро сделать скриншот окна, если запустить «Ножницы» (Snipping Tool), и потом выбрать New->Windows Snip. Получается аккуратный скриншот окна, без необходимости обведения рамкой.

А по мне так наоборот все слишком сложно описано. Очень много привязки проприетарному софту и предопределенному железу. На примере открытого RISC процессора необходимо только расположить прошивку на нулевом адресе DDR и сделать reset. Процессор сам грузится с нулевого адреса по умолчанию. Все установки делаются опять через прошивку процессора.
Также непонятно зачем разбираться с памятью, она же в fpga bitimage определена, а не через процессор.

Статья класс, недавно в коллективе хотели исать такую же, только все делая с нуля не используя GUI для создания стартового проекта, но Вы опередили! Столкнулись с тем же вопросом о BSEL, потому что в CycloneV DevKit они хотя бы есть, но плата на порядок дороже. Пока не находили с ходу информацию о «припаять» для изменения конфигурации не находили, не подскажите ли этот вопрос подробнее?
Интересны подробности содержимого spl, использование Neon и второго ядра, превратится ли это в цикл статей по данной тематике?
Честно говоря я ждал такого комментария, и поскольку он появился, я напишу еще пару статей о работе с этой SoC. Припаять переключатель можно, но основная трудность в двух вещах: во первых, на плате помимо переключателя отсутствуют еще некоторые резисторы, а некоторые припаяны так, чтоб загрузка была только с SD; во вторых, для того что бы найти все эти резисторы на плате не достаточно иметь полную принципиальную схему (по ней кстати не слишком удобно искать элементы), без документа о расположении элементов на плате придется их искать визуально, это очень долго и трудно. На днях напишу в Terasic чтоб дали этот файл расположения элементов, они почему-то не предоставляют его на своем сайте, может на почту хотя бы вышлют.
Коллега проделал такую же работу как и Вы, только с GCC вместо ARM compiler, выявили ряд косяков, но когда решили попробовать перейти на ARM — вышло, что он очень строгий и ругался на библиотеки, поэтому вернулись на gcc.
Еще такой вопрос: ARM DS-5 требует нахождение всех библиотек в рабочем пространстве проекта, иначе начинает ругаться, встречалась ли Вам такая проблема? Если да, то как решили этот вопрос?
Не считаю это за проблему, просто скопировал все исходники из hwlib (стандартные библиотеки для всей переферии HPS) в папку проекта и все. Ведь при компиляции собственно компилируются только используемые в коде исходники, а остальные не задействованы. Мне ARM compiler больше понравился чем GCC из-за относительно простого по сравнению с linker script синтаксисом scatter файла. linker script у GCC вообще какой-то через чур сложный показался, а размещение проги в памяти играет очень важную роль в Baremetal. Каким образом так получилось, что ARM compiller ругается, а GCC нет? Что значит строже?
Это скорее не проблема, а лишние затраты времени и места. Да, библиотеки не весят много, но когда проект за проектом вы копируете набор файлов — согласитесь, это странно. А если еще в ходе разработки пользователь начинает изменять параметры компиляции (например, ставит флаг оптимизации), то библиотеки заново перекомпилируются и это дополнительное время. Мы еще до конца не разбирались, но вроде бы можно просто руками скомпилировать и затем создать -.a файлы, с названием типа lib_bridges.a, далее в настройках линковщика добавить их — и готово, копировать папку ненужно.
По поводу строгости — думаю, логично, что компилятор созданный под конкретную платформу будет оптимизировать код лучше, чем компилятор, созданный без учета платформы. У нас была одна проблема — в одном месте gcc выдавал предупреждение, а arm compiler ошибку. Правда, сейчас вот открыл DS-5 и не смог с ходу воспроизвести эту ошибку, но как получится — Вам расскажу.)
arm compiler вроде платный?
Sign up to leave a comment.

Articles