Миландр MDR32F9Q2I. ASM. Средства разработки на ассемблере
С целью изучения сред программирования для микроконтроллеров ARM Cortex-M3 Миландр MDR32F9Q2I, кратко рассмотрены интегрированные пакеты и их ассемблеры.
Микроконтроллеры были приобретены у производителя. Была сделана небольшая отладочная плата, заказана в производстве. Пока делают печатные платы, спаял на макетке. Подключил UART. Сделал прототипы загрузчика для загрузки по UART на Python и C# Visual Studio 2010 Express. В планах подключить открытые JTAG-средства. Выбираю ассемблер, смотрю на спецификацию.
Страница микроконтроллера на сайте производителя:
Форум на сайте производителя:
Отечественная интегрированная среда Phyton CodeMaster-ARM
Поставляется с отладочными платами от производителя.
Содержит собственный ассемблер mcaarm.exe. Ассемблер содержит собственный формат директив. Со средой поставляется описание ассемблера на русском языке, что является несомненным плюсом для начинающих. Ассемблер среды Phyton CodeMaster-ARM, поддерживает синтаксис UML.
ARM MACRO ASSEMBLER Version 1.01.101130 Demo
Copyright (C) 2009 Phyton, Inc.
Среда разработки IAR IAR Embedded workbench (EWBAR)
Среда поставляется с собственным ассемблером IASMARM. Ассемблер имеет собственный синтаксис директив. Синтаксис директив в чём то похож, на синтаксис ассемблера Keil, что потенциально позволяет производить перенос кода с одного ассемблера на другой - с небольшими правками, в основном касающимися синтаксиса директив, макросов и пр., оставляя мнемокоды UML нетронутыми.
Среда разработки Keil uVision v.4
Keil uVision - набор инструментов, для разработки программ на компьютерных языках C, C++, ассемблер (UAL) для микроконтроллеров, в том числе с ядром ARM Cortex-M3.
В наборе инструментов Keil присутствует ассемблер armasm, а также встроенный оптимизированный ассемблер, для разбора инструкций включённых в текст программы на языке CИ. Ассемблер имеет собственный синтаксис директив. Поддерживает UAL синтаксис команд.
В четвертой версии Keil uVision, поставляется версия 5.02 ассемблера. Расположен он в папке c:\Keil\ARM\ARMCC\bin, при установке среды в c:\Keil.
Радует то, что принципы всех этих ассемблеров, практически одинаковы. Это позволяет, без
особых трудностей использовать любой их них, предварительно ознакомившись с конкретным синтаксисом ассемблера. А имена машинных операций (мнемокоды) соответствуют стандарту UAL (унифицированного ассемблерного языка).
Среда разработки GNU GCC ARM
Открытая, бесплатная, без ограничений размера кода, система компиляторов, в том числе для ARM.
Содержит собственный ассемблер GNU AS, с собственными синтаксисом.
Ассемблер GNU AS наиболее мощный из всех, т.к. поддерживает (в одном стиле) ассемблеры очень многих наборов команд различных процессоров. С этой точки зрения - перспективен.
Для выбора ассемблера (да какой выбор-то - gnu arm, т.к. и Linux используется), составил небольшую табличку сравнения мнемоник, чтобы не путаться в синтаксисе.
Подобие подобия. Краткий синтаксис директив ассемблеров для ARM
Таблица №1
Phython
CodeMaster
ARM
|
IAR
Embedded
Workbench
|
Keil
MDK-ARM
|
GNU AS
|
| |
Сайт
|
|
|
|
|
|
|
mcaarm.exe
v. 1.01.101130
|
|
Armasm
5.02
|
GNU
assembler version 2.23.51 (arm-none-eabi)
|
|
Комментарии
|
; - строка
|
;
- строка
//
- строка
/*
*/ - группа строк
|
; - строка
|
# - имеет доп. спец.
значение
;
- строка
@ - строка
/*
*/ - группа строк
|
|
Символы (метки)
|
Latin1
- символы, цифры, спецсимволы
|
Latin1,a-zA-Z,
цифры,
символы _ $, могут содержать печатные символы, если
заключены в апострофы ``
|
Символы, цифры,
знак подчёркивание (_). Различается регистр символов.
|
Unicode-строка, цифры, 3 символа "_.$"
Различается
регистр символов.
|
|
Директива
THUMB, указывающая на 16-битные инструкции ARM, ассемблеру
|
.THUMB
|
THUMB
|
THUMB
|
.thumb
или .code16
|
|
Директива
включение другого файла с исходным кодом
|
.INCLUDE
|
INCLUDE или $
|
GET
или INCLUDE
|
.include
|
|
Импорт символов
|
.EXTRN
.EXTRNx
- типизированный импорт
|
IMPORT или
EXTERN или
EXTWEAK
|
IMPORT или
EXTERN
|
.import
|
|
Экспорт символов
|
.PUBLIC
|
PUBLIC или
PUBWEAK
|
EXPORT
или
GLOBAL,
EXPORTAS
|
.global
.globl
|
|
Объявление функций
(подпрограмм)
|
.FUNC
и .ENDF
Или .EXTRNF
|
Явно не выделено
|
FUNCTION или PROC и .ENDP .ENDFUNC
|
.func
|
|
Объявление
Макросов (начало и конец)
|
.MACRO
и .ENDMAC
|
MACRO
и ENDM
Или ENDR
|
MACRO
и MEND
|
.macro
и .endm
|
|
Присваивание символического имени выражению
|
.EQU
распространяется на модуль внутри файла
или .DEFINE распространяется на весь файл
.SET или = - может быть
переопределено в том же модуле
.LABELx
- типизированные метки
|
EQU в пределах модуля
ALIAS в пределах модуля
SET, SETA, ASSIGN временно
DEFINE - на весь файл
|
EQU
|
.equ
|
|
Определение секций
кода и данных
|
.ASEG
и .ENDSEG
.RSEG
и .ENDSEG
OSEG
и .ENDSEG
|
SECTION
или RSEG
И END
ALIGNROM,
ALIGNRAM, EVEN,ODD
|
AREA
CODE
AREA
DATA
|
.section
|
|
Конец файла
|
.END - конец модуля и конец файла
.ENDMOD
- конец модуля
|
END
|
END
|
.end
|
|
Модуль начало
|
.PMODULE
.LMODULE
|
PROGRAM
или NAME
или MODULE
|
Явно не выделено
|
Явно не выделено
|
|
Заголовок и
подзаголовок на каждой странице
|
.TITL
.STITL
|
Явно не выделено
|
TTL и SUBT
|
.ttl
и .sbttl
|
|
Условное
|
.IF,
.ELSE, .ENDIF
|
IF
и ENDIF
|
IF, ELSE, ENDIF,
and ELIF
|
.if
или несколько
.ifxx, где xx-какое-либо условие
И .endif
.else
и .elseif
|
|
Предопределённые
символы регистров
|
|
CPSR,
R0–R12, R13 (SP), R14 (LR), R15 (PC), SPSR и пр.
|
|
|
|
Вызов процедуры
|
|
|
BL
имя
|
|
|
|
|
|
|
|
Комментариев нет:
Отправить комментарий