GCC AS: новый чистый проект на ассемблере

Итак, вы решили писать программы под кортексы. Первое что вам понадобится, это создать чистый ассемблерный проект
с нуля. Вам нужна база, которую затем можно будет наполнять кодом.

Микроконтроллер создан, а как и в чём написать программу, человечеству так просто не дано. Если вы самостоятельно захотите стартовать на ARM ассемблере, то пожалуй устанете это делать. Более того, не существует описания к этому ассемблеру. Вообще ничего не существует. Чёрная дыра какая-то.

Поэтому те крупицы информации, которые собраны энтузиастами в интернете, можно считать чудом. К этому относится и моя работа о том, как под виндой начать ассемблерный проект с нуля.

Среда разработки: EmEditor. Это хороший текстовый редактор. Я работаю с цветной подсветкой на чёрном фоне. Что бы начать работать, выполните несколько простых шагов.

  • скачайте мой архивчик с чистым проектом
  • скачайте binutils последней версии
  • наполняйте ассемблерные файлы кодом, компилируйте, заливайте в камушек


Итак, первым делом скачайте мой архив и поместите его в любое место на любом диске. Кликните по файлу Сборка.cmd - проект хоть и "пустой" но там есть несколько строк кода и данных. Произойдёт компиляция. Если проект скомпилировался без ошибок, в папке exe появится бинарник и интеловский HEX для заливки в камень.

Если вы раньше писали на ассемблере для AVR, то сразу поймёте назначение многих файлов, которые вкладываются в проект.

  • Распределение flash.asm - таблицы, данные, прошиваемые во флешку вместе с кодом
  • Распределение memoryXX.asm - карта переменных и областей, размещённых в RAM
  • Макросы псевдоинструкций.asm - мне нравятся эти мнемоники. Привык со времён AVR8.


Загляните в папку exe. Там хранится заветный файлик stm32f4xx.asm. Скачайте последнюю версию, я его то же иногда обновляю. Теперь загляните в файл stm32.ld. Крутым специалистом по управлению линкером я конечно не являюсь,
да с его-то корявым синтаксисом, но все необходимые команды этот файл содержит. И главное - работает так, как нужно. Файл простой, не содержит разной мути, от которой стекленеют глаза. И вы легко сможете поправить его под свой камушек. В данном примере рассматривается архитектура STM32F4.

А теперь, три заветных файла:

  • arm-none-eabi-as.exe
  • arm-none-eabi-ld.exe
  • arm-none-eabi-objcopy.exe


Это и есть полноценный ассемблер. Он и компилирует наш проект. Давайте скачаем последнюю версию. Для этого пойдём на страницу закачки. Там постоянно что-то меняется, адреса, форматирование страниц.. Найдите в колонке справа windows-архив, имя которого заканчивается на .zip. Этот архив содержит десятки мегабайт мусора, который вероятно никому не нужен. Его не стоит даже распаковывать. Открываем архив, заходим в папочку bin и берём оттуда наши три заветные файла. После этого, архив можно удалить. Я не знаю, что там может быть на сотку мегабайт, но для полноценного написания программ любой сложности и размера, потребуются только эти три файла. Да! Всего лишь 3 мб exe файлов. Это так просто. Их не нужно инсталлировать. Они не забивают и не вешают систему. И работают на любом компьютере под виндой.

Совет: храните актуальную версию компилятора вместе с проектом в папке exe. В gcc любят изменить что-то в новой версии компилятора так, что обновив его однажды, вы не сможете работать со старыми проектами, старые директивы работают как-то иначе, при компиляции будет вылетать куча ошибок и вам придётся всё переписывать.. Это болезнь не только gcc. Так что, пусть компилятор стареет вместе с вашим проектом и без надобности не обновляйте его. Этим вы облегчите себе жизнь в будущем. А папка с проектом будет полностью переносима, хоть на флешке. Воткнул в любой компьютер и работай.

Вот собственно и всё. Наполняйте проект кодом. Запускайте файл Сборка.cmd. Смотрите в папку exe и вы найдёте там интеловский HEX для заливки программатором в камушек.

Кажется, что мне нечего больше добавить. С виду всё просто. А я чуть не поседел, выясняя это всё с нуля. Помочь реально было некому. Программист на ассемблере - это сочетание таких свойств и качеств, которые в природе редко встречаются. Присоединяйтесь, если конечно сможете.

Действуйте!


p.s. Как подсказали на форуме, наши заветные файлы являются пакетом binutils.

Этот пакет содержит ещё несколько полезных утилит. Информацию о них я добавил в файл Сборка.cmd. Возьмите утилиты там же и раскомментируйте строки в командном файле, что бы они начали работать.


p.p.s. О небеса! Где была эта статья 5 лет назад??
раз, два, локальная копия.