Страницы

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

среда, 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/





※※※







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

Bus Blaster v.2 как UART-TTL

Использование JTAG-отладчика BusBlaster v.2 в качестве UART-TTL адаптера

BusBlaster v.2 - небольшая плата открытого JTAG-отладчика, созданная на сайте DangerousPrototypes.com. В наличии имеется вторая версия платы.
Проверку и настройку производил в системе Windows 7 Home Basic. В Ubuntu Linux 12.04, работает.
Планируемое использование - отладка ARM-микроконтроллеров Cortex-M3, в том числе Миландр MDR32F9Q2I.

JTAG-отладчик основан на распространённой микросхеме FTDI FT2232H - мост USB-Serial. Из особенностей - применения CPLD микросхемы, в качестве согласующего логические уровни буфера, с возможностью перепрограммирования, для изображения из себя различных jtag-отладчиков. 

BusBlaster второй версии может быть использован как отладочный инструмент, для отладки встроенной микросхемы программируемой логики CPLD.

Сайт поддержки отладчика: http://dangerousprototypes.com/docs/Bus_Blaster 

Руководство по настройке программы отладчика urJTAG (en): http://dangerousprototypes.com/docs/Bus_Blaster_urJTAG_guide

Руководство по настройке программы отладчика OpenOCD (en): http://dangerousprototypes.com/docs/Bus_Blaster_OpenOCD_guide

Заметка по смене VID/PID у EEPROM памяти BusBlaster http://dangerousprototypes.com/docs/Bus_Blaster_custom_USB_VID_and_PID

Страница микросхемы FT2232H на сайте производителя: http://www.ftdichip.com/Products/ICs/FT2232H.htm

Bus Blaster v.2. Thank to DangerousPrototypes.com

Идентификационные данные отладчика на шине USB:
VID = 0x0403 (FTDI)
PID = 0x6010 (FT2232H)


Для подключения и проверки работоспособности отладчика BusBlaster надо выполнить несколько шагов:


1. Установка драйверов микросхемы FT2232H. Это могут быть фирменные драйверы (фирмы FTDI) http://www.ftdichip.com/Drivers/D2XX.htm , либо открытые libUSB http://sourceforge.net/projects/libusb-win32/.

2. Установить программы отладчиков urJTAG или OpenOCD, или всё вместе.

3. Установка программы отладчика urjtag. 
Во время установки, надо указать путь c:\urjtag, вместо C:\Program Files\UrJTAG, иначе установщик не работает.
Лучше использовать исправленную версию, с сайта DangerousPrototypes.com

4. Соединение JTAG отладчика и отлаживаемого устройства. Соединение должно происходить сигнал в сигнал, как подписано.
TDO - TDO
TDI - TDI
TCK - TCK
TMS - TMS
TRST - TRST
Обязательно! Питание с отлаживаемого (целевого) устройства, должно подаваться на микросхему буфера, через VTG пин JTAG разъёма, т.к. часть микросхемы буфера не запитана.



5. Проверка возможности использования BusBlaster v.2 , как обычного UART-TTL

В микросхеме FT2232H присутствуют выводы TXD-RXD (38,39) Обозначаются также BDBUS0, BDBUS1, которые выведены на разъём JP1 (контакты 2 - TCK,3 - TDI).

Итак, в моей системе Windows, рабочий COM порт оказался 25 (их ведь 2 в микросхеме), настройка 9600-8-1. Замкнутые выводы RX-TX на разъёме JP1 и получили простой порт для обмена данными.

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

6. Установил исправленную версию urjtag и стала срабатывать опция interface=1, на которой определяется устройство - микросхема CPLD. Это уже радует.
Перед использованием положить bsdl файл микросхемы CPLD (или иной) в папку c:\urjtag
7. Команды выполняемые в программе: urjtag-rev11
jtag> cable jtagkey interface=1
jtag> bsdl path c:\urjtag
jtag> detect
IR length: 8
Chain length: 1
Device Id: 00000110111000011100000010010011 (0x06E1C093)
Filename: c:/urjtag/XC2C32A.bsd
jtag>




8. Прошить в CPLD последний вариант буфера Jtagkey. Т.е. теперь отладчик совместим с отладчиком JTAGkey.

9. Для быстрой проверки работоспособности отладчика с разным ПО, я подключаю его JTAG-порт, к порту JTAG на пинах JP1, и устанавливаю JP4 (подаю питание). Если всё работает, то определяется IDCODE Xilinx.

Небольшое описание платы отладчика на память.


BusBlaster v.2 - расположение компонентов



JP1 - Выход JTAG, напрямую с микросхемы FT2232H? Для чего?
Используется как подсоединение второго порта к jtag- интерфейсу буферной микросхемы CPLD. Может использоваться как UART-TTL.
JP2 - Неиспользуемые выводы
JP3 - Микросхема памяти EEPROM (Хранение идентификаторов USB VID/PID)
JP4 - Подача питания 3.3V. При снятой перемычке питание на микросхему буфера (часть микросхемы) подаётся от отлаживаемого устройства. При установленной перемычке - питание берется у BusBlaster для питания отлаживаемого устройства, а также для питания микросхемы буфера (IO).

JTAG - 20-выводной разъём соответствует стандарту JTAG ARM 20 pin

XC2C32A CPLD - XC2C32A CoolRunner-II CPLD, микросхема программируемой логики, используется в качестве буферной, для согласования логических уровней с отлаживаемым устройством (1.8 - 3.3В).

FT2232H - микросхема моста USB-Serial, выполняющая основную работу.

Из плюсов
1. Буферная согласующая микросхема
2. Поддержка OpenOCD
3. Отладочная плата для Xilinx CPLD


Из недостатков

1. Не все возможные выводы разведены, т.к. что потенциал микросхемы FTDI FT2232H слегка ограничен. Например, не получилось сделать 2 порта. Может потом.