无法使用 Visual Studio 代码打开源文件 avr/io.h(hal.h 的依赖项)10
Cannot open source file avr/io.h (dependency of hal.h) with Visual Studio Code on windows 10
我想使用 stm32F0(基于 arm)和 VS Code 实现一个嵌入式项目。该项目 运行 在其他系统上正常运行。
- 我为 visual studio
添加了 C/C++ 扩展
- 我为 cortex-m0 arm 安装了一个编译器:GNU Arm Embedded toolchain/gcc arm for windows.
- 安装的 Makefiles:二进制文件 + 依赖文件
- 已安装 openOCD(打开片上调试器)
- tasks.json(构建说明)、c_cpp_properties.json(编译器路径和 IntelliSense 设置)已创建。我修改了包含路径,因为我的程序包含不在我的工作区中的头文件,并且不在标准库路径中。
c_cpp_properties.json 文件
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**" ,
"C:\Users\lib\chibios\ChibiOS-313416b8fda90d9973a749a0a35970956852c286\os\hal\include",
"C:\Users\lib\chibios\ChibiOS-313416b8fda90d9973a749a0a35970956852c286\os\common\ports\ARM\compilers\GCC",
"C:\Users\lib\chibios\ChibiOS-313416b8fda90d9973a749a0a35970956852c286\os\nil\include"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "E:\tools-vs\gcc-arm-none-eabi-10-2020-q4-major\bin\arm-none-eabi-g++",
"cStandard": "gnu11",
"cppStandard": "gnu++14",
"intelliSenseMode": "gcc-arm",
"browse": {
"path": [
"E:\tools-vs\gcc-arm-none-eabi-10-2020-q4-major\lib\gcc\arm-none-eabi\10.2.1\include"
]
}
}
],
"version": 4
}
添加这些路径后,还是报错:
#include errors detected. Please update your includePath. Squiggles are disabled for this translation unit
cannot open source file "avr/io.h" (dependency of "hal.h")
由于嵌入式项目的库和依赖较多,无法一一添加依赖路径。一个依赖解决并添加路径后,应该还有一个错误。
还有一个问题就是我自己在目录里找不到依赖avr/io.h
我以前在其他项目中使用过Keil。当我编译代码时,它会自行调用所有依赖项。编译前没有看到树段依赖,也没有看到头文件依赖报错
- 但是,VS Code 如何在编译前找到依赖关系?
- 我也想知道是否应该在VS Code的配置文件中添加main.cpp文件和其他C和CPP文件的路径来解决这些问题?
- 对于调试,我没有在列表中看到任何调试器,尽管我安装了 openOCD 并在环境变量中添加了路径
非常感谢任何命令或有用的资源,提前。
Cannot open source file avr/io.h (dependency of hal.h)
您似乎正在使用 ChibiOS,它有一个文件 hal.h,其中包含 halconf.h,其中包含 mcuconf.h。很明显,您似乎有一个 ChibiOS 的 AVR 端口,您需要 STM32 或 ARM Cortex-M 支持。
But, how VS Code can find dependencies before compiling?
与 compiler/pre-processor 的方式相同,通过配置包含路径、解析项目文件并考虑任何外部定义的(命令行)宏。
I also was wondering if I should add a path for main.cpp file and other C and CPP files in the configuration file of VS Code to solve these problems?
我相信无论如何它都会解析项目文件。它只需要找到源文件中包含的头文件,为源文件的解析提供上下文。
For debugging, I don't see any debugger in the list, though I installed openOCD and add the path in the environment variable
这是一个完全不同的问题 - post 这是一个新问题。
您有 8 位 AVR 微控制器的代码,您尝试使用 ARM 工具链直接编译它。不起作用。您将需要重写此程序(不仅包括,而且几乎所有内容。中断处理程序、寄存器,甚至硬件架构都不同(Harvard/von Neumann))。
对于初学者来说,这是不可能完成的任务。
感谢您的回答。
- 使用 Visual Studio 代替 Visual Studio 代码
- 使用正确的工具链(GCC:gcc-arm-none-eabi)
- 将 visualGDB 插件从 sysProgs 添加到 VS
- 具有IntelliSense配置(VS中的扩展在检查默认位置后找到路径&使用我们在pc上的编译器配置IntelliSense。如果include文件有错误,您可以编辑IntelliSense告诉C++编译器所在的扩展名并包含头文件。但 visualGDB 会自动找到它们)
- 已配置包含路径
- 构建项目
- 并重新扫描解决方案
所有这些步骤都解决了我的问题。
我想使用 stm32F0(基于 arm)和 VS Code 实现一个嵌入式项目。该项目 运行 在其他系统上正常运行。
- 我为 visual studio 添加了 C/C++ 扩展
- 我为 cortex-m0 arm 安装了一个编译器:GNU Arm Embedded toolchain/gcc arm for windows.
- 安装的 Makefiles:二进制文件 + 依赖文件
- 已安装 openOCD(打开片上调试器)
- tasks.json(构建说明)、c_cpp_properties.json(编译器路径和 IntelliSense 设置)已创建。我修改了包含路径,因为我的程序包含不在我的工作区中的头文件,并且不在标准库路径中。
c_cpp_properties.json 文件
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**" ,
"C:\Users\lib\chibios\ChibiOS-313416b8fda90d9973a749a0a35970956852c286\os\hal\include",
"C:\Users\lib\chibios\ChibiOS-313416b8fda90d9973a749a0a35970956852c286\os\common\ports\ARM\compilers\GCC",
"C:\Users\lib\chibios\ChibiOS-313416b8fda90d9973a749a0a35970956852c286\os\nil\include"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "E:\tools-vs\gcc-arm-none-eabi-10-2020-q4-major\bin\arm-none-eabi-g++",
"cStandard": "gnu11",
"cppStandard": "gnu++14",
"intelliSenseMode": "gcc-arm",
"browse": {
"path": [
"E:\tools-vs\gcc-arm-none-eabi-10-2020-q4-major\lib\gcc\arm-none-eabi\10.2.1\include"
]
}
}
],
"version": 4
}
添加这些路径后,还是报错:
#include errors detected. Please update your includePath. Squiggles are disabled for this translation unit
cannot open source file "avr/io.h" (dependency of "hal.h")
由于嵌入式项目的库和依赖较多,无法一一添加依赖路径。一个依赖解决并添加路径后,应该还有一个错误。
还有一个问题就是我自己在目录里找不到依赖avr/io.h
我以前在其他项目中使用过Keil。当我编译代码时,它会自行调用所有依赖项。编译前没有看到树段依赖,也没有看到头文件依赖报错
- 但是,VS Code 如何在编译前找到依赖关系?
- 我也想知道是否应该在VS Code的配置文件中添加main.cpp文件和其他C和CPP文件的路径来解决这些问题?
- 对于调试,我没有在列表中看到任何调试器,尽管我安装了 openOCD 并在环境变量中添加了路径
非常感谢任何命令或有用的资源,提前。
Cannot open source file avr/io.h (dependency of hal.h)
您似乎正在使用 ChibiOS,它有一个文件 hal.h,其中包含 halconf.h,其中包含 mcuconf.h。很明显,您似乎有一个 ChibiOS 的 AVR 端口,您需要 STM32 或 ARM Cortex-M 支持。
But, how VS Code can find dependencies before compiling?
与 compiler/pre-processor 的方式相同,通过配置包含路径、解析项目文件并考虑任何外部定义的(命令行)宏。
I also was wondering if I should add a path for main.cpp file and other C and CPP files in the configuration file of VS Code to solve these problems?
我相信无论如何它都会解析项目文件。它只需要找到源文件中包含的头文件,为源文件的解析提供上下文。
For debugging, I don't see any debugger in the list, though I installed openOCD and add the path in the environment variable
这是一个完全不同的问题 - post 这是一个新问题。
您有 8 位 AVR 微控制器的代码,您尝试使用 ARM 工具链直接编译它。不起作用。您将需要重写此程序(不仅包括,而且几乎所有内容。中断处理程序、寄存器,甚至硬件架构都不同(Harvard/von Neumann))。
对于初学者来说,这是不可能完成的任务。
感谢您的回答。
- 使用 Visual Studio 代替 Visual Studio 代码
- 使用正确的工具链(GCC:gcc-arm-none-eabi)
- 将 visualGDB 插件从 sysProgs 添加到 VS
- 具有IntelliSense配置(VS中的扩展在检查默认位置后找到路径&使用我们在pc上的编译器配置IntelliSense。如果include文件有错误,您可以编辑IntelliSense告诉C++编译器所在的扩展名并包含头文件。但 visualGDB 会自动找到它们)
- 已配置包含路径
- 构建项目
- 并重新扫描解决方案
所有这些步骤都解决了我的问题。