STM8 + STVD + ASSEMBLER: Быстрый старт

разделы: STM8, АССЕМБЛЕР, дата: 22 августа 2018г.

Вновь возвращаюсь к фирменной среде разработки - ST Visual Develop, для чего есть две причины. Во-первых, оказалось, что писать на ассемблере сколь-либо сложные прошивки без отладчика невозможно, у меня по крайней мере не получилось, т.к. программа все-равно так или иначе отлаживается с помощью светодиода или по UART, через отладочный интерфейс это просто делается быстрее. Во-вторых, мне показалось, что изучать архитектуру только лишь руководствуясь datasheet'ом не совсем правильно. Что-то может быть неправильно понято, что-то может быть упущено. С такими штуками как DMA, встроенный RTC или выполнение кода из ОЗУ, будет проще разобраться с помощью отладчика, не забывая при этом посматривать в datasheet.

STVD - довольно простая среда разработки, я ее освоил за вечер. В этой статье я хочу рассказать, как "с нуля" начать писать и отлаживать прошивки на ассемблере STM8, используя ST Visual Develop.

STVD - работает в ОС семейства Windows, начиная с XP и выше. При этом она прекрасно работает из-под виртуальной машины в Linux. В этой статье я использую STVD 4.3.12, последнюю доступную версию на этот момент, и Windows XP SP3 в качестве гостевой ОС. В качестве микроконтроллера я буду использовать 20-пиновый STM8S103F3P6.

В качестве дизассемблера я буду использовать комплект утилит stm8-binutils. Бинарные файлы этого комплекта для Windows скомпилированы для работы в CYGWIN, т.е. они понимают unix'овский формат пути файла с прямым слешем в качестве разделителя. CYGWIN для Windows 7 и выше ставится без проблем следуя инструкциям на сайте https://cygwin.com/install.html, для Windows XP нужно следовать инструкциям в этом HowTo: windows xp - cygwin 2.5.2 mirror -- getting the last XP release - Stack Overflow.

В качестве альтернативы связке binutils+cygwin, можно использовать naken_util из комплекта naken_asm.

Содержание статьи:

I. Создание минимального проекта Blink

  1. Открытие шаблонного проекта на ассемблере
  2. Добавление в проект файла с таблицей векторов и обработчиками прерываний
  3. Добавление в проект констант с адресами периферии
  4. Добавление в проект файла с подпрограммой

II. Язык ассемблера STVD

  1. Основные сведения об ассемблере STVD
  2. Формат числовых констант
  3. Формат метки
  4. Сегментация
  5. Основные директивы ассемблера

III. Процесс отладки

  1. Копирование кода в ОЗУ и выполнение его оттуда
  2. Интерфейс отладки STVD
  3. Процесс отладки в STVD

IV. Макроассемблер

  1. Введение в макроассемблер STVD
  2. Макрос задержки delay_ms
  3. Макрос условного оператора сравнения регистра с числом
  4. Задержка длительностью 1 мкс на инструкции условного перехода

Читать дальше