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


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

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

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

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


Итак, первым делом скачайте мой архив и поместите его в любое место на любом диске. Кликните по файлу Сборка.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


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

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

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

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

Действуйте!


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

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