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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> VS Code + gcc/gdb, Прикрутил VS Code к gcc/gdb (или наоборот :))
Шаманъ
сообщение Dec 24 2016, 19:29
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Приветствую всех!

"Прикрутил" к Visual Studio Code gcc/gdb (для ARM). Все весьма недурно работает (отладка через OOCD). Довольно удобно, компактно и работает шустро.

Кому-то интересно? Рассказывать как прикрутить?

Сообщение отредактировал Шаманъ - Dec 24 2016, 19:31
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Dec 24 2016, 19:51
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Шаманъ @ Dec 25 2016, 00:29) *
Кому-то интересно? Рассказывать как прикрутить?

Конечно интересно! И не только как прикрутить, но и вообще, как впечатления от этой студии. Не тормозит? Можно ли прыгать по коду? Хорошо ли парсит код c/c++?
Отправляет ли она "телеметрию" в микрософт? (А то я читал, что даже если отключить, то всё равно отправляет).
Ну и всё такое.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Dec 24 2016, 21:14
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(AHTOXA @ Dec 24 2016, 22:51) *
Конечно интересно!


ОК. Тогда начнем с того, как прикрутить:
1.Собственно скачать и установить VS Code
2.В VS Code для подсветки синтаксиса, автокомплита, подсказок и т.п. нужно добавить расширение cpptools ( https://marketplace.visualstudio.com/items?...vscode.cpptools ). Это расширение может работать с gdb, но только для отладки на ПК. Поэтому отладчик в нем мы конфигурировать не будем.
3.В этом расширении есть какой-то затык - оно должно работать сразу, но без пинка не выходит. Чтобы заработало нужно в каталоге .vscode (он содается VS Code внутри главного каталога Вашего проекта) создать файл c_cpp_properties.json следующего содержания:
CODE

{
"configurations": [
{
"name": "ARM",
"includePath":
[
"C:/Include",
"${workspaceRoot}/Include"
],
"browse" :
{
"limitSymbolsToIncludedHeaders" : true,
"databaseFilename" : "${workspaceRoot}/.vscode/.browse.VC.db"
}
}
]
}


Пути к заголовкам указываются абсолютные. Для задания пути относительно главного каталога проекта можно использовать ${workspaceRoot}
После этого расширение начинает нормально работать.
4.Чтобы работала компиляция нужно создать файл "задач" (в каталоге .vscode). У меня он выглядит так (установлены gcc/gdb/mingw), что-где должно быть понятно:
CODE

{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "0.1.0",
"command": "sh.exe",
"isShellCommand": true,
"args": ["-c"],
"showOutput": "always",
"suppressTaskName": false,
"tasks":
[
{
"isBuildCommand": true,
"suppressTaskName": true,
"taskName": "make",
"args": ["make"],
"isWatching": false,
"problemMatcher":
{
"owner": "c",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern":
{
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
},
{
"isBuildCommand": false,
"isTestCommand": true,
"suppressTaskName": true,
"taskName": "flash",
"args": ["make flash"],
"isWatching": false,
},
{
"taskName": "clean",
"suppressTaskName": true,
"args": ["make clean"]
},
{
"taskName": "rebuild",
"suppressTaskName": true,
"args": ["make clean all"],
"isWatching": false,
"problemMatcher":
{
"owner": "c",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern":
{
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
},
{
"taskName": "oocd",
"suppressTaskName": true,
"args" : ["c:/openocd-0.9.0/bin-x64/openocd.exe -f interface/olimex-arm-usb-ocd.cfg -f target/stm32f1x.cfg -f cfg/debug.cfg"]
}
]
}


После этого сборка может быть запущена через Ctrl+Shift+B (сочетание можно сменить на привычное, я поставил более привычное мне Shift+F8) или через "строку команд" или как оно правильно называется у них - вызывается по Ctrl+Shift+P. Прошивка запускается через команду тестирования Ctrl+Shift+T, естественно сочетания можно сменить.
5.Прикручиваем gdb. Для этого нужно добавить расширение Native debug ( https://marketplace.visualstudio.com/items?...=webfreak.debug ). Потом нажать на кнопку Отладки на боковой панели, потом на шестеренку вверху справа и выбрать GDB в списке. Откроется файл конфигурации запуска GDB (он находится в .vscode/launch.json). У меня он выглядит так:
CODE

{
"version": "0.4.2",
"configurations": [
{
"name": "Debug gdb",
"type": "gdb",
"request": "attach",
"executable": "${workspaceRoot}\\Debug\\Main.elf",
"target": "localhost:3333",
"cwd": "${workspaceRoot}",
"gdbpath": "C:\\arm\\bin\\arm-kgp-eabi-gdb.exe",
"remote": true,
"autorun": [
"load ./Debug/Main.elf",
"break main",
"monitor reset"
]
}
]
}

Назначения полей думаю понятны по их именам (кроме того при редактировании конфигов силами vs code выдаются всплывающие подсказки). Записываем файл и вот собственно и все - после этого должна работать отладка/сборка/прошивка/редактирование. Перед отладкой нужно запустить OOCD, сделать это можно сконфигурированной нами командой task->oocd, можно и вручную.
6.Для наведения красивостей можно установить пакет иконок и поправить под себя раскраску. Ну и дальше другие расширения "по вкусу".

Цитата
И не только как прикрутить, но и вообще, как впечатления от этой студии.

Впечатлений пока мало - времени прошло мало, да и сейчас занят немного другим. Изначально я ставил ее с другой целью - иногда пишу под DSP56300 и как-то ни один редактор, хоть с плагинами, хоть без не подсвечивает нормально синтаксис ассемблера DSP56300, и не предлагает autocomplete даже в "тупой" форме (когда для подстановки предлагаются просто все идентификаторы из текущего документа).
VS Code из коробки этого тоже не предлагает, но за пол дня я разобрался как и написал к нему расширение с подсветкой синтаксиса и некоторыми фичами по вводу/форматированию кода. Плюс autocomplete работает (пусть и в "неинтеллектуальном" виде, но в ассемблере это очень удобно). Интересно, что для написания расширения ничего кроме самой VS Code не потребовалось :)

Цитата
Не тормозит?

Нет, тормозов нет.
Цитата
Можно ли прыгать по коду?

Да.
Цитата
Хорошо ли парсит код c/c++?

Нормальная студия это делает лучше, хотя для использования годен и такой вариант (правда проект на чистом С, что будет на плюсах не знаю). c/c++ расширение находится в стадии "превью" и его активно допиливают, что дает надежды на "счастливый финал".

Цитата
Отправляет ли она "телеметрию" в микрософт? (А то я читал, что даже если отключить, то всё равно отправляет).

Я отключил. На счет отправляет ли в таком виде не интересовался - у меня ничего особо секретного нет :) Вроде расширения могут отправлять свою "телеметрию" и ее нужно отключать отдельно.

Цитата
Ну и всё такое

Как работает с gdb понравилось. Сам редактор несколько аскетичный на первый взгляд, но в нем все работает и в нем, в принципе, все есть (по крайней мере пока ничего такого, чего бы критически не хватало не обнаружил). При необходимости все настраивается, делается правда это не через меню и диалоги, а редактированием конфига, который в виде json файлов. Понравилось, что в отличии от полноценной студии vs code не загаживает каталог проекта кучей своих файлов - все свое она хранит в одном каталоге .vscode

Да, есть подсветка синтаксиса shell, makefile и даже matlab (я уже не говорю про более популярные).

Сообщение отредактировал Шаманъ - Dec 24 2016, 21:17
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Dec 25 2016, 07:45
Сообщение #4


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Спасибо, очень подробно и доходчиво.

С одной стороны, меня эклипса вполне устраивает... К тому же я не очень люблю микрософт.
С другой стороны, возможность запиливать под себя плагины - это большой плюс.
Так что вывод такой: надо будет попробовать sm.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Dec 25 2016, 10:52
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(AHTOXA @ Dec 25 2016, 10:45) *
С одной стороны, меня эклипса вполне устраивает... К тому же я не очень люблю микрософт.

Я когда-то давно Эклипс пробовал и он мне не понравился. С тех пор так и сижу на полноценном MSVC, с GCC я его "подружил" без особых проблем, но отлаживаться приходилось голым gdb. В принципе ничего сложного в этом нет, да и требуется серьезная отладка не так уж часто, но когда у отладчика есть ГУЙ это все же прилично комфортнее.
Go to the top of the page
 
+Quote Post
darlock
сообщение Jan 19 2017, 11:38
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 29-10-05
Пользователь №: 10 261



Уважаемый шаманъ, а можно поподробнее по 56 серии?
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Jan 19 2017, 11:59
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(darlock @ Jan 19 2017, 14:38) *
Уважаемый шаманъ, а можно поподробнее по 56 серии?

Можно sm.gif Что именно интересует?
Go to the top of the page
 
+Quote Post
darlock
сообщение Jan 19 2017, 12:56
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 29-10-05
Пользователь №: 10 261



Есть EVB и примеры кода.
Хочется для начала скомпилировать код, загрузить его. Затем попробовать уже свой делать код.
Крайне желательно иметь возможность отладки на EVB.

Как я понял после слияния NXP и Freescale с 56 серией вообще какая-то жесть. Даже скачать ничего нельзя, т.к. ничего нет.

EVB56307 - для начала сойдет.
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Jan 19 2017, 15:49
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(darlock @ Jan 19 2017, 15:56) *
Есть EVB и примеры кода.
Хочется для начала скомпилировать код

Ну это все очень просто делается. Для начала надо прочитать доки на ассемблер, потом:
Код
asm56300 -A -OCEX,MEX,MU,NOMD,MC -Bxxx.cld -Lxxx.lst xxx.asm
cldlod xxx.cld > xxx.lod

Первая команда скомпилирует Ваш xxx.asm в объектный файл xxx.cld и создаст листинг xxx.lst. Вторая из .cld файла сделает .lod, который очень просто распарсить и скормить внутреннему загрузчику по SPI, например.

Цитата
загрузить его.

Я не в курсе, что там у EVM есть на борту куда можно "загрузить" и какие инструменты с ней поставлялись для этого.
Могу предложить путь которым в свое время я воспользовался:
1. Делаем простую программу для DSP56k которая зажигает светодиод.
2. Пишем на ПК программу которая способна прочитать .lod и скормить его встроенному загрузчику DSP56k, например, по SPI.
3. Используем (2) чтобы загрузить (1) в ОЗУ DSP56k и убедиться, что (1) работает.

Как это осилите пол дела сделано sm.gif В принципе для поиграться хватит и этого, если же хочется большего, то после этого:
4. Пишите загрузчик который будет принимать данные с ПК и записывать их в Флеш-память на плате.
5. Модифицируете программу (2), чтобы она загружала в ОЗУ DSP56k с помощью встроенного загрузчика программу (4), а потом скармливала ей тот файл который Вам нужно записать в Флэш-память.

Вот собственно и все - теперь у Вас есть все, чтобы Вы могли Вашу программу записать в Флэш-память, а из Флэш-памяти как параллельной, так и последовательной DSP5672х умеет грузится сам (DSP56307 только из параллельной). Также у Вас есть инструмент, чтобы загружать программу прямо в ОЗУ DSP56k и стартовать оттуда.

Альтернативный вариант - прошиваете флеш-память отдельно (не уверен, что на EVM это возможно, но если плату делать самостоятельно, то вполне можно сделать и так), тогда никакие загрузчики не нужны.

Цитата
Крайне желательно иметь возможность отладки на EVB.

Если Вы про отладку через JTAG, то ничего не подскажу. В те времена, когда я начинал отладка стоила дурных денег, сейчас вроде есть версия (весьма древняя) OOCD, с поддержкой DSP56k, но работало/работает ли это и насколько хорошо не подскажу, т.к. не пользуюсь. Я у себя даже JTAG не разводил - мне хватает диагностического вывода/светодиодов.

Цитата
Как я понял после слияния NXP и Freescale с 56 серией вообще какая-то жесть. Даже скачать ничего нельзя, т.к. ничего нет.

Серия DSP56K умерла через пару лет после выхода двухголовых DSP в серии DSP567xx sad.gif Тогда еще это был Freescale.

Если что-то конкретное нужно из древних инструментов/доков по этой части могу выложить куда-нить или отправить по мылу.

P.S. Наверное нужно попросить модераторов перенести последние сообщения в DSP раздел rolleyes.gif ...
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Feb 6 2017, 04:40
Сообщение #10


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Поюзал я более-менее интенсивно отладку под Cortex-M7 (лаунчпадовский arm-none-eabi-gdb + OpenOCD). Выяснились некоторые косяки Netive Debug расширения, а потом вышло обновление VS Code, а с ним обновились cpptools ( https://marketplace.visualstudio.com/items?...vscode.cpptools ). После обновления мне удалось сконфигурировать cptools для работы с arm-none-eabi-gdb (без использования костыля в виде Native Debug). Собственно изменения касаются пункта 5 моей инструкции (см. выше). Native Debug теперь не нужен), launch.json выглядит так:
CODE
"configurations": [

{
"name": "OpenOCD & gdb",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/Debug/Main.elf",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceRoot}",
"environment": [],
"externalConsole": false,
"logging": {
"engineLogging":false,
"moduleLoad": true,
"exceptions": true
},
"windows": {
"MIMode": "gdb",
"miDebuggerPath":"c:/arm/bin/arm-none-eabi-gdb.exe",
"setupCommands": [
{"text":"-target-select remote localhost:3333"},
{"text":"-interpreter-exec console \"monitor reset halt\""}
],
"launchCompleteCommand": "exec-continue"
}
}
]
}


"Под себя" нужно поменять miDebuggerPath и program, также можно изменить имя конфигурации name . Работает очень хорошо!

Кроме того после обновления намного лучше работает IntelliSense (почти как в "большом" VS). Пока от VS Code у меня самые хорошие впечатления.
Go to the top of the page
 
+Quote Post
Radmir
сообщение May 28 2017, 09:54
Сообщение #11





Группа: Участник
Сообщений: 9
Регистрация: 10-01-10
Из: Уфа
Пользователь №: 54 703



Есть ли способ добавлять файлы в tasks.json/makefile/cmakelists.txt через GUI?

Сообщение отредактировал Radmir - May 28 2017, 11:16
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Jun 18 2017, 10:11
Сообщение #12


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(Radmir @ May 28 2017, 12:54) *
Есть ли способ добавлять файлы в tasks.json/makefile/cmakelists.txt через GUI?

1. ЗАчем их добавлять в tasks.json ?

2. Можно написать makefile так, что он загребает все файлы из нужных каталогов (у меня именно так и сделано)

3. cmake не использую, поэтому ничего сказать не могу

На сегодняшний день использую MS VS Code уже полгода, куда-либо переходить не собираюсь. Редактор нравится даже больше, чем в "большом" MSVS 2013.

Сообщение отредактировал Шаманъ - Jun 18 2017, 10:13
Go to the top of the page
 
+Quote Post
x893
сообщение Jun 18 2017, 11:57
Сообщение #13


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

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Наверное я чего-то не догоняю, но разве в PlatformIO уже не сделали это без шаманства ?
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Jun 18 2017, 16:23
Сообщение #14


Знающий
****

Группа: Участник
Сообщений: 758
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(x893 @ Jun 18 2017, 14:57) *
разве в PlatformIO уже не сделали это без шаманства ?

А что такое PlatformIO? ДА и какие шаманства - в два конфига прописать нужные команды?

Нынче эта инструкция может быть несколько упрощена - теперь вся нужная поддержка есть прямо в родном расширении cpptools

Сообщение отредактировал Шаманъ - Jun 18 2017, 16:23
Go to the top of the page
 
+Quote Post
x893
сообщение Jun 18 2017, 17:30
Сообщение #15


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

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



https://www.google.ru/?q=PlatformIO
Просто нажать ENTER
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 16th April 2024 - 22:17
Рейтинг@Mail.ru


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