Путаница в инструментах ARM GNU

Меня всегда смущает, что речь идет об инструментарии архитектуры ARM. Я всегда вижу две противоположные стороны: ARM ltd. официальный и сообщество GNU. ARM предоставляет официальные инструменты, в то время как сообщество GNU предоставляет бесплатные гибкие и более универсальные решения с открытым исходным кодом. Я хочу начать использовать свободное и открытое программное обеспечение GNU для своей работы. Но из-за этого замешательства я теряю, с чего начать. Какие наборы инструментов GNU поддерживают, какие архитектуры и т. Д. Профили M, A, R? Что выбрать? Я хочу избавиться от "способа, которым занимается компания ARM ltd.". Не могли бы вы предоставить официальные ресурсы GNU и ссылки на инструменты, поддерживающие все архитектуры ARM? Какие основные проекты я должен проверить, какой инструментарий загрузить?


person Karolis Milieška    schedule 03.07.2016    source источник


Ответы (2)


По сути, это самая популярная архитектура (для любого другого процессора, x86 и т. Д. У вас, вероятно, есть или вы касаетесь одной или нескольких вещей на базе ARM). Есть много инструментов. Существуют платные инструменты от различных поставщиков, arm и keil, которые теперь называются ARM. Как и другие. И набор инструментов GNU также поддерживает руку, так что существует бесчисленное количество сборок этого. В Ubuntu и производных версиях это так же просто, как apt-get, чтобы установить набор инструментов. На Launchpad.net есть один, который вы можете скачать. У бывших разработчиков кода, чьи имена указаны на некоторых портах GNU, есть бесплатная и поддерживаемая версия инструментальной цепочки (теперь графика наставника). Есть ряд из них, таких как yagarto devkitarm и другие, которые люди используют для работы с «голым железом». И, конечно же, имея открытый исходный код, вы можете «просто» построить цепочку инструментов из исходников. В Linux это довольно просто, в Windows, я не знаю, не делал этого уже 10 лет, но тогда это было несложно. Или вы можете просто получить Raspberry Pi или другой компьютер ARM или запустить его в симуляторе, таком как qemu, и использовать там родную цепочку инструментов gnu.

Есть слишком много вариантов, чтобы предложить один, поэтому я предлагаю вам попробовать несколько. Платные часто имеют пробную версию. Вы получите платную поддержку. Если вы используете gnu, существует огромное количество бесплатной поддержки, многие из проблем связаны с универсальным кросс-компилятором gnu или gnu и применяются к arm, а также к mips и другим, увеличивая объем поддержки. В то же время, особенно с gnu, есть много старой информации, которая больше не применяется, но которая может мешать.

A и R в основном одинаковы. R - это два полноразмерных ядра с блокировкой для обеспечения безопасности (медицинское, автомобильное и т. Д.). Cortex-M является микроконтроллером для большого пальца только с различным количеством расширений для большого пальца в зависимости от. Все ядра от armv4t до настоящего поддерживают исходный большой палец, который является единственным общим набором команд для руки. cortex-ms и некоторые более новые cortex-As поддерживают различные уровни расширений thumb2 (ранее неопределенные инструкции большого пальца теперь превратились в инструкции переменной длины). Полноразмерные, как я их называю, ARM поддерживают полноразмерные инструкции с небольшими изменениями (обычно добавлением) с течением времени. ARMv8 полностью переработал 64-битные инструкции. есть режим совместимости с aarch32, и когда вы переключаетесь на aarch64, это 32-битные инструкции, которые полностью несовместимы с aarch32. Вы наверняка найдете поддержку инструментов GNU от одного конца до другого, если вы не получите действительно старый набор инструментов (3.x до настоящего момента поддерживает большой палец). Aarch64 появился не так давно, но наборы инструкций ARM и thumb поддерживаются.

Способ gnu состоит в том, чтобы выполнить сборку исходных кодов для цели или семейства, поэтому aarch64 представляет собой отдельную цепочку инструментов от других наборов инструкций ARM. Если вы создаете обычные наборы инструкций для рук, они должны поддерживать различные варианты архитектуры большого пальца и руки. В зависимости от того, как построены инструменты GNU (опять же, путь GNU), вы можете получить или не получить поддержку с плавающей запятой или soft float в цепочке инструментов, это ваша большая проблема, чем cortex A, R, M и наборы инструкций с плавающей запятой для ARM со временем изменились, раньше это было редко, теперь довольно часто можно найти FPU в чипе.

llvm / clang - еще один вариант, спасибо Apple и iphones / idevices за доведение этих инструментов до совершенства. способ llvm - иметь одну сборку, которая поддерживает множество целей arm, mips, x86 и т. д., одна является основной целью, но установленные инструменты могут использоваться как кросс-компилятор, по крайней мере, компилятор, возможно, не компоновщик (gnu binutils хорошо подходит для восполните этот пробел). вы должны попробовать и их, доступны предварительные сборки, и вы можете «просто» собрать их из исходных кодов. Легко apt-got, если вы используете Ubuntu или производную версию.

person old_timer    schedule 03.07.2016

Я бы использовал панель запуска GNU ARM. Это набор инструментов GNU, но поддерживается ARM (что, я думаю, должно быть хорошо). В нем говорится, что он поддерживает Cortex M & R, но также поддерживает более старые процессоры, такие как ARM 7 и 9.

person Realtime Rik    schedule 04.07.2016