Руководство по настройке и использованию открытого ПО

32-разрядные микроконтроллеры разработки ОАО "НИИЭТ"

Модераторы: pip, _sva_

Руководство по настройке и использованию открытого ПО

Сообщение bkolbov » 14 дек 2015, 14:22

Целью данного руководства является демонстрация одного из возможных путей организации полноценного рабочего окружения
на основе открытого ПО для взаимодействия с микроконтроллерами на базе ядра ARM Cortex-M4 производства ОАО «НИИЭТ».

В данном случае для реализации среды разработки предлагается использовать:
• Qt Creator 3.4.2 – популярная и довольно мощная среда разработки на C/C++ с открытым исходным кодом,
на основе которой и будет построено рабочее окружение;
• GCC ARM Embedded 4.9 – открытый компилятор для ARM;
• OpenOCD – программа, необходимая для программирования и отладки,
в которую была добавлена поддержка микроконтроллеров НИИЭТ на базе ядра ARM Cortex-M4.

В качестве аппаратного отладчика в примерах использовался St-Link, как один из наиболее дешевых и распространённых,
но OpenOCD также позволяет использовать и другие отладочные устройства (полная информация в официальной документации на утилиту).
Вопрос установки отладчиков в данном руководстве не поднимается – подразумевается, что драйвера на отладчик установлены и
все необходимые настройки сделаны.

Рекомендации по настройке окружения ориентированы на микроконтроллер К1921ВК01Т и 32-битную версию Windows 7, но практически все рекомендации,
за исключением этапа установки необходимых утилит, справедливы и для настройки под Linux или Mac OS, так как все использованное ПО – кроссплатформенное.

Архив с последней версией руководства и сопутствующими материалами прикреплен к сообщению.
Вложения
opensource_guide_160113.zip
(6.33 Мб)
bkolbov
 
Сообщения: 42
Зарегистрирован: 14 дек 2015, 11:37
Откуда: НИИЭТ

Re: Руководство по настройке и использованию открытого ПО

Сообщение Лашкевич » 30 дек 2015, 13:48

Добрый день.
Альтернативой использованию QT Creator является использование Eclipse. Мы на фирме разрабатываем ПО на Eclipse и нам он кажется немного более удобным по сравнению с QT Creator. Мы сделали готовую сборку (http://motorcontrol.ru/production/soft/vector-ide/) Eclipse+GCC+OpenOCD+GNU ARM Plugin, которая теоретически должна работать "из коробки" с JTAG эмулятором j-link или его клоном.
Более подробно написали в отдельной теме: http://forum.niiet.ru/viewtopic.php?f=37&t=491.
Предлагаем вам попробовать эту среду, и, если получится, подставить свой конфигурационный файл для St-Link и свой OpenOCD. Если заработает, можно сделать сборку еще более универсальной.
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/
Аватара пользователя
Лашкевич
 
Сообщения: 40
Зарегистрирован: 13 май 2015, 13:10
Откуда: Москва

Re: Руководство по настройке и использованию открытого ПО

Сообщение Andrew » 19 фев 2016, 17:53

Здравствуйте, коллеги!

С помощью коллег установил и настроил eclipse для программирования процессора k1921vk01t. К eclipse подключил OpenOCD.
При запуске OpenOCD выдает лог, в котором мелькают сообщения ERROR.
Интересует знать что за ошибки и прояснить как их можно устранить. Вполне возможно что не установил где-то галочку в настройках.
Журнал вывода OpenOCD прилагаю.

Console out OpenOCD 0.10.0-dev | Показать
Open On-Chip Debugger 0.10.0-dev-00189-g554313b-dirty (2016-01-12-08:19)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "jtag". To override use 'transport select <transport>'.
adapter speed: 2000 kHz
adapter_nsrst_delay: 100
jtag_ntrst_delay: 100
none separate
cortex_m reset_config sysresetreq
trst_only separate trst_push_pull
adapter speed: 1500 kHz
Info : No device selected, using first device.
Info : J-Link ARM V8 compiled Nov 28 2014 13:44:46
Info : Hardware version: 8.00
Info : VTarget = 3.274 V
Info : clock speed 1500 kHz
Info : JTAG tap: k1921vk01t.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4)
Info : k1921vk01t.cpu: hardware has 6 breakpoints, 4 watchpoints
Info : JTAG tap: k1921vk01t.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4)
k1921vk01t.cpu: target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc
Error: JTAG-DP STICKY ERROR
Error: Failed to read memory at 0xf0000004
Info : unknown chipid, assuming K1921VK01T
flash 'niietcm4' found at 0x00000000
Started by GNU ARM Eclipse
Info : accepting 'gdb' connection on tcp/3333
Error: address + size wrapped(0xfffffffe, 0x00000004)
Error: JTAG-DP STICKY ERROR
Error: Failed to read memory at 0xfffff000
Info : JTAG tap: k1921vk01t.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4)
k1921vk01t.cpu: target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc
semihosting is enabled
Error: address + size wrapped(0xfffffffe, 0x00000004)
Error: JTAG-DP STICKY ERROR
Error: Failed to read memory at 0xfffff000
Info : JTAG tap: k1921vk01t.cpu tap/device found: 0x4ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x4)
k1921vk01t.cpu: target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0xfffffffe msp: 0xfffffffc, semihosting
===== arm v7m registers
(0) r0 (/32): 0x00000000
(1) r1 (/32): 0x00000000
(2) r2 (/32): 0x00000000
(3) r3 (/32): 0x00000000
(4) r4 (/32): 0x00000000
(5) r5 (/32): 0x00000000
(6) r6 (/32): 0x00000000
(7) r7 (/32): 0x00000000
(8) r8 (/32): 0x00000000
(9) r9 (/32): 0x00000000
(10) r10 (/32): 0x00000000
(11) r11 (/32): 0x00000000
(12) r12 (/32): 0x00000000
(13) sp (/32): 0xFFFFFFFC
(14) lr (/32): 0xFFFFFFFF
(15) pc (/32): 0xFFFFFFFE
(16) xPSR (/32): 0x01000000
(17) msp (/32): 0xFFFFFFFC
(18) psp (/32): 0x00000000
(19) primask (/1): 0x00
(20) basepri (/8): 0x00
(21) faultmask (/1): 0x00
(22) control (/2): 0x00
(23) d0 (/64): 0x0000000000000000
(24) d1 (/64): 0x0000000000000000
(25) d2 (/64): 0x0000000000000000
(26) d3 (/64): 0x0000000000000000
(27) d4 (/64): 0x0000000000000000
(28) d5 (/64): 0x0000000000000000
(29) d6 (/64): 0x0000000000000000
(30) d7 (/64): 0x0000000000000000
(31) d8 (/64): 0x0000000000000000
(32) d9 (/64): 0x0000000000000000
(33) d10 (/64): 0x0000000000000000
(34) d11 (/64): 0x0000000000000000
(35) d12 (/64): 0x0000000000000000
(36) d13 (/64): 0x0000000000000000
(37) d14 (/64): 0x0000000000000000
(38) d15 (/64): 0x0000000000000000
(39) fpscr (/32): 0x00000000
===== Cortex-M DWT registers
(40) dwt_ctrl (/32)
(41) dwt_cyccnt (/32)
(42) dwt_0_comp (/32)
(43) dwt_0_mask (/4)
(44) dwt_0_function (/32)
(45) dwt_1_comp (/32)
(46) dwt_1_mask (/4)
(47) dwt_1_function (/32)
(48) dwt_2_comp (/32)
(49) dwt_2_mask (/4)
(50) dwt_2_function (/32)
(51) dwt_3_comp (/32)
(52) dwt_3_mask (/4)
(53) dwt_3_function (/32)
Error: k1921vk01t.cpu -- clearing lockup after double fault
Polling target k1921vk01t.cpu failed, trying to reexamine
Info : k1921vk01t.cpu: hardware has 6 breakpoints, 4 watchpoints
Error: address + size wrapped(0xfffffffe, 0x00000004)
Error: JTAG-DP STICKY ERROR
Error: Failed to read memory at 0xfffff000
Error: JTAG-DP STICKY ERROR
Error: Failed to read memory at 0xfffffff8
Error: JTAG-DP STICKY ERROR
Error: Failed to read memory at 0xfffffff4
Error: JTAG-DP STICKY ERROR
Error: Failed to read memory at 0xfffffff8
Error: JTAG-DP STICKY ERROR
Error: Failed to read memory at 0xfffffff8
Andrew
 
Сообщения: 2
Зарегистрирован: 19 фев 2016, 17:34

Re: Руководство по настройке и использованию открытого ПО

Сообщение bkolbov » 20 фев 2016, 08:57

Andrew писал(а):Здравствуйте, коллеги!

С помощью коллег установил и настроил eclipse для программирования процессора k1921vk01t. К eclipse подключил OpenOCD.
При запуске OpenOCD выдает лог, в котором мелькают сообщения ERROR.
Интересует знать что за ошибки и прояснить как их можно устранить. Вполне возможно что не установил где-то галочку в настройках.
Журнал вывода OpenOCD прилагаю.

Микроконтроллер при этом программируется и отлаживается?
bkolbov
 
Сообщения: 42
Зарегистрирован: 14 дек 2015, 11:37
Откуда: НИИЭТ

Re: Руководство по настройке и использованию открытого ПО

Сообщение Andrew » 20 фев 2016, 12:48

bkolbov писал(а):
Andrew писал(а):При запуске OpenOCD выдает лог, в котором мелькают сообщения ERROR.
Интересует знать что за ошибки и прояснить как их можно устранить.
Журнал вывода OpenOCD прилагаю.

Микроконтроллер при этом программируется и отлаживается?


Да микроконтроллер программируется.
Хочу узнать почему возникают ошибки. Из за чего?
При использовании платной среды, например IAR, ошибки также возникают?
При использовании Qt Creator такие же ошибки вылезут?
Если ошибки выдает openOCD тогда они должны быть во всех средах программирования.
У меня нет возможности установить IAR. Работать приходится только на свободных средах.

Для меня важно полностью разобраться с микроконтроллером. Спасибо за ответы.
Andrew
 
Сообщения: 2
Зарегистрирован: 19 фев 2016, 17:34

Re: Руководство по настройке и использованию открытого ПО

Сообщение bkolbov » 20 фев 2016, 14:48

Andrew писал(а):Да микроконтроллер программируется.
Хочу узнать почему возникают ошибки. Из за чего?
При использовании платной среды, например IAR, ошибки также возникают?
При использовании Qt Creator такие же ошибки вылезут?
Если ошибки выдает openOCD тогда они должны быть во всех средах программирования.
У меня нет возможности установить IAR. Работать приходится только на свободных средах.


Ошибки эти генерирует openOCD и связаны они с некоторыми ограничениями GDB. С другими средами, такими как IAR, KEIL это не связано.
Сама ошибка является безвредной и может просто игнорироваться. Подробнее о механизме возникновения можно прочитать в прикрепленном документе - там сохраненная страница из кэша гугла с подобным вашему вопросом и подробным ответом одного из разработчиков OpenOCD.
Вложения
openocd_error.pdf
(104.66 Кб)
bkolbov
 
Сообщения: 42
Зарегистрирован: 14 дек 2015, 11:37
Откуда: НИИЭТ

Re: Руководство по настройке и использованию открытого ПО

Сообщение c2n » 01 фев 2017, 09:32

Есть проблемы при попытке сделать "по образу и подобию" для QTCreator 4.2.x

При сборке отстреливает ошибками...
С:gcc/bin/.../lib/armv7e-m/fpu/\libc_nano.a(lib_a-exit.o): In function 'exit'
Exit.c ....Undefined reference to _exit
Collect2.exe error.. ld returned 1 exit status...

Подозреваю что для более свежей кутэшки надо все все все переделывать, вот только как? - не соображу
c2n
 
Сообщения: 10
Зарегистрирован: 28 сен 2015, 22:41

Re: Руководство по настройке и использованию открытого ПО

Сообщение bkolbov » 01 фев 2017, 10:13

c2n писал(а):Есть проблемы при попытке сделать "по образу и подобию" для QTCreator 4.2.x

При сборке отстреливает ошибками...
С:gcc/bin/.../lib/armv7e-m/fpu/\libc_nano.a(lib_a-exit.o): In function 'exit'
Exit.c ....Undefined reference to _exit
Collect2.exe error.. ld returned 1 exit status...

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


Добрый день!

Судя по логу, ошибка относится скорее к компилятору, а не к Qt.
И проблема, вероятнее всего во флагах линкера и компилятора: cpp.linkerFlags и cpp.includePaths. Пробовали флаги менять/комментировать? Версия компилятора свежая?
bkolbov
 
Сообщения: 42
Зарегистрирован: 14 дек 2015, 11:37
Откуда: НИИЭТ

Re: Руководство по настройке и использованию открытого ПО

Сообщение c2n » 01 фев 2017, 11:55

Версии компилятора - последние, самые свежие. Брал еще рекомендованную - результат тот же.

делаю по инструкции.

Версия QT-Creator 3.x.x - по ссылке из руководства - при нажатии ctrl+B - создает файлы прошивки, ошибки не отстреливает.
Версия QT-Creator 4.x.x - последняя версия с сайта - при нажатии ctrl+B - отстреливает ошибками.

Отличие при настройках для последней версии QT от "мурзилки" и что тыкалось.
1. предлагается указать компилятор для языка С и С++, тоесть раздельно. В обоих случаях указывал и g++ и с++ и cpp, и в разных комбинациях. В общем случае - ошибки при нажатии ctrl+B - схожи. То функции close, то функции exit...
2. В настройках вкладка QBS - предлагает сама вносить какие-то параметры. Методом высоконаучного тыка -пока безрезультатно, документация на буржуйском, под линукс в основном..понимания с моей стороны, так на лекциях по матану в гиганской лектории и я на галерке - тоесть нифига "не понятно".
3. Пробовал комментировать в файле QBS древа проекта разные параметры - ситуация - не меняется.

Есть предположение, что именно сами настройки компоновщика (QBS) - разные, и идеология для "bare metall" очень сильно разнятся для разных версий QT-Creator'a, и нельзя просто взять и использовать файлы предыдущих версий...

Так же пока неудачно заканчиваются попытки повторить и эти примеры:
https://habrahabr.ru/post/222877/
https://www.bartslinger.com/cx-10-quadc ... qtcreator/
http://we.easyelectronics.ru/STM32/razr ... eator.html
Впрочем остальные примеры в сети - не сильно отличаются друг от друга...

Хотел попробовать через cmake какой нибудь - но тоже не понял как... видимо я туп как дэрэво и буду баобабом :)))

еще проблемка... | Показать
есть еще и второй момент - GDB -- не запускается, даже для версии по мурзилке, но это следующий этап... надо для начала хотя бы разобраться, как генерировать бинарник
c2n
 
Сообщения: 10
Зарегистрирован: 28 сен 2015, 22:41

Re: Руководство по настройке и использованию открытого ПО

Сообщение bkolbov » 01 фев 2017, 13:06

Есть предположение, что именно сами настройки компоновщика (QBS) - разные, и идеология для "bare metall" очень сильно разнятся для разных версий QT-Creator'a, и нельзя просто взять и использовать файлы предыдущих версий...


В таком случае, это весьма возможный вариант. Как это вылечить, вам подсказать к сожалению не могу.

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

Тут могут быть с питоном проблемы - это так, первое что пришло в голову.
bkolbov
 
Сообщения: 42
Зарегистрирован: 14 дек 2015, 11:37
Откуда: НИИЭТ

След.

Вернуться в 32-разрядные микроконтроллеры на ядре ARM Cortex

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron