Подтвердить что ты не робот

Изучение сборки ARM

В течение этого года появятся пара портативных компьютеров с несколькими сенсорными портами стоимостью до 600 евро, которые содержат Tegra2. Они приносят мне хороший повод для изучения языка сборки ARM. Но я понятия не имею, с чего начать со стороны arm.com.

Для первого броска я мог просто подобрать эмулятор с дистрибутивом linux. Но какой эмулятор и дистрибутив будут работать лучше всего на этом? Доступ к файлам хост-системы был бы в порядке, поэтому я мог бы скомпилировать и выполнить бинарные файлы ARM прямо из моего домашнего каталога.

Я бы не хотел тратить много денег на книги, поэтому мне нужны примеры исходного кода сборки и хорошее бесплатное введение в набор инструкций. gcc-компиляторы для компиляции ARM-программ на x86 также были бы хороши, но я мог бы найти их и сам.

4b9b3361

Ответ 1

Получите оценочную версию одного из инструментов инструментального инструмента для рук, который будет включать эмулятор отладчика/программного обеспечения. Если вы готовы потратить несколько сотен долларов, получите правую доску (Keil продает несколько). Вы можете протестировать свой код на плате через интерфейс JTAG и посмотреть, что происходит на реальном оборудовании.

Это должно заставить вас двигаться в правильном направлении

Раскрытие: я работаю для ARM.

Ответ 2

Справочные документы ARM действительно обеспечивают очень хорошее введение в набор инструкций. Это отличное место для начала.

Поскольку вы пишете сборку (и, вероятно, заинтересованы в деталях производительности на низком уровне), вам нужен либо точный симулятор цикла, либо реальное оборудование (или и то, и другое). Помимо аппаратных опций, предложенных David Lively, вы также можете посмотреть Beagle Board.

Что касается компиляторов, то есть инструменты ARM RealView и там GCC. Поддержка новых аппаратных функций может быть несколько более испечена в инструментах ARM.

Ответ 3

Лучший ресурс, который я нашел для изучения языка сборки ARM с нуля, - это учебник: "http://www.coranac.com/tonc/text/asm.htm"

Немного устаревший, но он объясняет основы сборки ARM, а затем вы сможете прочитать официальные руководства по ARM, чтобы увидеть специфику устройства, на которое вы нацеливаете. Например, если вы нацеливаетесь на смартфоны, тогда ARM v7 является очень популярным набором инструкций в эти дни, поэтому вы можете настроить таргетинг и узнать о Thumb-2 и более новых технологиях. Или, если вы нацелены на встроенные микроконтроллеры, которые стоят всего несколько долларов, есть несколько немного разных функций и т.д.

Ответ 4

Начните с qemu для эмулятора, дистрибутивов linux и некоторых плат на рынке и вне его. Перейти к sparkfun.com есть много до $50 досок для обучения ассемблера руки, но не обязательно linux. Вы хотите изучить arm7 или руку сначала, а затем второй. Плакат с эмблемой (при условии, что он не слишком дешево сделан) лучше, чем beagleboard, чтобы сделать beagleboard полезным, вам нужно потратить еще 150 долларов на кабели и USB-накопители. На борту эмблемы потребовалось неделю или две, чтобы добраться до США с момента ее заказа. За эти деньги я предпочитаю openrd board или подключаемый компьютер с marvell sheeva. Или для более старой системы перейдите к embeddedarm.com. если вы ищете ассемблер, вам не нужна система, совместимая с Linux, так что идите на что-то от sparkfun, arm7, как на sam7 или lpc, есть один с последовательным портом на борту уже, но вы должны предоставить мощность. Получите jtag-tiny или три от amontec, отличный инструмент, чтобы просто иметь.

Продвижение игрового мальчика - это хорошее место, чтобы научиться программировать руку, а также большой палец, продвижение visualboy - хороший эмулятор. Я могу показать вам, как сделать серийный кабель и найти аппаратное обеспечение для других целей. Есть Linux. NDS (Nintendo DS) также является хорошей системой, но я бы начал сначала с GBA. Избегайте NDSi.

Отказ от ответственности: у меня нет привязанности от руки, но есть хотя бы одно из всего, что описано выше, плюс несколько советов стеллариса (thumb2 узнайте, что кость-m3 LAST после руки и большого пальца).

Ответ 5

Учитесь с работающими примерами

Я работаю над: https://github.com/cirosantilli/arm-assembly-cheat

Особенности:

  • может быть запущен либо с хоста Linux с пользовательским режимом QEMU без необходимости платы ARM, но и изначально, если у вас есть плата, такая как Raspberry Pi
  • охватывает как ARMv7, так и ARMv8
  • хорошая настройка GDB из коробки, как на хосте, так и на нативном
  • имеет утверждения, которые показывают номер сборочной линии, где вещи не удалось
  • использует стандартную библиотеку C для ввода-вывода, что делает ее теоретически переносимой ОС и позволяет легко повторно использовать лакомства, такие как printf и memcpy