去年我们官宣了 Visual Studio Code 可以直接导入 ST 项目,今天再次宣布:它的好兄弟 Visual Studio 2022 17.6 也支持此功能,详细请看下文。
在 ARM 微控制器领域,有许多芯片供应商,其中最大的是意法半导体(ST)。ST 拥有大量具有多种功能的可用器件,以及用于评估这些功能的支持开发板。他们还生产STM32CubeIDE,一种用于定位设备的自定义IDE,以及STM32CubeMX,一种用于配置设备属性和生成项目的配置工具。
如果你是已经在使用过 ST 产品的开发人员,我不会告诉你任何新内容。你可能不知道我们为在 Visual Studio 中启用嵌入式开发人员所做的工作。此嵌入式体验依赖于新的 vcpkg 项目功能来帮助获取工具链和配置开发环境。为了让使用 ST 芯片的开发人员更容易尝试 Visual Studio Code,我们一直在与意法半导体合作,实现 STM32CubeIDE 项目的导入。
我们通过从 ST 项目生成一个 CMake 项目来实现这一点。ST 在其产品组合中提供了许多示例项目。我们已经使用这种机制验证了示例项目中的构建,其中超过3000个。目前,我们的通过率为 99%,我们正在继续提高。这使我们相信,我们的方法将成功导入你自己的意法半导体项目。我们的嵌入式工具扩展还支持通过导入器进行设备刷写和调试,尽管我们仅在我们拥有的硬件上对此进行了验证。
这篇文章将介绍这个项目导入器功能如何与 vcpkg 和 ST 的工具结合使用。
在 Visual Studio 中使用 ST 项目
这篇文章假设对 ST 器件、开发工具和嵌入式开发有一定的了解。如果你需要一些背景知识,我们推荐以下Shawn Hymel关于STM32入门的文章。
《Introduction to STM32CubeIDE》
《Introduction to FreeRTOS》
我们依靠 vcpkg 来管理像 CMake 和 Ninja 这样的依赖项,包括获取它们并使它们可用于你的开发环境。你可以在 Visual Studio 嵌入式开发概述中了解有关 vcpkg 的更多信息。你可以将其安装在适用于你的平台的单个 shell 命令中,在 Windows 上你应该使用此 PowerShell 命令。
https://aka.ms/vcpkg-init.ps1)
你将需要随 Linux 和嵌入式开发一起安装 Visual Studio 2022 17.6 预览版 1 或更高版本C++并选择工作负载。
今天,我们的导入器要求你将 STM32CubeIDE 软件安装在平台的默认位置。我们一直在使用 STM32CubeIDE 1.9.0 和 STM32CubeMX 6.5.0 测试此功能。如果你并排安装了多个实例,我们无法控制选择哪个实例。
还需要在 STM32CubeIDE 中获取设备的板级支持包。这样我们就可以从 Visual Studio 中使用 ST 提供的编译器和支持应用程序。
或者,你可以使用 STM32CubeCLT ,其中包括此体验所需的一切,包括编译器,编程器和调试器。
安装我们的先决条件后,从 Visual Studio 中转到文件,打开,导入 STM32CubeIDE 项目。
导航到你的 ST .cproject 所在的位置并选择它。然后,可以选择调试或发布配置。现在,可以选择“生成”以使用 CMake 编译固件。若要调试,请选择“调试”视图,然后选择启动按钮。这将运行 STM32 编程器将固件烧录到设备上并使用 GDB 连接。从这里,我们所有的嵌入式开发视图(串行、RTOS 和外设)都可用。
如果你的项目有 .ioc 文件,你还可以打开上下文菜单并为您的项目打开 STM32CubeMX。
理解 CMake 互操作性
你可以看到简单的 CMakeLists.txt,它是在 .cproject 所在的项目的根目录中生成的。这依赖于 cmake 目录下生成的 CMake 文件。这些文件中的路径设置为计算机上 ST 编译器的发现位置。如果你打算从 ST 项目格式迁移到 CMake,我们建议根据需要调整这些文件,尤其是在路径可能不同的团队中使用。
需要注意的另一件事是,有时在 STM32CubeIDE 示例中,项目可能位于源代码的子目录中。如果在文件视图中看不到项目文件,这可能是原因。选择 CMake 目标视图,应会看到 CMake 用于生成生成的所有内容。
根据上述观点,我们建议在使用 STM32CubeMX 生成项目时,将项目管理器中“在根下生成”中的默认值保留为选中状态。这会将你的 .cproject 保留在包含生成的源文件的文件夹的根目录中。STM32CubeIDE也是默认生成项目的方式。
如果在 STM32CubeIDE 中再次打开项目,则需要从项目中排除 CMake 使用的构建目录。右键单击生成目录,然后选择“资源配置”>“从生成中排除”。然后选择“调试”和“发布”。
总结
可以使用 Visual Studio 编写 ST 项目的代码,确实是一个微软进军非 Windows 生态系统的好兆头。
也说明了,她有了一些危机感。技术的升维变革,不会提前跟你打招呼,你需要始终看的更远一点,并做好十足的准备应对挑战。