реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
r44083
сообщение Sep 26 2015, 08:56
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 13-09-15
Пользователь №: 88 376



Сделал в Sublime Text 3 что-то похожее на IDE для ARM на основе arm-none-eabi-*, make, clang и ST-LINK_CLI. Теперь дело дошло для отладчика.
Установил плагин SublimeGDB, (PATH для GDB уже прописан). Ниже привожу настройки только для SublimeGDB, которые указал в настройках проекта:
Код
"settings":
  {
    "sublimegdb_commandline": "arm-none-eabi-gdb --interpreter=mi ARM-test0.elf",
    "sublimegdb_workingdir": "${folder:${project_path:ARM-test0.elf}}"
  }

Нажимаю в Sublime F5 и появляются вкладки плагина SublimeGDB:

Вот лог вывода во вкладке "GDB Session":
CODE

1-gdb-show interpreter
=thread-group-added,id="i1"
~"GNU gdb (GNU Tools for ARM Embedded Processors) 7.8.0.20150604-cvs\n"
~"Copyright © 2014 Free Software Foundation, Inc.\n"
~"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law. Type \"show copying\"\nand \"show warranty\" for details.\n"
~"This GDB was configured as \"--host=i686-w64-mingw32 --target=arm-none-eabi\".\nType \"show configuration\" for configuration details."
~"\nFor bug reporting instructions, please see:\n"
~"<http://www.gnu.org/software/gdb/bugs/>.\n"
~"Find the GDB manual and other documentation resources online at:\n<http://www.gnu.org/software/gdb/documentation/>.\n"
~"For help, type \"help\".\n"
~"Type \"apropos word\" to search for commands related to \"word\"...\n"
~"Reading symbols from ARM-test0.elf..."
~"done.\n"
(gdb)
1^error,msg="Undefined show command: \"interpreter\". Try \"help show\"."
(gdb)
2-inferior-tty-set c:\users\pc1\appdata\local\temp\tmpoh0opi
2^done
(gdb)
3-gdb-set target-async 1
4-gdb-set pagination off
5-gdb-set disassembly-flavor intel
6-break-insert "\"d:/4 electronics/soft/sublime text projects/arm-test0/user-code/main.cpp\":36"
3^done
(gdb)
4^done
(gdb)
5^error,msg="No symbol \"disassembly\" in current context."
(gdb)
6^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x080002f4",func="main()",file=".\\user-code/main.cpp",fullname="D:\\4 electronics\\soft\\Sublime Text projects\\ARM-test0\\user-code\\main.cpp",line="36",thread-groups=["i1"],times="0",original-location="d:/4 electronics/soft/sublime text projects/arm-test0/user-code/main.cpp:36"}
(gdb)
7-exec-run
7^error,msg="Don't know how to run. Try \"help target\"."
(gdb)

И на этом всё. "gdb_step_over" (F10), "gdb_step_into" (F11) и остальные команды не работают.
Я подозреваю, что в строке GDB "5^error,msg="No symbol \"disassembly\" in current context." кроется ошибка в вызове GDB.
Также интересует, можно ли будет просматривать в реальном времени регистры периферии с помощью GDB?
Нашел скриншот в интернете с настроенным GDB для Sublime, всё должно выглядеть примерно так:


Вот ссылка на сборку Sublime Text для ARM (она полностью портабельная для Windows): https://copy.com/kJIDxc8rIJenEWm4
Вот ссылка на проект на гитхаб: https://github.com/r44083/ARM-test0
Заранее спасибо.

Сообщение отредактировал r44083 - Sep 26 2015, 17:57
Go to the top of the page
 
+Quote Post
r44083
сообщение Sep 26 2015, 10:43
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 13-09-15
Пользователь №: 88 376



На сколько я понял, для отладки в GDB нужно запустить openocd (с параметром gdb_port 3333) и уже из gdb выполнить подключение к openocd (target remote localhost:3333).

Вот я выполняю следующее:
Код
openocd -f interface/stlink-v1.cfg -f board/stm32vldiscovery.cfg

И получаю ошибку:


Сообщение отредактировал r44083 - Sep 26 2015, 11:10
Go to the top of the page
 
+Quote Post
smalcom
сообщение Sep 26 2015, 12:43
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



как видите, что-то там не поддерживается. может проблема в том, что не переключены драйвера, которые используются для stlink_v1. Тогда используйте программу "zadig".


---------
и с картинками чёто сделайте. проблема в отладчике, а не текстовом редакторе. и даже будь проблема в нём... используйте Win+R, mspaint, Enter
Go to the top of the page
 
+Quote Post
r44083
сообщение Sep 26 2015, 14:06
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 13-09-15
Пользователь №: 88 376



Цитата(smalcom @ Sep 26 2015, 15:43) *
как видите, что-то там не поддерживается. может проблема в том, что не переключены драйвера, которые используются для stlink_v1. Тогда используйте программу "zadig".


---------
и с картинками чёто сделайте. проблема в отладчике, а не текстовом редакторе. и даже будь проблема в нём... используйте Win+R, mspaint, Enter

Только что пробовал переключить драйвер с помощью Zadig. Ставил: WinUSB, libusbK, libusb-win32 - ничего их этого не убрало ошибку как на скриншоте.
Go to the top of the page
 
+Quote Post
smalcom
сообщение Sep 26 2015, 14:40
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



странно. у некоторых получается:

http://libusb.6.n5.nabble.com/LIBUSB-ERROR...-td5711826.html
http://stackoverflow.com/questions/2585651...ed-on-windows-8
http://andybrown.me.uk/2014/09/09/stlinkv2/
Go to the top of the page
 
+Quote Post
r44083
сообщение Sep 26 2015, 15:05
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 13-09-15
Пользователь №: 88 376



Цитата(smalcom @ Sep 26 2015, 17:40) *

Получилось! (после переключения драйвера, я обновил в диспетчере устройств текущий драйвер ST Link на тот, что скачал с сайта ST)
Но вот что дальше
написал простой скрипт для openocd:
Код
telnet_port 4444
gdb_port 3333
source [find interface/stlink-v1.cfg]
transport select hla_swd
set WORKAREASIZE 0x2000
source [find target/stm32f1x.cfg]
reset_config srst_only

При запуске openocd в папке проекта, в консоль выводится следующее:

Когда я из Sublime Text запускаю отладку с помощью GDB, и в диалоге GDB пишу "target remote localhost:3333",
то в консоли openocd появляется сообщение: "undefined debug reason 7 - target needs reset" и в консоли GDB появляется следующее:
CODE

10target remote localhost:3333
&"target remote localhost:3333\n"
~"Remote debugging using localhost:3333\n"
=thread-group-started,id="i1",pid="42000"
=thread-created,id="1",group-id="i1"
~"0x00000000 in ?? ()\n"
*stopped,frame={addr="0x00000000",func="??",args=[]},thread-id="1",stopped-threads="all"
11-thread-select 1
10^done
(gdb)
12-stack-info-frame
11^done,new-thread-id="1",frame={level="0",addr="0x00000000",func="??",args=[]}
(gdb)
12^done,frame={level="0",addr="0x00000000",func="??"}
(gdb)
13-stack-list-frames
13^done,stack=[frame={level="0",addr="0x00000000",func="??"},frame={level="1",addr="0x00000000",func="??"}]
(gdb)
14-stack-list-arguments 1
14^done,stack-args=[frame={level="0",args=[]},frame={level="1",args=[]}]
(gdb)
15-thread-info
15^done,threads=[{id="1",target-id="Remote target",frame={level="0",addr="0x00000000",func="??",args=[]},state="stopped"}],current-thread-id="1"
(gdb)
16-thread-list-ids
16^done,thread-ids={thread-id="1"},current-thread-id="1",number-of-threads="1"
(gdb)
17-stack-list-arguments 0 0 0
17^done,stack-args=[frame={level="0",args=[]}]
(gdb)
18-stack-list-locals 0
18^done,locals=[]
(gdb)

Но ходить по шагам или точкам останова не получается (в логе GDB возникает ошибка: "
23-exec-next
23^error,msg="Cannot find bounds of current function"
(gdb)
") в окне дизассемблера (плагина SublimeGDB) по-прежнему ничего нет, и все регистры равны нулю:




Сообщение отредактировал r44083 - Sep 26 2015, 18:00
Go to the top of the page
 
+Quote Post
r44083
сообщение Sep 26 2015, 16:59
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 13-09-15
Пользователь №: 88 376



Спешу сообщить, что всё получилось. Всего то надо было нажать на паузу во время отладки и далее уже можно "шагать".
На данный момент видны регистры ядра, дизассемблер и т.д.
Может кто подсказать, почему не видны регистры периферии? Что я делаю не так?

Кстати вот строка вывода из лога GDB (возможно тут ошибка):
Код
19-data-list-register-names
19^done,register-names=["r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","r10","r11","r12","sp","lr","pc","","","","","","","","","","xPSR","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","msp","psp","primask","basepri","faultmask","control"]

То есть openocd не передает в GDB регистры периферии?


Странный момент обнаружился. После использования Zadig, я уже не могу прошить микроконтроллер, так как ST-Link CLI ругается, что не видит St-link,
а когда откатываю драйвер и st-link нормально работает, то перестает работать openocd ругаясь на libusb.
Что же делать?
Go to the top of the page
 
+Quote Post
smalcom
сообщение Sep 26 2015, 17:14
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



Цитата
Что я делаю не так?

если вы с картинками разобраться не можете, то дальше мне тяжело будет объяснить.
Go to the top of the page
 
+Quote Post
r44083
сообщение Sep 26 2015, 18:02
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 13-09-15
Пользователь №: 88 376



Цитата(smalcom @ Sep 26 2015, 20:14) *
если вы с картинками разобраться не можете, то дальше мне тяжело будет объяснить.

Если вы о размере скриншотов, которые я выложил в этой теме - то я их исправил и уменьшил.
А на счет того, что после использования Zadig не удается пользоваться ST-LINK CLI, то вот я специально видео снял: https://copy.com/pHXdmG1EFNLO04EC
(кнопка для скачивания в правом верхнем углу)
Go to the top of the page
 
+Quote Post
smalcom
сообщение Sep 27 2015, 04:36
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



Zadig не имеет возможности вернуть драйвера "устройства хранения". Это уже придётся вручную. Используйте другие программы. Можно попробовать ST-Link Utility.

Цитата
То есть openocd не передает в GDB регистры периферии?

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

использование sublime text для ARM - маргинальщина. Чтобы к этому прийти надо либо хорошо разбираться во всей подноготной, либо прочитать статью маргинала, который использует этот sublime text.
Попробуйте Em::Blocks.
Go to the top of the page
 
+Quote Post
r44083
сообщение Sep 27 2015, 05:08
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 13-09-15
Пользователь №: 88 376



Цитата(smalcom @ Sep 27 2015, 07:36) *
Zadig не имеет возможности вернуть драйвера "устройства хранения". Это уже придётся вручную. Используйте другие программы. Можно попробовать ST-Link Utility.


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

использование sublime text для ARM - маргинальщина. Чтобы к этому прийти надо либо хорошо разбираться во всей подноготной, либо прочитать статью маргинала, который использует этот sublime text.
Попробуйте Em::Blocks.

Вы так говорите маргинальщина - как будто это что то плохое. По поводу em::blocks, вы бы ещё ардуино эдитор посоветовали или notepad ++ sm.gif
Вы вообще саблаймом когда-нибудь пользовались?
Go to the top of the page
 
+Quote Post
smalcom
сообщение Sep 27 2015, 06:42
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



Цитата
вы бы ещё ардуино эдитор посоветовали или notepad ++

ню-ню

Цитата
Вы вообще саблаймом когда-нибудь пользовались?

раз вы такой специалист, то куда уж мне. дерзайте.
Go to the top of the page
 
+Quote Post
r44083
сообщение Sep 27 2015, 07:46
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 13-09-15
Пользователь №: 88 376



Цитата(smalcom @ Sep 27 2015, 09:42) *
ню-ню


раз вы такой специалист, то куда уж мне. дерзайте.

Извините, но вы сами начали в таком тоне.
Go to the top of the page
 
+Quote Post
Nixon
сообщение Sep 27 2015, 19:29
Сообщение #14


Гуру
******

Группа: Админы
Сообщений: 2 736
Регистрация: 17-06-04
Из: Киев
Пользователь №: 48



Не отвлекайтесь. Лучше напишите методику получения из sublime этой самой ide. Думаю она будет интересна.


--------------------
Вам помочь или не мешать?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 27 2015, 20:01
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (Nixon @ Sep 27 2015, 22:29) *
Не отвлекайтесь. Лучше напишите методику получения из sublime этой самой ide. Думаю она будет интересна.

А что, есть сомнения в результате? Я очень мельком смотрел на sublime, но произвела очень хорошее впечатление, как база для построения инструмента под себя любимого.
Сочетания некоего, пусть закрытого, но сопровождаемого движка и plugin очень обнадеживают. Не влезал, насколько он из plugin-нов состоит и доступность их исходников.
Если исходники доступны и движек это именно движек а не уже полуготовая IDE, то штучка очень перспективная. Ради такого можно и с питоном сожительствовать sm.gif.





--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th June 2025 - 22:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.01522 секунд с 7
ELECTRONIX ©2004-2016