Comments 19
Помнится я тоже промучался с BareMetal. В итоге перешел решил что удобней использовать ос например QNX.
Вроде бы его содержимое можно прочитать по адресу 0xfffd0000 (https://www.altera.com/hps/en_us/cyclone-v/hps.html#topic/sfo1410068186638.html)
Сразу после включения выполняется код расположенный прямо на Flash памяти Cortex-A9 называемый BootRom. Вы не можете изменить его или даже посмотреть его содержание.
Вроде бы его содержимое можно прочитать по адресу 0xfffd0000 (https://www.altera.com/hps/en_us/cyclone-v/hps.html#topic/sfo1410068186638.html)
0
«Почему FPGA такие сложные?» — потому что чтобы поморгать светодиодом придётся потратить пол-часа на чтение документации по процу и IDE.
«Почему Arduino такой популярный?» — потому что чтобы поморгать светодиодом достаточно ткнуть «Run» в IDE (т.к. код уже есть написан, а вся механика рабоыт с железом уже реализована в стандартных либах и достаточно одной команды для управления пином.)
«Почему Arduino такой популярный?» — потому что чтобы поморгать светодиодом достаточно ткнуть «Run» в IDE (т.к. код уже есть написан, а вся механика рабоыт с железом уже реализована в стандартных либах и достаточно одной команды для управления пином.)
-7
Да ну нет же. Здесь человек рассказывает о серьезной связке ПЛИС+процессор, программирование софтового микроконтроллера и т.д. Это и правда не просто. А мигать светодиодом на ПЛИС — вполне просто. Проект marsohod.org — там куча примеров для простых камней. Не слишком сложнее ардуин. Все-таки стоит ознакомиться с предметом, а потом ругаться)) В целом, эта самая моргалка диодом — ну 5 строк, максимум. Не так уж много и сложно. Даже как-то обидно стало за плисины)
+3
Согласен — FPGA — это сложно. Но статья преподноситься, будто «Легко».
Отсюда и сравнение — простецкая ардуинка, у которой 90% «железных» функций сокрыты за простыми командами и иниализация (почти?)всего железа уже реализована в стандартной библиотеке.
В случае с FPGA — придётся всё выставлять ручками (Через редактор или сразу в коде).
Да и сам fpga — это не готовый проц, а набор логики, которая может работать как угодно. Отдельные модели позволяют манипулировать связями своих транзисторов, что позволяет чипу прикинуться обычным процом (Причем любым. Максимум — скорость работы будет отличаться)
Отсюда и сравнение — простецкая ардуинка, у которой 90% «железных» функций сокрыты за простыми командами и иниализация (почти?)всего железа уже реализована в стандартной библиотеке.
В случае с FPGA — придётся всё выставлять ручками (Через редактор или сразу в коде).
Да и сам fpga — это не готовый проц, а набор логики, которая может работать как угодно. Отдельные модели позволяют манипулировать связями своих транзисторов, что позволяет чипу прикинуться обычным процом (Причем любым. Максимум — скорость работы будет отличаться)
-2
Не стоит забывать про места применения. Когда понадобится запустить какой нибудь экран с LVDS на с клоком даже в 50 мегагерц, Arduino не поможет никак. А если надо моргать светодиодами то ставить FPGA смысла нет.
Да и к тому же это SoC а не FPGA…
Да и к тому же это SoC а не FPGA…
+2
Ардуино — попсовый вариант реализации микроконтроллера и имеет много недостатков в плане возможностей и производительности, поэтому нет смысла сравнивать с ПЛИС. По своему опыту: несколько лет назад меня пригласили в проект покодить MSP-430, так я с нуля изучал его неделю. На ПЛИС же я потратил гораздо меньше времени.
Ну, и в который раз — ПЛИС и микроконтроллеры имеют зачастую совершенно разные назначения, поэтому их сравнивать равносильно сравнению электропилы и перфоратора
Ну, и в который раз — ПЛИС и микроконтроллеры имеют зачастую совершенно разные назначения, поэтому их сравнивать равносильно сравнению электропилы и перфоратора
+2
В FPGA мигание светодиодом делается за 5 минут, причем вообще без программирования и знания Verilog/VHDL. Причем нужно знать только название пина, на котором сидит светодиод и пина входа для клока.
0
Для того, чтобы поморгать светодиодом нужен резистор килоома на полтора, конденсатор в микрофарад 300 и КТ315Б:
![image](https://habrastorage.org/r/w780q1/getpro/habr/post_images/a69/ccd/7ed/a69ccd7ed73d4ab25015deb84ebd2470.jpg)
![image](https://habrastorage.org/getpro/habr/post_images/a69/ccd/7ed/a69ccd7ed73d4ab25015deb84ebd2470.jpg)
+2
Не критики ради, а удобства для: можно быстро сделать скриншот окна, если запустить «Ножницы» (Snipping Tool), и потом выбрать New->Windows Snip. Получается аккуратный скриншот окна, без необходимости обведения рамкой.
+1
А по мне так наоборот все слишком сложно описано. Очень много привязки проприетарному софту и предопределенному железу. На примере открытого RISC процессора необходимо только расположить прошивку на нулевом адресе DDR и сделать reset. Процессор сам грузится с нулевого адреса по умолчанию. Все установки делаются опять через прошивку процессора.
Также непонятно зачем разбираться с памятью, она же в fpga bitimage определена, а не через процессор.
-1
Статья класс, недавно в коллективе хотели исать такую же, только все делая с нуля не используя GUI для создания стартового проекта, но Вы опередили! Столкнулись с тем же вопросом о BSEL, потому что в CycloneV DevKit они хотя бы есть, но плата на порядок дороже. Пока не находили с ходу информацию о «припаять» для изменения конфигурации не находили, не подскажите ли этот вопрос подробнее?
Интересны подробности содержимого spl, использование Neon и второго ядра, превратится ли это в цикл статей по данной тематике?
Интересны подробности содержимого spl, использование Neon и второго ядра, превратится ли это в цикл статей по данной тематике?
+1
Честно говоря я ждал такого комментария, и поскольку он появился, я напишу еще пару статей о работе с этой SoC. Припаять переключатель можно, но основная трудность в двух вещах: во первых, на плате помимо переключателя отсутствуют еще некоторые резисторы, а некоторые припаяны так, чтоб загрузка была только с SD; во вторых, для того что бы найти все эти резисторы на плате не достаточно иметь полную принципиальную схему (по ней кстати не слишком удобно искать элементы), без документа о расположении элементов на плате придется их искать визуально, это очень долго и трудно. На днях напишу в Terasic чтоб дали этот файл расположения элементов, они почему-то не предоставляют его на своем сайте, может на почту хотя бы вышлют.
+1
Коллега проделал такую же работу как и Вы, только с GCC вместо ARM compiler, выявили ряд косяков, но когда решили попробовать перейти на ARM — вышло, что он очень строгий и ругался на библиотеки, поэтому вернулись на gcc.
Еще такой вопрос: ARM DS-5 требует нахождение всех библиотек в рабочем пространстве проекта, иначе начинает ругаться, встречалась ли Вам такая проблема? Если да, то как решили этот вопрос?
Еще такой вопрос: ARM DS-5 требует нахождение всех библиотек в рабочем пространстве проекта, иначе начинает ругаться, встречалась ли Вам такая проблема? Если да, то как решили этот вопрос?
0
Не считаю это за проблему, просто скопировал все исходники из hwlib (стандартные библиотеки для всей переферии HPS) в папку проекта и все. Ведь при компиляции собственно компилируются только используемые в коде исходники, а остальные не задействованы. Мне ARM compiler больше понравился чем GCC из-за относительно простого по сравнению с linker script синтаксисом scatter файла. linker script у GCC вообще какой-то через чур сложный показался, а размещение проги в памяти играет очень важную роль в Baremetal. Каким образом так получилось, что ARM compiller ругается, а GCC нет? Что значит строже?
0
Это скорее не проблема, а лишние затраты времени и места. Да, библиотеки не весят много, но когда проект за проектом вы копируете набор файлов — согласитесь, это странно. А если еще в ходе разработки пользователь начинает изменять параметры компиляции (например, ставит флаг оптимизации), то библиотеки заново перекомпилируются и это дополнительное время. Мы еще до конца не разбирались, но вроде бы можно просто руками скомпилировать и затем создать -.a файлы, с названием типа lib_bridges.a, далее в настройках линковщика добавить их — и готово, копировать папку ненужно.
По поводу строгости — думаю, логично, что компилятор созданный под конкретную платформу будет оптимизировать код лучше, чем компилятор, созданный без учета платформы. У нас была одна проблема — в одном месте gcc выдавал предупреждение, а arm compiler ошибку. Правда, сейчас вот открыл DS-5 и не смог с ходу воспроизвести эту ошибку, но как получится — Вам расскажу.)
По поводу строгости — думаю, логично, что компилятор созданный под конкретную платформу будет оптимизировать код лучше, чем компилятор, созданный без учета платформы. У нас была одна проблема — в одном месте gcc выдавал предупреждение, а arm compiler ошибку. Правда, сейчас вот открыл DS-5 и не смог с ходу воспроизвести эту ошибку, но как получится — Вам расскажу.)
0
arm compiler вроде платный?
0
Sign up to leave a comment.
Запуск Bare-metal приложения на Cyclone V SoC