向Visual Studio Code导入ST项目

向Visual Studio Code导入ST项目

作者:BlogUpdater |  时间:2022-09-04 |  浏览:190 |  评论已关闭 条评论

在ARM处理器的世界,有着很多的半导体厂家,其中最大之一是ST。
ST拥有大量的产品型号,这些产品具有多种功能以及用于它们对应的开发板。ST自家也提供了一个开发环境STM32CubeIDE,用来在ST设备上进行开发。另外他们也提供了一个配置工具STM32CubeMX,它用于配置设备属性并生成项目的配置信息。

如果你已经参与过基于ST的项目,我不会告诉你任何新内容。你可能不知道我们为在 Visual Studio Code 中启用嵌入式开发人员所做的工作。 这种嵌入式体验依赖于新的 vcpkg artifacts 特性来帮助获取工具链和配置开发环境。为了让使用ST设备的开发人员更轻松地使用Visual Studio Code,我们一直在与 ST 合作以实现STM32CubeIDE 项目的导入。

我们通过从ST项目生成CMake项目来实现这一点。ST在其产品组合中提供了许多示例项目。 我们已经使用这种机制在ST的示例项目中验证了构建,其中超过3000 个。 目前,我们的通过率达到了94%,此外我们还在不断提高它。 这让我们相信,我们的方法将成功导入你自己的ST项目。我们的嵌入式工具扩展还支持通过导入器进行设备固件烧写和调试,但请注意,我们只在我们现有的测试硬件上验证了这一点。

这篇文章将介绍这个项目导入器功能如何与vcpkg和ST的工具结合使用。

在 Visual Studio Code 中开发ST项目
本文假定你已经对ST设备,开发工具和嵌入式开发基础知识有所熟悉。如果你需要一些了解一些背景知识,可以阅读下面两篇Shawn Hymel写的两份入门文档。
> Introduction to STM32CubeIDE
> Introduction to FreeRTOS

我们依靠 vcpkg 来管理 CMake 和 Ninja 等依赖项,包括获取它们并使它们可用于你的开发环境。你可以在我们的Visual Studio Code嵌入式开发概述中了解有关我们如何 vcpkg 的更多信息,使用如下命令来安装它。

Linux/macOS系统
# . <(curl https://aka.ms/vcpkg-init.sh -L)

PowerShell
# iex (iwr -useb https://aka.ms/vcpkg-init.ps1)

请注意,你需要在 Visual Studio Code 中安装嵌入式工具扩展版本 0.3.0 或更高版本才能使用 ST 项目导入器。

我们的导入器要求你在平台的默认位置安装 STM32CubeIDE 软件。 我们一直在使用 STM32CubeIDE 1.9.0 和 STM32CubeMX 6.5.0 测试此功能。 如果你安装了多个实例,我们将无法控制选择哪个。

另外,你还需要在 STM32CubeIDE 中为你的设备获取板级支持包。 这样我们就可以在 Visual Studio Code 中使用 ST 提供的编译器和支持应用程序。

ST未来将提供重量更轻的封装。我们计划在这里也通过vcpkg来获取依赖项。
安装了我们的先决条件后,从 Visual Studio Code 中的命令托盘 运行“从 ST 项目创建项目”。

导航到你的 ST .cproject 所在的位置并选择它。 然后,你可以选择调试或发布配置。 现在可以选择 Build 以使用 CMake 编译设备的固件。 要调试,请选择调试视图,然后选择启动按钮。 这将运行 STM32 编程器将固件刷写到设备上并使用 GDB 进行连接。 从这里可以使用我们所有的嵌入式开发视图(串行、RTOS 和外围设备)。

如果你的项目有一个.ioc文件,可以打开上下文菜单并为你的项目打开 STM32CubeMX。

如果你在STM32CubeMX中对项目进行更改,它们将被识别并且CMake缓存将重新生成。

在为你的项目的下一个会话关闭 Visual Studio Code 后,你将需要从激活 vcpkg 的提示符启动 Visual Studio Code。 为此,请在 shell 中导航到包含 vcpkg-configuration.json 的项目文件夹,运行 vcpkg activate,然后运行 code 。

在未来的版本中,这将不再需要,激活将自动发生。

了解 CMake 交互
可以看到在.cproject所在项目的根目录下生成的简单CMakeLists.txt。 这依赖于 cmake 目录下生成的 CMake 文件。 这些文件中有一些路径设置为你机器上ST编译器的发现位置。 如果你打算从 ST 项目格式迁移到 CMake,我们建议你根据需要调整这些文件,特别是在路径可能不同的团队中使用。

另一件需要注意的是,有时在STM32CubeIDE示例中,项目可能位于源代码的子目录中。 如果你没有在文件视图中看到项目文件,这可能就是原因。 选择 CMake 目标视图,你应该会看到 CMake 用于生成构建的所有内容。

根据上述观点,我们建议在使用 STM32CubeMX 生成项目时,在项目管理器中为“Generate Under Root”保留默认选项。 这会将你的.cproject保存在包含生成的源文件的文件夹的根目录中。 这也是 STM32CubeIDE 默认生成项目的方式。

如果再次在 STM32CubeIDE 中打开项目,则需要从项目中排除 CMake 使用的构建目录。 右键单击构建目录并选择资源配置 > 从构建中排除。

然后在“从构建中排除”对话框中选择“调试”和“发布”。

总结
又想起了我在大厂使用Keil C写STM32代码控制小车的峥嵘岁月了。
害!往事真是不堪回首。
还是不细说了吧。

最后
Microsoft Visual C++团队的博客是我非常喜欢的博客之一,里面有很多关于Visual C++的知识和最新开发进展。大浪淘沙,如果你对Visual C++这门古老的技术还是那么感兴趣,则可以经常去他们那(或者我这)逛逛。
本文来自:《Importing ST projects into Visual Studio Code》

最近我写了个东西
正如你们所知道的,拓扑梅尔智慧办公平台(Topomel Box)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。
我想:你值得拥有。

相关推荐

评论已关闭。