Assembler Editor Plus: Первый проект
Продолжение цикла статей про редактор ассемблера для ARM микроконтроллеров под компилятор GNU AS
Предыдущая статья Assembler Editor Plus: Установка
Картинки под катом !
Итак, мы дошли до создания первого проекта.
Важное замечание: сам редактор обрабатывает тексты программ на языке ассемблера в соответствии с правилами, которые описаны во внешних файлах настройки, поэтому возможно описание новых правил под любые ARM микроконтроллеры, с ядрами которые поддерживаются gnu as (а их перечень очень значителен!).
Как вы понимаете проект сейчас слишком молод чтобы иметь правила под полный спектр микроконтроллеров - просто не все они еще описаны, это не является большой проблемой, если вы готовы помочь в описании микроконтроллера (об этом я еще расскажу), ну а если не готовы - то придется подождать немного, пока эти настройки, под ваш микроконтроллер, будут сделаны.
Сейчас активно описываются микроконтроллеры семейства STM32F4x, основным для тестирования является STM32F407, поэтому первый пример будет именно под этот микроконтроллер, он задействован в отладочной плате STM32F4 Discovery от ST, у меня этот микроконтроллер задействован на отладочной плате Open407I-C (документация есть в папке Add\MCUDoc в Easy варианте редактора для скачивания, см. предыдущую статью), или STM32F4VE (китайская платка, так же с алиэкспресс)
Итак, запускаем редактор, и выбираем "Проект" - "Новый" и после указания папки и имени для хранения файлов проекта будет показано окно настроек проекта
В этом окне нужно задать используемый в проекте микроконтроллер, нажимаем "Задать", и выбираем STM32F407
Настройки микроконтроллера будут прочитаны и поля настроек проекта будут заполнены:
Поля .syntax .cpu .thumb .fpu - это параметры компиляции для выбранного микроконтроллера,
Адрес прошивки - куда будет записываться прошивка
на вкладке Конфигурация, настройки для самого редактора, вам вряд ли придется из изменять самостоятельно даже в будущем
Далее переходим во вкладку Каталоги
Здесь указываются папки которые будут созданы в папке проекта, и если приведенные в окне настроек значения по умолчанию вас устраивают то необходимо просто нажать кнопку "Создать каталоги проекта" и так же можно скопировать исполняемые файлы компилятора с .bat файлом для создания возможности само-компиляции проекта не используя возможности редактора.
После этого нажимаем кнопку "Принять". Настройки проекта применятся и вы увидите следующее состояние редактора
По интерфейсу:
[ 1 ] - список открытых в редакторе файлов
[ 2 ] - выбор режима отображения файлов проекта
[ 3 ] - окно показа файлов в: Каталоге проекта, Каталоге исходных файлов, Каталоге компиляции
[ 4 ] - поле редактора
[ 5 ] - кнопки быстрого доступа к дополнительным функциям
Теперь не углубляясь дальше в подробности создадим тестовую программу
По идее, мы должны выбрать в дереве файлов папку src вызвать меню правок кнопкой мыши, добавить файл, и вперед, но уж совсем блокнотные функции я описывать не буду, проект будем создавать как и обещал - в клики мышкой, поэтому выбираем в главном меню "Модули" - "Добавить модуль"
и видим все доступные шаблоны кода, нам интересен раздел "Стартовые файлы (main.asm)"
в правой части видим краткое описание выбранного модуля, в данном виде это готовый набор файлов проекта, жмем "Установить" и получаем готовую заготовку проекта, с запуском тактирования микроконтроллера
Теперь чтобы откомпилировать проект идем в меню "Запуск" - "Настройки компиляции"
Здесь задаются имена программ компилятора, у вас есть вариант определить их "По умолчанию" в этом случае пути будут поправлены на файлы компилятора которые идут с редактором, пожалуй самое простое это просто нажать эту кнопку
Здесь я бы рекомендовал установить чек бокс "Сохранить проект перед компиляцией", потому что компилируется только сохраненное содержимое файлов, и вам не придется перед этим сохранять их вручную (а то забудете по запарке и будете удивляться почему программа работает не так как вы написали)
теперь вы можете откомпилировать проект "Запуск" - "Компиляция и сборка"
Теперь в каталоге компиляции проекта \compile можно посмотреть результирующие файлы, например текст прошивки находится в файле sys.sasm, прошивка соответственно в sys.bin или sys.hex (выбирайте в зависимости от своего программатора, ну а в редакторе вам об этом думать особо не придется)
Теперь самое время подключить ваше устройство через программатор и записать прошивку в устройство, выбираем "Запуск" - "Запись в устройство через..." если у вас ST-Link - то ST-Link [direct] - это прошивка при помощи утилит программатора от ST (смотрите прошлую статью), ну а если у вас другой программатор (J-Link) то запись делаем через OpenOCD (но там я еще эксперементирую)
Поскольку в нашей программе визуальных эффектов никаких не предусмотрено, то просто запустим отладку и посмотрим как это все происходит
Для этого выбираем "Запуск" - "Исполнение и отладка [OpenOCD]"
В появившемся окне нажимаем "Старт" и через несколько секунд видим что наш микроконтроллер работает (Running), поэтому нет значений регистров и состояние не известно
Давайте сбросим микроконтроллер и перейдем в режим пошагового исполнения кода, нажмите кнопки: "HALT" (принудительный останов микроконтроллера), "RESET HALT" (сброс микроконтроллера и переход в режим пошагового исполнения программы) в окне отладчика
В окне редактора, при открытом в нем скомпилированном тексте прошивки вы увидите подсветку текущей команды ассемблера которая будет выполнена, в окне отладчика показано состояние ядра микроконтроллера и значения регистров
Теперь вы можете исполнять программу по шагам, для этого есть две кнопки "STEP IN" (выполнение текущей команды с заходом в подпрограммы) и "STEP OVER" исполнение подпрограмм за один шаг.
Поскольку у нас программа фактически и состоит из одной подпрограммы то нажмем "STEP IN" и получим переход на адрес 0х08000048, подпрограмму с меткой SYSCLK168_START
И вот так можно шагать по программе и смотреть как меняются значения регистров и флагов.
Дополнительно в окне отладчика вы можете просмотреть текущее состояние регистров настройки периферии микроконтроллера
При двойном клике мышкой на поле регистра его значение будет показано в различных форматах, порядок BIN -> HEX -> DEC
Можно просматривать текущие значения в памяти микроконтроллера, для удобства можно задать несколько различных адресов, размерность просмотра, размер области памяти (но не переусердствуйте).
Для того чтобы продолжить исполнение программы нажимаем кнопку "RESUME"
На этом на сегодня все, в следующей статье будем писать что то более наглядное, традиционно мигалку светодиодами, с использованием модулей редактора и так же с минимальными усилиями на клавиатуре (они нам еще понадобятся), заодно разберем как раз те функции редактора ради которых он и задумывался первоначально
продолжение Assembler Editor Plus: Использование модулей