Шаманъ 1 24 декабря, 2016 Опубликовано 24 декабря, 2016 (изменено) · Жалоба Приветствую всех! "Прикрутил" к Visual Studio Code gcc/gdb (для ARM). Все весьма недурно работает (отладка через OOCD). Довольно удобно, компактно и работает шустро. Кому-то интересно? Рассказывать как прикрутить? Изменено 24 декабря, 2016 пользователем Шаманъ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 24 декабря, 2016 Опубликовано 24 декабря, 2016 · Жалоба Кому-то интересно? Рассказывать как прикрутить? Конечно интересно! И не только как прикрутить, но и вообще, как впечатления от этой студии. Не тормозит? Можно ли прыгать по коду? Хорошо ли парсит код c/c++? Отправляет ли она "телеметрию" в микрософт? (А то я читал, что даже если отключить, то всё равно отправляет). Ну и всё такое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Шаманъ 1 24 декабря, 2016 Опубликовано 24 декабря, 2016 (изменено) · Жалоба Конечно интересно! ОК. Тогда начнем с того, как прикрутить: 1.Собственно скачать и установить VS Code 2.В VS Code для подсветки синтаксиса, автокомплита, подсказок и т.п. нужно добавить расширение cpptools ( https://marketplace.visualstudio.com/items?...vscode.cpptools ). Это расширение может работать с gdb, но только для отладки на ПК. Поэтому отладчик в нем мы конфигурировать не будем. 3.В этом расширении есть какой-то затык - оно должно работать сразу, но без пинка не выходит. Чтобы заработало нужно в каталоге .vscode (он содается VS Code внутри главного каталога Вашего проекта) создать файл c_cpp_properties.json следующего содержания: { "configurations": [ { "name": "ARM", "includePath": [ "C:/Include", "${workspaceRoot}/Include" ], "browse" : { "limitSymbolsToIncludedHeaders" : true, "databaseFilename" : "${workspaceRoot}/.vscode/.browse.VC.db" } } ] } Пути к заголовкам указываются абсолютные. Для задания пути относительно главного каталога проекта можно использовать ${workspaceRoot} После этого расширение начинает нормально работать. 4.Чтобы работала компиляция нужно создать файл "задач" (в каталоге .vscode). У меня он выглядит так (установлены gcc/gdb/mingw), что-где должно быть понятно: { // 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). У меня он выглядит так: { "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 (я уже не говорю про более популярные). Изменено 24 декабря, 2016 пользователем Шаманъ 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 25 декабря, 2016 Опубликовано 25 декабря, 2016 · Жалоба Спасибо, очень подробно и доходчиво. С одной стороны, меня эклипса вполне устраивает... К тому же я не очень люблю микрософт. С другой стороны, возможность запиливать под себя плагины - это большой плюс. Так что вывод такой: надо будет попробовать :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Шаманъ 1 25 декабря, 2016 Опубликовано 25 декабря, 2016 · Жалоба С одной стороны, меня эклипса вполне устраивает... К тому же я не очень люблю микрософт. Я когда-то давно Эклипс пробовал и он мне не понравился. С тех пор так и сижу на полноценном MSVC, с GCC я его "подружил" без особых проблем, но отлаживаться приходилось голым gdb. В принципе ничего сложного в этом нет, да и требуется серьезная отладка не так уж часто, но когда у отладчика есть ГУЙ это все же прилично комфортнее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
darlock 0 19 января, 2017 Опубликовано 19 января, 2017 · Жалоба Уважаемый шаманъ, а можно поподробнее по 56 серии? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Шаманъ 1 19 января, 2017 Опубликовано 19 января, 2017 · Жалоба Уважаемый шаманъ, а можно поподробнее по 56 серии? Можно :) Что именно интересует? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
darlock 0 19 января, 2017 Опубликовано 19 января, 2017 · Жалоба Есть EVB и примеры кода. Хочется для начала скомпилировать код, загрузить его. Затем попробовать уже свой делать код. Крайне желательно иметь возможность отладки на EVB. Как я понял после слияния NXP и Freescale с 56 серией вообще какая-то жесть. Даже скачать ничего нельзя, т.к. ничего нет. EVB56307 - для начала сойдет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Шаманъ 1 19 января, 2017 Опубликовано 19 января, 2017 · Жалоба Есть 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) работает. Как это осилите пол дела сделано :) В принципе для поиграться хватит и этого, если же хочется большего, то после этого: 4. Пишите загрузчик который будет принимать данные с ПК и записывать их в Флеш-память на плате. 5. Модифицируете программу (2), чтобы она загружала в ОЗУ DSP56k с помощью встроенного загрузчика программу (4), а потом скармливала ей тот файл который Вам нужно записать в Флэш-память. Вот собственно и все - теперь у Вас есть все, чтобы Вы могли Вашу программу записать в Флэш-память, а из Флэш-памяти как параллельной, так и последовательной DSP5672х умеет грузится сам (DSP56307 только из параллельной). Также у Вас есть инструмент, чтобы загружать программу прямо в ОЗУ DSP56k и стартовать оттуда. Альтернативный вариант - прошиваете флеш-память отдельно (не уверен, что на EVM это возможно, но если плату делать самостоятельно, то вполне можно сделать и так), тогда никакие загрузчики не нужны. Крайне желательно иметь возможность отладки на EVB. Если Вы про отладку через JTAG, то ничего не подскажу. В те времена, когда я начинал отладка стоила дурных денег, сейчас вроде есть версия (весьма древняя) OOCD, с поддержкой DSP56k, но работало/работает ли это и насколько хорошо не подскажу, т.к. не пользуюсь. Я у себя даже JTAG не разводил - мне хватает диагностического вывода/светодиодов. Как я понял после слияния NXP и Freescale с 56 серией вообще какая-то жесть. Даже скачать ничего нельзя, т.к. ничего нет. Серия DSP56K умерла через пару лет после выхода двухголовых DSP в серии DSP567xx :( Тогда еще это был Freescale. Если что-то конкретное нужно из древних инструментов/доков по этой части могу выложить куда-нить или отправить по мылу. P.S. Наверное нужно попросить модераторов перенести последние сообщения в DSP раздел :rolleyes: ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Шаманъ 1 6 февраля, 2017 Опубликовано 6 февраля, 2017 · Жалоба Поюзал я более-менее интенсивно отладку под 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 выглядит так: "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 у меня самые хорошие впечатления. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Radmir 0 28 мая, 2017 Опубликовано 28 мая, 2017 (изменено) · Жалоба Есть ли способ добавлять файлы в tasks.json/makefile/cmakelists.txt через GUI? Изменено 28 мая, 2017 пользователем Radmir Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Шаманъ 1 18 июня, 2017 Опубликовано 18 июня, 2017 (изменено) · Жалоба Есть ли способ добавлять файлы в tasks.json/makefile/cmakelists.txt через GUI? 1. ЗАчем их добавлять в tasks.json ? 2. Можно написать makefile так, что он загребает все файлы из нужных каталогов (у меня именно так и сделано) 3. cmake не использую, поэтому ничего сказать не могу На сегодняшний день использую MS VS Code уже полгода, куда-либо переходить не собираюсь. Редактор нравится даже больше, чем в "большом" MSVS 2013. Изменено 18 июня, 2017 пользователем Шаманъ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 51 18 июня, 2017 Опубликовано 18 июня, 2017 · Жалоба Наверное я чего-то не догоняю, но разве в PlatformIO уже не сделали это без шаманства ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Шаманъ 1 18 июня, 2017 Опубликовано 18 июня, 2017 (изменено) · Жалоба разве в PlatformIO уже не сделали это без шаманства ? А что такое PlatformIO? ДА и какие шаманства - в два конфига прописать нужные команды? Нынче эта инструкция может быть несколько упрощена - теперь вся нужная поддержка есть прямо в родном расширении cpptools Изменено 18 июня, 2017 пользователем Шаманъ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 51 18 июня, 2017 Опубликовано 18 июня, 2017 · Жалоба https://www.google.ru/?q=PlatformIO Просто нажать ENTER Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться