Страницы

вторник, 15 января 2013 г.

Миландр MDR32F9Q2I. ASM. Средства разработки на ассемблере


Миландр 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 имя

 

 

 

 

 

 

 

Комментариев нет: