Страница 1 из 2

Eclipse +ARM GCC+ 1986ВЕ1Т + OpenOCD + Olimex ARM-USB

Добавлено: 2015-фев-26 17:49
g-coder
Добрый день.
Хочу поделиться опытом сборки ПО для микроконтроллера (отладочной платы) 1986ВЕ1Т в среде разработки Eclipse, с использованием в качестве компилятора ARM-GCC и дебагера OpenOCD, работающего в связке с JTAG эмулятором от Olimex, под операционной системой Windows 7.
Данная инструкция предполагает установку на "голую" систему.
Весь необходимый инструментарий прилагается в архиве.

1. Установим драйвера для Olimex ARM-USB
Для этого воспользуемся программой Zadig. В выпадающем списке выбираем наш JTAG эмулятор и жмём Install Driver. Повторяем действие для Interface1.
Если установка драйвера завершилась неудачей, то перезагружаемся, удаляем устройство из диспетчера и ставим заново.
Открыть
Изображение
Закрыть


2. Копируем папку с OpenOCD в место, путь которого не содержит кириллических символов(на всякий случай).
Теперь можно проверить, видит ли дебагер нашу отладочную плату и наш микроконтроллер. Для этого открываем консоль в директории с исполнимыми файлами OpenOCD и запускаем с параметрами эмулятора и целевой платформы. Для случая с эмулятором ARM-USB-TINY-H необходимо ввести строчку: -f interface/olimex-arm-usb-tiny-h.cfg -f target/1986ве1т.cfg
Открыть
Изображение
Изображение
Закрыть


3. Устанавливаем ARM GNU Tools и msys.
В конце установки gcc ставим галочку Add path to environment variable. Путь к бинарникам MSYS, возможно придётся прописать вручную.
Открыть
Изображение
Закрыть


4. Распаковываем Eclipse и запускаем, установив перед этим Java Runtime Environment.

5. Настроим пути до OpenOCD
Заходим Window-> Preferences -> Run/Debug -> String Substitution, прописываем имя исполнимого файла и путь к нему.
Открыть
Изображение
Закрыть


6. Устанавливаем ARM GNU Eclipse plugin.
Для этого нажимаем Help->Install New Software
Открыть
Изображение
Закрыть

Add
Открыть
Изображение
Закрыть

В поле Location вводим http://gnuarmeclipse.sourceforge.net/updates и устанавливаем
Открыть
Изображение
Закрыть


7. Ипортируем пример проекта в среду и пробуем собрать.
Для новых проектов можно использовать этот пример, либо минимальный набор необходимых файлов, который включает в себя ld-скрипты и startup файл. В данном проекте startup написан на си, но я планирую переписать его на ассемблере.

8. Настраиваем отладку.
Для этого заходим в Debug Configurations
Открыть
Изображение
Закрыть

Выбираем GDB OpenOCD Debugging и создаём новую конфигурацию
Открыть
Изображение
Закрыть

Во вкладке Main указываем название проекта и elf-файл
Открыть
Изображение
Закрыть

Во вкладке Debugger в OpenOCD Config Options добавляем -f interface/olimex-arm-usb-tiny-h.cfg -f target/1986ве1т.cfg
Открыть
Изображение
Закрыть

Сохраняем конфигурацию, и можно пробовать запустить отладку.

Для прошивки без отладчика можно создать новую Run Configuration.
На скорую руку настройки выглядят следующим образом
Открыть
Изображение
Закрыть


Ссылка на архив

Re: Eclipse +ARM GCC+ 1986ВЕ1Т + OpenOCD + Olimex ARM-USB

Добавлено: 2015-фев-26 18:07
sguwenka
Прошли аналогичный путь, должен сказать - достаточно тернистый. Зато удобсто использования - ууух! ;)
Хочу сказать - с точки зрения целостности данных для проекта, имеет смысл конфиги для openocd хранить локально с проектом и применять их явным образом. Тем более, там же можно создавать свои функции для работы в openocd.
PS: картинки не отображаются...

Re: Eclipse +ARM GCC+ 1986ВЕ1Т + OpenOCD + Olimex ARM-USB

Добавлено: 2015-фев-27 08:29
Yurock
Добавлю одно, ни от кого не слышал и нигде не видел. Есть (правда немного не доделаны) файлы с описанием регистров для камней 1986ВЕ9х и 1986ВЕ1Т для плагина EmbSysRegister, что помогает при отладке.

Re: Eclipse +ARM GCC+ 1986ВЕ1Т + OpenOCD + Olimex ARM-USB

Добавлено: 2015-фев-27 09:29
sguwenka
Да вот Миландровцам бы этот файл создать самим и отдать в общее пользование. По сути, XML ведь выгрузить просто надо из собственных электронных данных...

Re: Eclipse +ARM GCC+ 1986ВЕ1Т + OpenOCD + Olimex ARM-USB

Добавлено: 2015-фев-27 10:16
Yurock
Ну тут надо соблюдать определённую структуру, да ещё и описание, сам пока доделываю, часть описания в документации, часть в SPL. Делал сначала для плагина Coocox, но в итоге с ним пока несложилось, сконвертировал для Eclipe.

Re: Eclipse +ARM GCC+ 1986ВЕ1Т + OpenOCD + Olimex ARM-USB

Добавлено: 2015-апр-13 14:57
almaz_1c
Добрый день! Проделал все по инструкции и столкнулся с проблемой. Нет возможности проводить отладку программ, которые используют прерывания. В моей программе используется системный таймер. при отладке, когда происходит прерывание дебаггер выдает строку:
"0x0000001c ?? ()" и дальше никуда не двигается - при вводе команды "step" повторно высылает эту ошибку. Может кто-нибудь сталкивался с подобным?

Re: Eclipse +ARM GCC+ 1986ВЕ1Т + OpenOCD + Olimex ARM-USB

Добавлено: 2015-апр-15 15:22
almaz_1c

Re: Eclipse +ARM GCC+ 1986ВЕ1Т + OpenOCD + Olimex ARM-USB

Добавлено: 2015-апр-27 14:06
DeVdistress
sguwenka писал(а):PS: картинки не отображаются...

Картинки в спойлерах отображаются правильно. Ваша причина - ваши админы :)

Re: Eclipse +ARM GCC+ 1986ВЕ1Т + OpenOCD + Olimex ARM-USB

Добавлено: 2015-май-07 15:46
Mark
g-coder писал(а):Для новых проектов можно использовать этот пример, либо минимальный набор необходимых файлов, который включает в себя ld-скрипты и startup файл. В данном проекте startup написан на си, но я планирую переписать его на ассемблере.

Переписывать необязательно, здесь на форуме есть ссылка на готовый в ассемблере и скрипт компоновщика полноценный прилагается - viewtopic.php?p=13498#p13498

DeVdistress писал(а):
sguwenka писал(а):PS: картинки не отображаются...

Картинки в спойлерах отображаются правильно. Ваша причина - ваши админы :)

Картинки, если что, есть в архиве.

Re: Eclipse +ARM GCC+ 1986ВЕ1Т + OpenOCD + Olimex ARM-USB

Добавлено: 2016-янв-27 13:24
Cha1000000
Доброго времени суток!
Подскажите пожалуйста, как можно используя OpenOCD выкачать из памяти образ прошивки?
Заранее спасибо!

Re: Eclipse +ARM GCC+ 1986ВЕ1Т + OpenOCD + Olimex ARM-USB

Добавлено: 2016-янв-27 14:21
ЧумА
Для ВЕ9х из консоли Винды:
openocd -f interface/ftdi/olimex-jtag-tiny.cfg -f read_flash_1986.cfg
Предварительно состряпать файл read_flash_1986.cfg с содержимым
source [find target/mdr32f9q2i.cfg]
"init"
"halt"
dump_image rd_flash.bin 0x08000000 0x20000
"shutdown"
Для ВЕ1 надо, на первый взгляд, 0x08000000 заменить на 0x0. И надо подменить mdr32f9q2i.cfg на соответствующий для ВЕ1.
Что касается olimex-jtag-tiny.cfg, то посмотреть соответствующий для ARM-USB, но они (кажется) одинаковые.

Re: Eclipse +ARM GCC+ 1986ВЕ1Т + OpenOCD + Olimex ARM-USB

Добавлено: 2016-апр-20 09:39
altair
Доброго времени суток. Прохожу путь описанный автором темы. Возникла проблема на этапе "6. Устанавливаем ARM GNU Eclipse plugin.
Для этого нажимаем Help->Install New Software"
установились все плагины кроме:
-GNU ARM C/C++ J-Link Debugging
-GNU ARM C/C++ OpenOCD Debugging
-GNU ARM C/C++ QEMU Debugging
При установке eclipse пишет Cannot complete the install because one or more required could not be found.
как можно добавить данные плагины в eclipse? использую eclipse luna

Re: Eclipse +ARM GCC+ 1986ВЕ1Т + OpenOCD + Olimex ARM-USB

Добавлено: 2016-апр-21 12:56
kravitz
altair писал(а):как можно добавить данные плагины в eclipse?
Вам сюда: How to install GNU ARM Eclipse?

Re: Eclipse +ARM GCC+ 1986ВЕ1Т + OpenOCD + Olimex ARM-USB

Добавлено: 2016-сен-23 12:00
andrew.borisov
Подскажите как правильно настроить проект для работы с J-Link отладчиком.
Процессор 1986ВЕ91Т

Re: Eclipse +ARM GCC+ 1986ВЕ1Т + OpenOCD + Olimex ARM-USB

Добавлено: 2018-мар-18 17:45
_Desh_
Имею настроенную среду GNU MCU Eclipse, работаю с 1986ВЕ1Т, Olimex ARM-USB-OCD-H и OpenOCD v0.10. Файл конфигурации для отладчика взят из дистрибутива OpenOCD без изменений, просто для удобства переименован. Отладка и программирование в принципе работают, но имеется следующий неприятный момент - первый раз отладка не стартует, и вылетает ошибка вида:

Код: Выделить всё

Error: MDR1986VE1T.cpu -- clearing lockup after double fault
Polling target MDR1986VE1T.cpu failed, trying to reexamine
Info : MDR1986VE1T.cpu: hardware has 4 breakpoints, 2 watchpoints
Error: address + size wrapped (0xfffffffe, 0x00000004)
Если после этого сделать в отладке Terminate, потом ресетнуть плату и сразу же опять стартовать отладку, то она работает нормально. После завершения отладки следующий цикл опять так же. Неудобно, однако. Может кто сталкивался и если да, то как решил?

Строка для запуска отладки:

Код: Выделить всё

-f interface/ftdi/olimex-arm-usb-ocd-h.cfg -f cfg/MDR1986VE1T.cfg
Также используется semihosting.

UPD Semihosting не при чем, пробовал отключать в настройках отладчика и удалять все обращения к функциям, не помогло. Также игрался с задержками ресета в скрипте OpenOCD, пробовал делать двойной ресет, все впустую. Выяснил, что адрес 0xfffffffe - это Lockup State, т.е. невосстановимое исключение, из которого невозможно выйти программным способом. Дальше буду копать в сторону обработчиков исключений.