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 лет назад??
раз,
два,
локальная копия.