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

Вопросы по определенному микроконтроллеру необходимо задавать в соответствующем подразделе.
g-coder
Сообщения: 13
Зарегистрирован: 2014-авг-08 10:42
Откуда: ВНИИЭМ

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

Сообщение g-coder » 2015-фев-26 17:49

Добрый день.
Хочу поделиться опытом сборки ПО для микроконтроллера (отладочной платы) 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.
На скорую руку настройки выглядят следующим образом
Открыть
Изображение
Закрыть


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

sguwenka
Сообщения: 53
Зарегистрирован: 2014-мар-04 08:52
Откуда: г. Зеленоград ЗАО "НТЦ ЭЛИНС"
Контактная информация:

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

Сообщение sguwenka » 2015-фев-26 18:07

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

Yurock
Сообщения: 53
Зарегистрирован: 2015-фев-06 11:48

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

Сообщение Yurock » 2015-фев-27 08:29

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

sguwenka
Сообщения: 53
Зарегистрирован: 2014-мар-04 08:52
Откуда: г. Зеленоград ЗАО "НТЦ ЭЛИНС"
Контактная информация:

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

Сообщение sguwenka » 2015-фев-27 09:29

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

Yurock
Сообщения: 53
Зарегистрирован: 2015-фев-06 11:48

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

Сообщение Yurock » 2015-фев-27 10:16

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

almaz_1c
Сообщения: 18
Зарегистрирован: 2015-апр-10 22:42

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

Сообщение almaz_1c » 2015-апр-13 14:57

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


DeVdistress
Сообщения: 4
Зарегистрирован: 2015-апр-27 11:09

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

Сообщение DeVdistress » 2015-апр-27 14:06

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

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

Mark
Сообщения: 23
Зарегистрирован: 2012-окт-03 14:40

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

Сообщение Mark » 2015-май-07 15:46

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

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

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

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

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

Cha1000000
Сообщения: 1
Зарегистрирован: 2016-янв-27 13:16
Организация: ООО "ВАИС-Техника"

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

Сообщение Cha1000000 » 2016-янв-27 13:24

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

ЧумА
Сообщения: 512
Зарегистрирован: 2009-сен-21 12:39

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, но они (кажется) одинаковые.

altair
Сообщения: 1
Зарегистрирован: 2016-апр-20 09:05
Организация: ТУлГУ

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

Сообщение altair » 2016-апр-20 09:39

Доброго времени суток. Прохожу путь описанный автором темы. Возникла проблема на этапе "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

Аватара пользователя
kravitz
Сообщения: 65
Зарегистрирован: 2014-дек-09 15:26

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

Сообщение kravitz » 2016-апр-21 12:56

altair писал(а):как можно добавить данные плагины в eclipse?

Вам сюда: How to install GNU ARM Eclipse?

andrew.borisov
Сообщения: 5
Зарегистрирован: 2016-сен-12 08:50
Организация: crism

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

Сообщение andrew.borisov » 2016-сен-23 12:00

Подскажите как правильно настроить проект для работы с J-Link отладчиком.
Процессор 1986ВЕ91Т

_Desh_
Сообщения: 35
Зарегистрирован: 2014-окт-10 18:12

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

Сообщение _Desh_ » 2018-мар-18 17:45

Имею настроенную среду 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, т.е. невосстановимое исключение, из которого невозможно выйти программным способом. Дальше буду копать в сторону обработчиков исключений.

Ответить

Вернуться в «32-разрядные микроконтроллеры (1986ВЕ9х, 1986ВЕ1Т, 1986ВЕ2х, 1986ВЕ3Т, 1986ВЕ4У, 1986ВЕ8Т, 1923ВК014)»