Я всегда смущен, это касается инструментальной привязки ARM. Я всегда вижу, что есть две противоположные стороны: ARM ltd. официальное и сообщество GNU. ARM предоставляет официальные инструменты, в то время как сообщество GNU предоставляет бесплатные гибкие и универсальные решения с открытым исходным кодом. Я хочу начать использовать бесплатное и открытое программное обеспечение GNU для использования в моей работе. Но эта путаница заставляет меня потерять, с чего начать. Какая GNU toolchain поддерживает архитектуры и т. Д. M, A, R профилей? Что выбрать? Я хочу избавиться от «ARM ltd. Way of doimg things». Можете ли вы предоставить официальные ресурсы GNU и ссылки на инструменты, поддерживающие все архитектуры ARM? Какие основные проекты я должен проверить, какую toolchain для загрузки?ARM GNU toolcahins confusion
ответ
Будучи в основном самой популярной архитектурой (для каждого другого процессора, x86 и т. Д. Вы, вероятно, имеете или касаетесь одного или нескольких объектов на основе ARM). Есть много инструментов. Существуют инструменты оплаты от разных поставщиков, рук и keil, который теперь является ARM. Как и другие. И gnu toolchain также поддерживает руку, поэтому существует бесчисленное множество построений этого. На Ubuntu и производных это так же просто, как apt-get для установки инструментальной цепочки. В Launchpad.net есть тот, который вы можете скачать. ранее люди, работающие с кодами, чье имя находится на каком-то порту gnu, имеет бесплатную и поддерживаемую версию toolchain (теперь наставник графики). Есть несколько таких, как yagarto devkitarm и другие, которые люди используют для работы с голыми металлами. И, конечно, с открытым исходным кодом вы можете «просто» построить инструментальную цепочку из источников. На linux это довольно легко, на окнах я не знаю, не сделали это через 10 лет, но не было трудно. Или вы можете просто получить малиновый пи или какой-нибудь другой компьютер для рук или запустить его в симуляторе, таком как qemu, и использовать там родную gnu toolchain.
Есть слишком много вариантов, чтобы предложить один, поэтому я предлагаю вам попробовать несколько. Платежи часто имеют версию eval. Вы получите оплату за поддержку. Если вы идете с gnu, там имеется огромное количество бесплатной поддержки, многие из которых являются родовыми gnu или gnu cross compiler и применяются к руке, а также к mips и другим, увеличивая объем поддержки. В то же время, больше с gnu, существует много старой информации, которая больше не применяется, что может мешать.
A и R являются одинаковыми в основном R - это два полноразмерных ядра в шаге блокировки для обеспечения безопасности (медицинские, автомобильные и т. Д.). Cortex-m - это микроконтроллер большого пальца только с различными размерами расширений большого пальца2 в зависимости. Все ядра от armv4t до настоящего момента поддерживают оригинальный большой палец, который является единственным набором команд общей команды. cortex-ms и несколько новых кортексов. Поддерживают различные уровни расширений большого пальца (ранее не заданные команды большого пальца теперь превращаются в инструкции переменной длины). Полные размеры, так как я называю их ARM, поддерживают полные инструкции с небольшими изменениями (обычно добавлениями) с течением времени. ARMv8 полностью выполнил 64-разрядные инструкции. есть режим совместимости с aarch32, и когда вы переключаетесь на aarch64, это 32-битные инструкции, которые полностью несовместимы с aarch32. Разумеется, вы найдете поддержку инструментов gnu от одного конца до другого, пока вы не получите действительно старую инструментальную цепочку (3.x на сегодняшний день поддерживает большой палец). Aarch64 появился не так давно, но наборы инструкций ARM и большого пальца поддерживаются.
Способ gnu - это сборка источников для цели или семейства, поэтому aarch64 является отдельной инструментальной цепочкой из других наборов команд ARM. Если вы создаете обычные наборы инструкций для рук, он должен поддерживать вариации архитектуры пальца и руки. В зависимости от того, как создаются инструменты gnu (опять-таки gnu), вы можете или не можете получать поддержку с плавающей запятой или поддержкой мягкого поплавка в toolchain, это ваше большее беспокойство, чем коры A, R, M и наборы команд с плавающей запятой для ARM со временем изменились, раньше это было редко, теперь довольно часто найти FPU в чипе.
llvm/clang - еще один вариант, спасибо яблоко и iphones/idevices для созревания этих инструментов. путь llvm состоит в том, чтобы иметь одну сборку, которая поддерживает множество целей: arm, mips, x86 и т. д. Одна из них является основной целью, но установленные инструменты могут использоваться как кросс-компилятор, по крайней мере, компилятор, возможно, не компоновщик (gnu binutils хорошо работает заполнить этот пробел).вы также должны попробовать их, предустановленные базы доступны, и вы можете «просто» строить из источников. Легко apt-got, если вы используете ubuntu или производную.
Я использовал бы GNU ARM Launchpad. Это программная цепочка GNU, но поддерживается ARM (что должно быть хорошо, что я думаю). Он говорит, что поддерживает Cortex M & R, но также поддерживает более старые процессоры, такие как ARM 7 & 9.