Компилятор TI C2000 не распознан VS Code

#visual-studio-code

#visual-studio-код

Вопрос:

Я пытаюсь установить компилятор TI C2000 C / C (cl2000.exe ) в «compilerPath», но код VS говорит:

Невозможно разрешить конфигурацию с помощью compilerPath «… /bin/cl2000.exe «. Использование «cl.exe » вместо этого.

Есть ли способ заставить это работать, например, вручную указать, где искать включаемые файлы и т.д., Или компиляторы, отличные от больших (gcc, clang), просто не работают с VS Code, что бы я ни делал?

Мне не нужны такие функции, как отладчик, документация библиотеки и т.д., Но мне нужен intellisense (msvc-x64). Я мог бы просто использовать cl.exe как определенный компилятор, но он не распознает некоторые специфические для компилятора вещи, например __attributes__((ramfunc)) , он не использует правильные <stdint.h> и т. Д.

Комментарии:

1. Даже если у вас заработает компилятор, в VSCode, вероятно, все равно будут отсутствовать другие важные функции IDE для вашей (довольно специализированной) разработки микроконтроллеров: отладчик, документация библиотеки, intellisense и т. Д. И т. Д. ПРЕДЛОЖЕНИЕ: если вам нужна IDE, пожалуйста, рассмотрите TI Code Composer Studio: ti.com/tool/CCSTUDIO-C2000

2. Мне не нужен отладчик, документация библиотеки или что-то в этом роде. Мне просто нужно, чтобы он распознавал функции, зависящие от компилятора, и intellisense должен быть. Я надеялся, что msvc-x64 все равно будет работать с cl2000. CCS от TI — это не вариант, долгая история.

Ответ №1:

С текущим расширением C / C (v1.7.1) я не думаю, что то, что вы хотите, достижимо, так как кажется, что для извлечения из него большого количества «скрытой» информации требуется какая-то интеграция с компилятором, и в настоящее время только компилятор Microsoft C, Clang поддерживаются GCC и 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 (это компилятор VS от Microsoft, возможно, тот факт, что его название похоже на TI, вводит вас в заблуждение)

Что касается intelliSense режима, ничего не будет работать с дьявольской архитектурой C2000. Я предпочитаю устанавливать IntelliSense на 32 бита, но это так же неправильно, как 64 бита, так что выбирайте свой яд там. Имейте в виду, что такие вещи, как значения sizeof указателей or, будут неправильными в 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
}
 

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

Комментарии:

1. Спасибо за ваши усилия! Я действительно сделал что-то подобное, т. Е. Я использую MSVC для IntelliSense, и чтобы избежать ошибок для встроенных функций, специфичных для C2000, я использую фиктивные макрофункции в c_cpp_properties. json, такой как «__attribute__ (X)=» и т.д. Спасибо!