Страницы

Показаны сообщения с ярлыком MDR32F9Q2I. Показать все сообщения
Показаны сообщения с ярлыком MDR32F9Q2I. Показать все сообщения

среда, 24 апреля 2013 г.

Миландр К1986ВЕ92QI (MDR32F9Q2I) GNU ARM toolchain

Обновляемая заметка о настройке свободного набора инструментов разработки под ARM микроконтроллер Миландр К1986ВЕ92QI MDR32F9Q2I в среде Linux Ubuntu Gnome 13.04, Linux Mint Mate.

Т.к. в силу сложившихся обстоятельств разработка любительских поделок ведется в Windows, с плавным переносом под Linux, то данная заметка будет дополняться постепенно.


Основную трудность на данный момент (Апрель 2013 года) составляет загрузка прошивки в микроконтроллер Миландр MDR32F9Q2I свободными инструментами.




Предварительная установка вспомогательных средств



Установка базового набора утилит для сборки проектов из исходных кодов:

$ sudo apt-get install build-essential


Установка среды исполнения JAVA. Часто уже установлена и можно пропустить этот шаг.

$ sudo apt-get install default-jre


Установка систем контроля версий SVN и GIT. Понадобиться для загрузки исходных кодов из различных источнков.

$ sudo apt-get install subversion

$ sudo apt-get install git

※※※



Установка ARM-toolchain (ARM-компилятора, ARM-отладчика)



Стандартный GCC в Ubuntu настроен для компиляции для платформы x86, а надо для ARM.

$ sudo apt-get install libc6-dev-armel-cross gcc-arm-linux-gnueabi


После установки, исполняемые файлы с префиксом: arm-linux-gnueabi будут расположены в папке /usr/bin.


Например:


$ arm-linux-gnueabi-as --version
$ arm-linux-gnueabi-gcc --version

$ arm-linux-gnueab-gdb --version


Теперь можно качать пример с ассемблерным файлом из моей заметки "ARM GNU AS example", компилировать и пробовать загружать в микроконтроллер Миландр MDR32F9Q2I. Команда make используется стандартная, и для неё в примере, подготовлен файл. Правда собирался только под Windows, так что возможно придётся немного подправить.

Загрузку прошивки можно осуществить программатором milprog. Пока только так.


※※※




Установка Eclipse CDT - среды разработки на языках C/C++



Eclipse platform - это целое семейство различных инструментов, построенных на единой платформе (специальные классы на языке Java). Вся платформа написана на языке Java, в силу этого переносима на операционные системы, поддерживающие среду исполнения Java.

Изначально, предназачалась для разработки на языке Java.


Eclipse CDT - это дополнение к платформе Eclipse, позволяющее разрабатывать на языке C/C++/ASM, для процессоров архитектуры x86. Набор средств подсветки исходных кодов, мастеров-шаблонов, графических отладчиков и пр.



В Ubuntu 13.04 присутствуют пакеты Eclipse platform версии 3.8.

Эта версия, по состоянию на март 2013 года - устарела, но и её можно настроить для разработки под ARM, но не просто. Поэтому, надо скачать дистрибутив с сайта Eclipse.



Eclipse platform 3.8 и CDT  можно установить следующим образом, но уже не рекомендуется:

$ sudo apt-get install eclipse-platform

либо

$ sudo apt-get install eclipse-cdt


В марте 2013 года, актуальная версия Eclipse - Eclipse Juno 4.2 и CDT 8.1.2.

В октябре 2015 года, актуальная версия Eclipse - Eclipse Mars.1 и CDT 8.8.0.



С сайта http://www.eclipse.org/cdt/ скачивается версия Eclipse for C/C++ Developers (сокращённо Eclipse CDT).


В октябре 2015 года, проще и быстрее скачать Eclipse Installer и в нём выбрать Eclipse for C/C++ Developers для установки.


Распаковывается в каталог из которого и будет работать.

Запускается в развернутом каталоге так:  ./eclipse

Можно также переместить распакованный каталог в папку /opt. Делается это с правами root-администратора.


Делается настройка для различных окон среды Eclipse в XMonad, если не устраивает поведение по-умолчанию.

Привязывается запуск среды к какой-либо мультимедийной клавише, либо сочетанию, либо делается автозагрузка.

Автозагрузка выглядит предпочтительнее.


После установки, можно попробовать обновиться, через меню "Help - Check Updates".


※※※




Установка Eclipse GNU ARM plugin



Eclipse GNU ARM plugin - это дополнение к уже сформированной платформе Eclipse + CDT, позволяющее разрабатывать программы на языках C/C++/ASM, но уже для процессоров архитектуры ARM.

Устанавливается из меню "Eclipse - Install Software".


В появившемся окне, надо добавить ссылку на источник кода для GNU ARM Plugin, нажав кнопку Add..


Источник кода: http://gnuarmeclipse.sourceforge.net/updates


Отметить появившейся пакет.

Выполнить пошаговый мастер и перезагрузиться.


※※※




Установка Eclipse GNU GDB Hardware debugging



Eclipse GNU GDB Hardware debugging - это дополнение к связке Eclipse+CDT+GNU ARM plugin,  позволяющее выполнять пошаговую графическую отладку процессоров ARM, в интерфейсе среды разработки.


Цепочка отладки включает в себя и GDB-сервер, и JTAG-адаптер и их средства взаимодействия.


Устанавливается Eclipse GNU Hardware debugging также через меню "Help - Install Software".


Только в качестве источника кода выбрать из списка ссылку на имеющийся релиз. (У меня Juno SR2).

Итак, источник для Juno SR2: http://download.eclipse.org/releases/juno/201303010900

В октябре 2015 года, источник другой для Eclipse Mars.1




Чтобы быстро найти нужный пакет, в строке поиска набрать "Hardware".

Нужный нам код находиться в "Mobile and Device development".

Называется "C/C++ GDB Hardware debugging".


Отметить.

Выполнить пошаговый мастер и перезагрузиться.


※※※




Установка OpenOCD - jtag-отладчика и GDB-сервера



Предварительные сведения, пока не устанавливал и не собирал.


OpenOCD - Jtag-отладчик, программатор и GDB-сервер, поддерживающий многие jtag-эмуляторы, в том числе имеющиеся у меня J-Link и Bus Blaster (FT2232H), а также ST-link.


Загрузить исходные коды OpenOCD из git-хранилища:

$ git clone git://git.code.sf.net/p/openocd/code openocd


Скорее всего, понадобиться и библиотека libFTDI, её исходные коды.

$ mkdir libftdi

$ cd libftdi

libftdi$ git clone git://developer.intra2net.com/libftdi

$ cd ..


А также LibUSB - библиотека для работы с USB-устройствами. Может оказаться, что она уже в системе установлена, тогда имеет смысл проверить её версию.

$ mkdir libusb

$ cd libusb

$ git clone git://git.libusb.org/libusb.git

$ cd ..


Перед сборкой OpenOCD, надо собрать и установить библиотеки LibUSB и LibFTDI. Вначале более общий уровень - LibUSB, затем LibFTDI и затем OpenOCD.



Сконфигурировать исходные коды OpenOCD.

Конфигурирование и сборка проводятся папке с исходными кодами.


Опции конфигурирования просмотреть на сайте отладчика, либо в документации, либо ./configure --help

./configure "указать опции"


Предварительно, для моих отладчиков опции следующие:

$ ./configure --enable-jlink --enable-ft2232_libftdi --enable-stlink



Собрать проект.

$ make


Установить в систему.

$ make install


※※※



Установка специфических утилит для микроконтроллера Cortex-M3 Миландр MDR32F9Q2I



Установка Milprog - программатора для микроконтроллеров Миландр MDR32F9Q2I



Сайт программатора milprog: https://github.com/sergev/milprog


Загрузка исходных кодов программатора.

$ svn checkout http://milprog.googlecode.com/svn/trunk/ milprog


либо


$ git clone https://github.com/sergev/milprog.git


※※※


Установка MDR32 SPL



Пока не выполнялась.

см. форум: http://forum.milandr.ru/viewtopic.php?f=33&t=607


Для скачивания выполнить:


$ git clone https://github.com/eldarkg/emdr1986x-std-per-lib.git


※※※


Установка драйверов адаптеров USB-UART-TTL



При разработке для микроконтроллеров обязательным инструментом сейчас становиться согласующее устройство (адаптер) USB-UART-TTL, т.к. практически каждый микроконтроллер оборудован последовательным портом. Это не полный стандарт RS-232, а обычно 3 провода (TX-RX-GND), с логическими уровнями TTL. Так что требуется переходник.


Наиболее интересны переходники на основе микросхем FT232RL, FT232H фирмы FTDI. Целое семейство микросхем - с двумя портами, с четырьмя портами.


Основной бонус, это наличие в микросхеме специального режима (MPSSE), позволяющего использовать её как JTAG-отладчик, и для эмуляции последовательных протоколов (I2C, SPI и пр.). Для этих микросхем есть специальные фирменные драйверы, поддерживающие расширенную функциональность.


Для использования переходника на основе FT232, в качестве последовательного порта, драйвер (ftdi_sio) входит в ядро Linux. Но для использования фирменных драйверов и расширенной функциональности, их надо установить, а также выгрузить драйвер ftdi_sio.



Также, обычно понадобиться открытая библиотека LIBFTDI, многие программаторы используют её.


Загрузить LIBFTDI можно с сайта: http://www.intra2net.com/en/developer/libftdi/download.php



※※※


Установка Eagle CAD



Разработка программ под микроконтроллеры Миландр MDR32F9Q2I, помимо программных инструментов, требует  и аппаратные средства. Их можно создать самостоятельно используя графическую программу Eagle CAD. Это распространённая среди любителей программа, позволяющая бесплатно создать 2-слойную плату размером 10х10.

Загрузить можно с сайта:

http://www.cadsoftusa.com/download-eagle/?language=en


Версия, доступна под Windows, Linux, Mac OS X, так что проекты хорошо переносятся между операционными системами.
По состоянию на октябрь 2015 года, 64-битный установщик работает нормально на версии Linux Mint 17.2.


Проблемная установка старых версий в 64-битной версии Ubuntu: http://gimmor.blogspot.com/2014/04/eagle-cad-64-ubuntu-1404-1310-1304.html


※※※

Установка KiCAD



Открытая система разработки электронных схем и печатных плат.

Сайт: http://www.kicad-pcb.org/


Рекомендуемая процедура установки из PPA.

$ sudo add-apt-repository ppa:js-reynaud/kicad-4

$ sudo apt-get update

$ sudo apt-get install kicad

В пакет KiCAD EDA входит полезная (обязательная) программа Gerbview для просмотра файлов GERBER, отправляемых в производство.



※※※


Ресурсы



1. Eclipse CDT. http://www.eclipse.org/cdt/

2. Eclipse GNU ARM Plugin. https://github.com/gnuarmeclipse

3. Eagle CAD. http://www.cadsoftusa.com/download-eagle/?language=en

4. Kicad EDA. http://www.kicad-pcb.org/

5. OpenOCD. http://openocd.org/

6. Драйверы FTDI. http://www.ftdichip.com/Drivers/D2XX.htm

7. Программатор milprog. https://github.com/sergev/milprog

8. MDR32 Standard Peripherial Libary. https://github.com/eldarkg/emdr1986x-std-per-lib  http://forum.milandr.ru/viewtopic.php?f=33&t=607

9. Библиотека LibUSB. http://www.libusb.org/

10. Библиотека LibFTDI. http://www.intra2net.com/en/developer/libftdi/download.php

11. Форум Миландр: http://forum.milandr.ru/

12. Сайт программы логического анализатора. http://www.lxtreme.nl/ols/





※※※







воскресенье, 31 марта 2013 г.

Миландр MDR32F9Q2I. ARM GNU AS Example. Пример ассемблерного файла

В данной заметке, представлю ранее уже опубликованный, простейший пример ассемблерного кода для Cortex-M3 микроконтроллера Миландр MDR32F9Q2I, переписанный на ассемблере GNU AS.

Ассемблер GNU AS - открытый проект ассемблера, входящего в набор инструментов GNU.
Пришёл на платформу Windows из прекрасного мира свободного программного обеспечения.
Позволяет снять ограничение на размер "прошивки", которое накладывают коммерческие ассемблеры, такие как Keil ARM ASM и пр. Это даёт шанс использовать всю мощь микроконтроллера, мощь открытых средств разработки, мощь многоплатформенности и пр.
Однако, пример то простейший, но "продраться" сквозь лес настроек - задача не из легких. Попробую.

Что понадобиться, для платформы Windows?


1. Сам ассемблер.
Ассемблер GNU AS проще всего получить в составе инструментов Sourcery CodeBench Lite Edition for ARM EABI. Исполняемый файл ассемблер arm-none-eabi-as.exe.
После установки этого набора, можно приступать к разработке.

2. Редактор исходного кода
Подойдет любой. Приветствуется - с подсветкой синтаксиса. Для начала я взял Eclipse JUNO SR1. Там можно просто открыть ассемблерный файл и отредактировать, не создавая проектов и пр., не вникая в бесконечные настройки среды (правда, в дальнейшем, вникнуть придётся).

3. Linker - компоновщик, редактор связей
Входит в пакет программ GNU ARM Toolchain. В моём случае, он есть в составе Sourcery CodeBench Lite Edition for ARM EABI. Там есть всё что нужно. Будет использоваться для
компоновки прошивок для ОЗУ и ПЗУ.

4. Objcopy
Для преобразования elf-файлов в конечные файлы прошивок, в формате intel hex или binary,
пригодные для загрузки в ПЗУ микроконтроллера сторонними средствами.

5. Make - утилита сборки
Понадобиться, что воспользоваться подготовленным файлом сборки (Makefile) для примера, чтобы не собирать проект отдельными командами. Прежде чем написать Makefile, я так и делал, чтобы получше осознать цепочку инструментов.
В наборе инструментов Sourcery CodeBench Lite Edition for ARM EABI, она зовётся cs-make.


6. Утилита загрузки в микроконтроллер
Это может быть, на данный момент, milprog, uart-bootloader (с форума Миландра), связка gdb отладчик + gdb-сервер от J-Link, либо от OpenOCD, либо что-то своё.

Проект примера

Пример можно собрать как в командной строке Windows, так и в среде Eclipse.
Проще в командной строке, т.к. надо выполнить только команду cs-make, в папке проекта.

Набор файлов проекта можно загрузить по ссылке: http://yadi.sk/d/VNTjnqXQ3fOpa

В Eclipse надо пройти цепочку действий - создать проект, импортировать туда пример, потом собирать. Eclipse перед этим надо настроить, для поддержки разработки ARM - установить GNU ARM Plugin, GDB Hardware debugging. С первого раза, сложновато.

Да, Makefile проекта простейший, не многоплатформенный. Например, цель "очистка проекта" работает под Windows.


Настройка среды под Linux будет позже, как только обновиться компьютер, но в принципе всё тоже самое, в некоторых местах даже проще.







суббота, 9 марта 2013 г.

MDR32F9Q2I. ARM ASM Keil example. Пример простейшего ассемблерного файла

В заметке приведён пример простого ассемблерного файла для микроконтроллера Миландр MDR32F9Q3I. Языком ассемблера является UAL ARM ASM, ассемблер которого включён
в поставку известной среды Keil uVusion.

Для сборки "прошивки" использовалась доступная в тот момент версия 4.60.
Тестирование велось на отладочной плате MDR32-Solo, собственной разработки.
Прошивка памяти микроконтроллера выполнялась из среды Keil, с помощью отладчика J-Link v.8.


Проект, с исходным кодом, с собранной прошивкой: http://yadi.sk/d/tJSom1FK39NW3

P.S. Позже, будет добавлена ещё одна заметка, с этим же файлом, но на ассемблере GNU AS.
P.P.S. Сейчас уже есть заметка: http://gimmor.blogspot.com/2013/03/mdr32f9q2i-arm-gnu-as-example.html
 

вторник, 5 марта 2013 г.

Milandr - MDR32F9Q2I - cheetsheet. Схемы, памятки

Схемы, памятки по Cortex-M3 микроконтроллеру Миландр MDR32F9Q2I


Выложу парочку схем-памяток, по микроконтроллеру MDR32F9Q2I. Делал на основе спецификации. Могут быть ошибки и разночтения. Комментарии приветствуются.

Файлы большие, пригодные к печати на A4 (600 dpi), их ссылки даны под картинками для просмотра.
Скачивать последние версии.
Последняя версия 0.8 от 10 апреля 2015 года.
Порты вводв-вывода и отладочные порты микроконтроллера Миландр K1986F9BQ2I (MDR32F9Q2I). Версия 0.8
В версии 0.8, на схеме исправлены надписи TX/RX для выводов в BOOT режиме. Добавлен 20-pin JTAG-разъём.
Полноценный файл для печати на A4 (клик по изображению).






Порты ввода-вывода и отладочные порты микроконтроллера Миландр MDR32F9Q2I. Версия 0.6
В версии 0.6, на схему добавлено подключение интерфейса SWD.
Версия 0.6 от 8 марта 2013 года. Устарела. Полноценный файл для печати на A4 5Мб.
(mdr32f0q2i-ports-порты-ввода-вывода-0.6)



Порты ввода-вывода и отладочные порты микроконтроллера Миландр MDR32F9Q2I. Версия 0.5
Версия 0.5 от 5 марта 2013 г. Устарела. Полноценный файл для печати на A4 4,7Мб.
(mdr32f9q2i-ports-порты-ввода-вывода-0.5).




Дополнительные функции портов ввода-вывода микроконтроллера Миландр MDR32F9Q2I. Версия 0.5
Версия 0.5 от 5 марта 2013 года. Полноценный файл для печати на A4 4,7Мб. (mdr32f9q2i-ports-дополнительные-функции)



UART - УАПП

Текущая версия 0.6 от 9 марта 2013 года

Памятка по быстрой настройке микроконтроллера MDR32F9Q2I, для простой передачи по протоколу UART. Версия 0.6

Версия 0.6 от 9 марта 2013 года. Полноценный файл для печати на A4 5,9Мб. (mdr32f9q2i-uart-памятка-0.6)


Памятка по быстрой настройке UART-УАПП на микроконтроллере MDR32F9Q2I. Версия 0.5
Версия 0.5 от 7 марта 2013 года. Устарела.

USB - Универсальная последовательная шина

Текущая версия памятки по USB: 0.5 от 6 декабря 2014 года.

Пока только для режима USB Device - подчинённое устройство.

Памятка по быстрой настройке USB DEVICE микроконтроллера Миландр К1986ВЕ92QI/К1986ВЕ92QC, Версия 0.5



понедельник, 4 марта 2013 г.

Миландр MDR32F9Q2I. Keil uVision + J-Link + JTAG

Несколько снимков экрана на память о настройках среды Keil uVision, для программирования микроконтроллера Миландр MDR32F9Q2I (гражданский аналог К1986ВЕ92У), с помощью отладчика J-Link Segger.
Keil uVision. Выбор устройства = микроконтроллер Миландр MDR32F9Q2I
 
 
Keil. О программе
Keil. Настройка JTAG-отладчика J-Link Segger

Keil. Настройка JTAG-отладчика J-Link Segger. Вкладка Debug


 При таких настройках, в среде Keil uVision (32 кб-ограничение), я могу писать программы для своей отладочной платы MDR32-Solo (http://gimmor.blogspot.com/2013/03/mdr32-solo-mdr32f9q2i.html) на языке ассемблера armasm. И их отлаживать во встроенном отладчике, в пошаговом режиме, с просмотром состояния регистров процессора.

Стоит заметить, что возможность загрузки прошивки в энергонезависимую память микроконтроллера, скорее относиться к поддержке такой возможности в среде Keil.

Эмулятор Segger J-Link, не предоставляет такой возможности отдельно, т.к. Миландр MDR32F9Q2I, пока не входит в список поддерживаемых устройств.
Среда Keil использует свой способ загрузки прошивки.




 

воскресенье, 3 марта 2013 г.

MDR32-Solo. Отладочная плата для процессора Миландр MDR32F9Q2I

Описание скромных возможностей платы MDR32-Solo (MDR32F9Q2I Development board)
Новый 13 год для меня начался с интересом. В 30-х числах января, прошлого года, я приобрёл несколько микроконтроллеров MDR32F9Q2I фирмы Миландр и сразу засел за изучение и разработку макета будущей платы.

Т.к. пришли голые микроконтроллеры, то вариантов 2. Использовать готовую макетную плату под LQFP-64. Питание подать с модуля для контактной макетной платы, а обвязку сделать из дискретных компонентов. В простейшем варианте понадобиться схема сброса, выбора режима загрузчика, а также пара светодиодов и кнопок. Второй вариант, разработать схему в Eagle CAD.

Выбрал оба варианта.

В процесс изготовил библиотеку Eagle для символа микроконтроллера MDR32F9Q2I, но пока не выкладываю, т.к. выявившиеся мелкие недочёты с маской, надо исправить. Разработку платы в CAD Eagle, я осилил за полторы недели. Потом, был период отлёживания, с вялотекущим процессом подгонки под нормы производителя. После чего, заказал изготовление на фабрике в Китае. Казалось что будет быстро, а оказалось, 1 месяц и неделя.

Платы получены и начался процесс их запаивания деталями. Разумеется, первое включение не принесло ничего хорошего. Светодиод питания оказался запаян наоборот, перемычки загрузочного режима установлены неверно и как результат микроконтроллер не определялся ни через UART, ни через JTAG. Пришлось запаять вторую плату и ситуация повторилась. После чего, я стал более тщательно проходить по возможным местам ошибок и в процессе этого понял свою ошибку - переставил перемычки и микроконтроллер стал определяться и дело пошло. Также нашёл одну серьезную ошибку, но её удалось легко исправить перемычкой. Мелких недочётов оказалось больше, но они все не критичны для меня, не влияют на работоспособность.


Общее описание


MDR32-Solo - MDR32F9Q2I отладочная плата. Общий вид + USB-UART TTL адаптер


MDR32-Solo. Запаянный чип микроконтроллера MDR32F9Q2I
MDR32-Solo. Вид лицевой стороны


MDR32-Solo. Вид со стороны USB разъёма

Что удалось сделать, в этом прототипе? Что не удалось?
Первое и главное - работает. Микроконтроллер MDR32F9Q2I Cortex-M3 доступен для программирования.
Второе, получен первоначальный опыт по собиранию цепочки от идеи до реализации. Получено представление о подводных камнях, на всех этапах - веду список косяков, а их вылезло много и это хорошо.

Итак, плата вышла компактной - 49.5 мм х 80 мм. Все детали, за исключением разъемов и гребешков - SMD т.е. поверхностного монтажа, в том числе кварцы и кнопки.


Сканированное изображение платы MDR32-Solo

Схему выложил на диск yandex. т.к. blogger стал урезать размеры файлов. MDR32-Solo-схема

Номиналы многих деталей я не указывал, мне было так проще, да и схема пока непричёсанная.
Да и в принципе, в спецификации говориться о номиналах.

В принципе, всё минимально нужное есть, а чего нет, то это пойдет в следующую версию, по
результатам тестирования использования.

Однако, для работы с платой, нужны инструменты. Из минимума - USB-UART TTL адаптер, чтобы программировать через порт UART. Либо, что более предпочтительно - рекомендуемый JTAG адаптер. У меня в наличии - не совсем рекомендуемый и полурабочий адаптер J-Link фирмы Segger, который в среде Keil работает и отлаживает, а вот отдельно прошить контроллер не получается. Также есть Busblaster, который я подключил к известному программатору milprog, но там только стирание памяти, а прошивка не работает. Куча полурабочего хлама.

Порты ввода-вывода

Все порты (A..F) микроконтроллера выведены на гребёнку. Гребешки подписаны альтернативными функциями. Дополнительно выделены гребешки-порты UART2, SSP1. На контактные площадки выведены UART1, CAN1.

Порт I2С содержит отключаемые (через запаиваемый разрыв) резисторы подтяжки к питанию.

USB подключен к разъёму USB B-mini.

Отладка

Т.к. плата, по моему разумению, отладочная, то на ней присутствует отладочный интерфейс.
Основным интерфейсом отладки выбран JTAG_A, который выведен на стандартный 20-pin колодку. Выбор не очень удачный. Однако присутствуют подтягивающие резисторы.
Дополнительным интерфейсом является JTAG_B, контакты которого просто выведены на площадки, без подтягивающих резисторов, а также доступны на гребёнке.

SWD-интерфейсы не выделены, т.к. интерфейс неизвестен мне.
На 3-штыревую колодку выведен UART2 для подключения к переходнику USB-UART TTL, чтобы использовать Uart-загрузчик.

Всё работает.

Питание платы
Основной источник питания - линейный регулятор, IC1, напряжением 3.3В, преобразующий питание шины USB 5В в требуемые микроконтроллером 3.3В.

Альтернативный вариант, использование внешнего питания 3.3В через контактные площадки, на обратной стороне платы. Этот вариант удобен для быстрого подключения микроконтроллера, с минимальной обвязкой и имеющимся источником питания.

Дополнительный вариант, на случай отсутствия деталей в корпусе SOT223, на задней стороне есть площадка для регулятора на 5В IC2 в корпусе TO252, также его можно использовать и как 3.3В. Однако, в любом случае, питание с USB, должно быть отрезано от схемы - для этого используется предохранитель F1, его надо выпаять из схемы и впаять в предусмотренное место альтернативного источника.

В правом верхнем углу присутствует штыревой выход основного питания и земля.

На обратной стороне присутствует площадка для светодиодного индикатора наличия питания. Тут у меня, спустя полтора месяца возникает вопрос, а почему не на лицевой стороне и он остаётся без ответа.

Доп. оборудование
Присутствует штыри для выбора режима загрузки. Режим загрузки задаётся комбинацией Boot 0 1 2. В спецификации это называется Mode[2:1:0].

Присутствуют тактовые кнопки RESET, WAKE, SLEEP.

Присутствует площадка под microSD адаптер, позволяет запаять адаптер и использовать microSD карты в режиме SPI.

Присутствует площадка уровня согласования. Позволяет согласовать напряжения микроконтроллера и 5В периферии. Расположена в области выводов I2C.

Присутствует батарейный адаптер, позволяющий поддерживать часы реального времени в микроконтроллере. Также присутствует отключаемый кварц на 32768 Гц.

Присутствует площадка для LED индикатора, подключённого через разрыв к порту A.1 и площадка LED индикатора подключённого к порту С.3.

С помощью контактных площадок, я решил проверить идею, о том, что иногда проще подпаять проводки, чем искать разъёмы.

Заключение

В следующих постах, опишу как первоначально запрограммировать микроконтроллер MDR32F92I на ассемблерах armasm и gnu assembler.
Оказывается, 0805 - это "огромные резисторы".
Микроконтроллеру Миландр MDR32F9Q2I для любительских нужд - быть. Очень неплохо для старта. Обвязка практически не нужна, ну разве что конденсаторы по питанию, да кнопка ресет, да выбор boot. Программируется стандартными средствами.

После запаивания имеющихся контроллеров, осталась небольшая кучка пустых плат, так что если кому резко захочется и надо - обращайтесь.

Жалею только, что не вывел JTAG_B на 20 контактный разъём.

P.S. Фото сделаны вебкамерой.
 

вторник, 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 имя