Я пытаюсь установить компилятор TI C2000 C/C++ (cl2000.exe) в «compilerPath», но код VS говорит:
Не удалось разрешить конфигурацию с помощью пути компиляции ".../bin/cl2000.exe". Вместо этого используйте «cl.exe».
Есть ли способ заставить это работать, например, вручную указать, где найти включаемые файлы и т. д., или компиляторы, отличные от больших (gcc, clang), просто не работают с VS Code независимо от того, что я делаю?
Мне не нужны такие функции, как отладчик, библиотечная документация и т. д., но мне нужен intellisense (msvc-x64). Я мог бы просто использовать cl.exe
в качестве определенного компилятора, но он не распознает некоторые специфичные для компилятора вещи, такие как __attributes__((ramfunc))
, не использует правильный <stdint.h>
и т. д.
Мне не нужен отладчик, библиотечная документация или что-то в этом роде. Мне просто нужно, чтобы он распознавал функции, специфичные для компилятора, и intellisense просто необходим. Я надеялся, что msvc-x64 все еще будет работать с cl2000. CCS от TI — это не вариант, длинная история.
С текущим расширением C/C++ (v1.7.1) я не думаю, что то, что вы хотите, достижимо, поскольку кажется, что требуется какая-то интеграция с компилятором, чтобы извлечь из него много «скрытой» информации, и в настоящее время поддерживаются только компилятор Microsoft C, Clang и GCC (источник).
В любом случае, вы можете получить массу функционала, работая с нужным c_cpp_settings.json
.
Вот копия моей текущей настройки для проекта на F280049C. Я добавил SDK управления двигателем в качестве подмодуля в папку проекта, что вам может не понадобиться. Убедитесь, что вы добавили все различные SDK и другие мелочи, которые имеют отношение к вашему проекту.
Для свойства defines
я проверил свойства проекта в Code Composer, а затем в CSS Build / C2000 Compiler / Predefined Symbols
есть список определений, переданных в командной строке. Есть куча «скрытых» определений, которые я не знаю, как получить, см. мой комментарий в коде ниже. Возьмите те, что в примере, с щепоткой соли, ваши определения могут отличаться.
Стандарт C и C++ можно проверить по флагам, переданным в командной строке (в моем проекте это C++03 и C11).
Путь к компилятору нужно оставить пустым (""
), так как расширение не может использовать компилятор C2000, поэтому вы получаете ошибку Unable to resolve configuration with compilerPath ".../bin/cl2000.exe". Using "cl.exe" instead.
. Я предполагаю, что VS Code видит компилятор "cl.exe", компилятор, который может использовать расширение C/C++ (это компилятор Microsoft VS, возможно, тот факт, что его имя похоже на TI, вводит вас в заблуждение)
Насчет режима intelliSense
с дьявольской архитектурой С2000 ничего не получится. Я предпочитаю устанавливать IntelliSense на 32 бита, но это так же неправильно, как и 64 бита, так что выбирай свою отраву. Имейте в виду, что такие вещи, как значения sizeof
или указатели, будут неправильными в VS Code (поскольку вы говорите ему рассматривать их как 32-битную архитектуру).
Попробуйте этот конфиг. Вы увидите много красных волнистых линий под некоторыми включениями, но большинство из них должны быть на вашем пути browse
и могут быть автоматически добавлены, щелкнув значок желтой лампочки.
{
"env": {
"SDKPath": "${workspaceFolder}/../lib/C2000Ware_MotorControl_SDK_3_01_00_00",
"StdLibPath": "C:/ti/ccs1031/ccs/tools/compiler/ti-cgt-c2000_20.2.5.LTS",
"XDCTools": "C:/ti/ccs1031/xdctools_3_62_00_08_core",
"TIBIOS": "C:/ti/bios_6_83_00_18/packages/"
},
"configurations": [
{
"name": "TI",
"includePath": [
"${workspaceFolder}/**"
],
"browse": {
"path": [
"${StdLibPath}/**",
"${SDKPath}/**",
"${XDCTools}/**",
"${TIBIOS}/**"
]
},
"defines": [
"_F28004x",
"DEBUG",
"_INLINE",
"_FLASH",
"DRV8353_SPI",
// Hidden predefined symbols. They are set by the compiler by default, but
// they are not output on the command line and I haven't found a way to
// list them yet
// needed for STL (see s_c__system.h)
"_STLP_COMPILER",
"__TI_COMPILER_VERSION__"
],
"compilerPath": "",
"cStandard": "c11",
"cppStandard": "c++03",
"intelliSenseMode": "gcc-x86"
}
],
"version": 4
}
Имейте в виду, что при работе с микроконтроллерами требуется много настроек, но я думаю, что это поможет вам встать на правильный путь.
Благодарю вас за ваше усилие! На самом деле я сделал что-то подобное, то есть я использую MSVC для IntelliSense, и, чтобы избежать ошибок для встроенных функций C2000, я использую фиктивные макрофункции в c_cpp_properties.json, такие как "__attribute__(X) = " и т. д. Спасибо!
Даже если у вас работает компилятор, VSCode все равно, вероятно, будет отсутствовать другие важные функции IDE для вашей (довольно специализированной) разработки микроконтроллеров: отладчик, библиотечная документация, intellisense и т. д. и т. д. ПРЕДЛОЖЕНИЕ: Если вам нужна IDE, рассмотрите возможность Студия Code Composer от TI: ti.com/tool/CCSTUDIO-C2000