力荐插件!EIDE 替代 Keil
大致介绍
EIDE 是一个 VSCode 插件,用来开发单片机项目,比如: 是一个 VSCode 插件,用来开发单片机项目,比如:8051
, stm8
, stm32
, other cortex-m mcus
... ...
推荐 EIDE 做keil工程的后续应用开发,开板子开外设还是在 keil 中完成,毕竟是官方的,放心。同时stm32cubemx生成 keil 工程也是非常方便的,初探索外设还是 keil 进行好一些。
为什么选择 EIDE 而不是PlatformIO IDE?
最重要的是 EIDE 可以无缝导入 keil 工程!使得原本稳定的项目不必再验证,EIDE 支持 keil 唯一值钱的组件——AC6编译器。
其次 EIDE 是国人开发的插件,社区沟通无压力,作者冲浪强度也很高、回帖非常及时,一些非插件的技术问题也可以试着骚扰作者。
以下为社区地址
Embedded IDE Forum (em-ide.com)
前期准备
明确我们前期准备的目标,vscode+EIDE安装完成,并使得 EIDE 插件可以检测到ARM-GCC以及AC6的工具链存在。
安装这块本文就不手把手教学了
首要推荐是看官方文档,至少将官方文档中"开始上手"章节完整看完
安装 | Embedded IDE For VSCode (em-ide.com)
其次有一篇社区博文也不错,不过仍然最推荐跟着官方文档进行环境配置
[[VSCODE]基于 EIDE 插件搭建 vscode 下的STM32单片机开发环境 - Foriver - 博客园 (cnblogs.com)](https://www.cnblogs.com/Foriver/p/15772071.html)
额外准备
额外准备是为调试而做的,众所周知,如果片上程序不能单步调试,那基本上是开发不了复杂程序的。
需要用到经典神器 Cortex-debug 插件。
再次引到官方社区的文档。
cortex-debug 用法 - 博客 - Embedded IDE Forum (em-ide.com)
简单来说,有如下两点需要配置
- 配置好ARM-GCC工具链地址,在我的环境中地址为
C:\\111_APPS\\arm-gnu-toolchain-13.2.Rel1-mingw-w64-i686-arm-none-eabi\\bin
,其中有arm-none-eabi-gcc.exe、arm-none-eabi-ld.exe等等工具链程序。 - 配置好你所需的 GDB 应用地址,例如我使用 JLink 调试,那么我需要配置好 JLink GDBServer Path ,在我的环境中地址为
C:\111_APPS\SEGGER\JLink_V794f
,其中有JLinkGDBServer.exe这个应用程序。如果你并非使用JLink,或许需要借助 Openocd 调试,那么需要配置好 Openocd Path 。
我所设置的是设置中的这两项
开始使用
对于初次使用 EIDE 插件的用户来说,首先建议弄一个备份过的 KEIL 工程用作测试,且在 KEIL 中保证这个工程可以正常编译、点亮板子。
依据官方文档导入这个工程
导入项目 | Embedded IDE For VSCode (em-ide.com)
导入时会弹出提示——将 vscode 工作区项目放在何处,对于初次使用,建议直接和原来的 keil 工程文件放一起好了,避免额外的操作。但是使用测试工程熟悉新开发环境后,还是需要将各个不同开发环境的项目进行分离。如果不同的环境配置分离的能力都不具备,基本已经走远了。
开发环境的坑
简单但又不简单的坑,与能否将开发环境开起来有关系,这里仅涉及到AC6编译器,gcc编译器还是太弱了
汇编编译的大坑
汇编器配置如下,这里有大坑!
我们拿到的汇编代码会使用不同的汇编格式编写。
- gnu 格式,其特征:使用
/**/
、//
注释语句,使用.syntax
、.section
、.global
之类的标签 - arm 格式,其特征:使用
;
作为注释开始,不使用.xxx
开头的标签
那么需要自动选择汇编器类型,但是这里如果将汇编器类型配置为auto,那么预处理器定义会不允许使用。就需要将汇编器选择为”arm-clang",然后加上汇编附加选项“-masm=auto",就可以自动选择汇编器同时使用预定义了。
单步调试的配置
众所周知,绝大多数 MCU 工程师都是假装软件工程师的硬件工程师。这些配置对于 MCU 工程师还是太困难了,这也是 KEIL 直到现在仍然是主流 IDE 的原因。
首先观察到调试页,添加一个工作区的调试配置,因为我们工程和源码分在不同的目录,还是以工作区作为调试配置的准则比较好
他会在工作区 json 下自动生成少量代码,通过补全手段或自己编写成如下的样子
其中需要重点配置的是
"cwd"
:current working directory 当前工作目录,通常其他人将这里配置为 ${workspaceRoot},由于我们的工作区不止一个文件夹,我们至少会有 EIDE 工程文件夹和 SRC 源码文件夹两个,所以这里后面需要添加:EIDE的后缀,引到 EIDE 工程文件夹作为基址"executable"
:是生成的可执行文件,在 EIDE 工程的编译输出目录去找"name"
:调试任务的名字,后面会出现在调试页面的下拉框以供选择"type"
:调试器类型,我们连接到芯片调试,填写cortex-debug,使用cortex-debug插件调试即可"device"
:芯片的完整型号,需要调试器支持,我们通常使用 JLink 的调试器 exe 可执行文件,那么也就是我们使用的 JLink 需要支持的名字,这里与烧录配置处的名字一样就好了。(如果烧录配置处配置错,麻烦就大了,叫人就好)"servertype"
:根据你用的进行选择,这里我用的是jlink,如果是 openocd 的改成 openocd 即可"interface"
:调试接线方式"svdFile"
:system view description,对于应用工程师这个可有可无,是用来在 debug 时看寄存器值的,想要有的话可以去 st 官网找,不过其他的单片机就可能不会公开 svd 文件了(keil的 pack 包可以提取到)”liveWatch“
:查看变量实时值和计算式答案的选项,实际上是默认开启的,可以不用配置