Keil 5 优化方案
/** * @file Keil_5_优化方案 * @brief 使用了 VSCode + Embedded IDE + Cortex-Debug 搭建 STM32 开发 & 调试 环境.可从 Keil 无缝衔接至 VSCode. * @note 就结果而言,这套工作环境在大多数方面都达到了持平或高于 Keil 的水平,唯一的美中不足是 debug 的时候无法在程序运行时实时查看变量,不过该有的诸如内存/堆栈查看、更改寄存器值等操作还是都有的. * * @author LumiFlux * @date 2023-02-13 * @copyright Copyright (c) 2023 北京理工大学机器人队 * */
目前版本的 EIDE 仅支持导入
MDK(.uvprojx)
、IAR(.eww)
与Eclipse(.cproject)
项目,本文以 MDK 为例.
引言
为什么要从 Keil 转移到 VSCode
Keil 作为老牌嵌入式开发软件,并且在界面做的一坨答辩的情况下被一直沿用至今,其功能确实无可置疑的强,甚至她的 Debug 功能时至今日少有人能出其右.然而她的问题也很明显:
- 语法检查: keil 的语法检查没有大问题,甚至 AC6 用到了 llvm 系列的语法检查.然而她的显示延迟实在过大,相信每个人都曾在实际的工程中,看到改完代码后, 0 warning 0 error 的情况下看到红线迟迟不消失.
- 代码补全: Keil 确实有代码补全功能,但是这个功能及其玄学,时而出现时而没有,而且只支持逐字搜索,不能像 VSCode 或 JB 家的 IDE 一样实现跳跃搜索.
- 代码高亮: Keil 仅对最基本的代码格式实现了高亮,远远看去白纸黑字,根本分不清哪个是哪个.
除此之外还有许多问题,包括但不限于:
- 缺少代码格式化功能.
- 对
{}
,[]
,()
," "
等符号的优化非常糟糕. - 时至今日还依然使用单线程编译工程,以至于 rebuild 少则 40s 多则数分钟.
所以,米娜桑,加入光荣的进化吧,对 Keil 使用 VSCode 罢!
本文默认阅读者已经安装了
Keil uVersion5
并进行了一定时间的实践.
如果你没有安装过,请自行搜索安装keil
或ARMCC V5
.
VSCode
到VSCode官网安装即可.
Embedded IDE
这一部分很大程度上来源于EIDE官方文档(官中,推荐阅读),这里只介绍EIDE的基础用法.
EIDE简介
EIDE 是一个 VSCode 插件,用来开发单片机项目,比如:
8051
,stm8
,stm32
,other cortex-m mcus
...
EIDE支持数量众多的工具链与调试器,如OpenOCD
、GNU Arm Embedded Toolchain
、JLink
等,且对很多工具提供了一键安装的功能,配置简单,同时EIDE还提供了更加高效的编译、烧录程序.
EIDE安装
前置插件
Chinese(Simplified)(简体中文) | 中文汉化(可选) |
---|---|
C/C++ | 提供C/C++语法支持 |
EIDE本体
打开 VSCode 插件市场,搜索并安装 Embedded IDE
你也可以通过github/eide下载离线安装包
安装成功后,EIDE将启动并自动安装 eide-binaries 和 .NET6 X64 ,安装完成后,重启VSCode应用插件.
EIDE推荐插件
安装EIDE后,可在VCSode插件市场搜索@recommended
以显示所有推荐的插件,可以按需下载,这里列举几个比较有用的插件
插件 | 作用 |
---|---|
Arm Assembly | 提供ARM64汇编语言语法高亮 |
Output Colorizer | 提供日志文件着色 |
EIDE配置
安装 EIDE 后,在 VSCode 活动栏中将出现 EIDE 图标,点击可以打开 EIDE 工作区.
工具链配置
配置 ARMCC 工具链
点击EIDE工作区 -> 设置工具链 -> Keil MDK
,在弹出的窗口中找到本地的 TOOLS.INI 文件,EIDE将自动为你定位 ARMCC 编译器路径.如有需要,你也可以使用设置工具链 -> ARMCC V5
或ARMCC V6
来单独配置 AC5 与 AC6 的路径.
安装 Keil uVersion5 时 TOOLS.INI 文件将安装在
Keil安装路径\TOOLS.INI
.
EIDE 其它内置工具链的配置方法
EIDE 支持许多工具链,且提供了一键下载功能.点击安装实用工具
并在弹出的菜单中点击所需的工具链即可完成下载.
工具链会自动安装至
<user_home>/.eide/tools
,然后EIDE将导出bin
路径到系统环境变量.
如需查看已安装的工具链路径,可在VSCode终端面板中新建EIDE Treminal
终端,输入ls env:
查看所有环境变量.
其他设置
点击活动栏 -> EIDE -> 打开插件设置
,找到并勾选EIDE.ARM.Potion: Axf To Elf
,以便于之后的调试.
导入项目
打开点击EIDE 工作区 -> 导入项目 -> MDK
,在弹出的窗口中选择项目工程文件的.uvprojx
,即可导入项目.
导入后 EIDE 会弹出窗口,询问 EIDE 的存放目录,选择是否给 EIDE 工作区设置独立路径均可.
选择是否与 Keil 存放在同一目录下各有利弊,如果使用独立的 EIDE 工作目录可以保证工程文件的结构性,结构清晰,也便于多人协作时传输文件.但可能对 intelliSence 等功能产生一定的影响.
同时 EIDE 会在所选的工作区生成一个.code-workspace
文件,之后可以使用打开项目
打开之前的EIDE工程.
项目设置
在导入项目后,还需对项目的构建、烧录选项进行一些设置,每个工程仅需设置一次.
构建配置
这里可以设置项目所使用的编译器,点击构建配置
右侧按钮即可配置(这里以ARMCC V5
为例),选择AC5
.
同时在构建配置的下拉菜单中可以进一步的设置CPU类型
,RAM/FLASH布局
等.这些选项对应原Keil中的魔法棒工具,一部分在导入时会自动配置,一般保持默认即可.
烧录配置
这里可以设置项目所使用的烧录器类型,目前可供选择的有JLink
,STLink
,pyOCD
,OpenOCD
,Shell
五种,根据需要选择即可.
JLink与OpenOCD可在
安装使用工具
中一键下载.
STLink若找不到驱动/未安装驱动,在烧录时会询问是否自动安装,点击是即可.
CMSIS组件导入
EIDE 不支持一键导入 MDK 下的 RTE 组件,因此如果使用了一些包(例如arm_math
),则需要手动导入,打开活动栏 -> 工程项目 -> 项目资源
,在展开的::CMSIS
文件夹上右键,选择添加文件
,添加相应的组件即可.
无法打开源文件"arm_math.h"报错的解决办法
产生这个问题的原因为上一节所提到的RTE组件问题,在::CMSIS
文件夹上右键,选择添加文件
,找到并添加arm_cortexM4lf_math.lib
, 并在项目属性 -> 包含目录
中添加arm_math.h
及相关库的头.
如果安装了Keil,
arm_cortexM4lf_math.lib
将位于Keil安装目录/ARM/PACK/ARM/CMSIS/5.0.1/Lib/ARM/
,arm_math.h
的包含目录为Keil安装目录/ARM/PACK/ARM/CMSIS/5.0.1/Includes
Cortex-Debug
EIDE仅提供了代码的编译及烧录功能, debug 功能由 Cortex-Debug 完成.
Cortex-Debug简介
ARM Cortex-M GDB Debugger support for VSCode
Cortex-Debug安装
打开 VSCode 插件市场,搜索 cortex-debug
并安装.同时会自动安装debug-tracker-vscode
,MemoryView
,RTOS Views
三个附加组件.
此外,还需手动下载一个待调试芯片的支持包(这里以 STM32F4 为例)
Cortex-Debug配置
点击VSCode活动栏中的EIDE
按钮,选择安装实用工具
,安装GNU Arm Embedded Toolchain (stable)
与OpenOCD Programmer
安装调试环境.
点击VSCode活动栏中的调试和运行
按钮,点击齿轮图标.
在弹出的窗口中选择(这里以OpenOCD-STLink
为例)Cortex Debug: OpenOCD)
,紧接着会生成一段配置文件,主要修改以下配置:
"configFiles": [ "interface/stlink.cfg", -> 这个是你调试器的型号 "target/stm32f4x.cfg" -> 这个是芯片的型号 ], "executable": "build/debugDemo/debugDemo.elf" -> 这个是.elf文件的路径
更多使用方法可以查看Cortex-Debug Wiki或Cortex-debug 用法
一个工程示例
这里以队内代码框架(MDK工具链)举例
导入工程
在EIDE工作区点击导入项目.在弹出的下拉菜单中选择MDK
在弹出的窗口中找到FrameDemo/MDK-ARM/FrameDemo.uvprojx
点击打开
选择不与Keil项目储存在同一目录下
,立即切换工作区
项目工程导入完成
配置工程
-
在
EIDE工作区 -> FrameDemo -> 项目资源 -> ::CMSIS
上右键,选择添加文件,找到并添加arm_cortexM4lf_math.lib
,并在EIDE工作区 -> FrameDemo -> 项目属性 -> 包含目录
添加Includes
,具体细节参见 #无法打开源文件"arm_math.h"报错的解决办法 -
EIDE工作区 -> FrameDemo -> 构建配置
选择AC5 -
EIDE工作区 -> FrameDemo -> 烧录配置
选择STLink(以STLink为例)
编译&烧录
点击页面右上角烧录按钮,出现以下信息即编译成功
链接要烧录的板子,点击页面右上角烧录按钮,出现以下信息即烧录成功
终端的进度条出现乱码属于正常现象,为ARMCC5版本特性(
调试
点击活动栏 -> 运行和调试
在调试按钮旁的下拉菜单中选择对应的调试器,点击调试按钮,出现以下页面即成功
如出现错误,请按照 #Cortex-Debug配置 配置launch.json
一些可以提高编写舒适度的外围插件
插件 | 作用 |
---|---|
Doxygen Documentation Generator | 一键生成函数注释及文档注释 |
C/C++ Snippets | 使用代码块模板,避免重复性工作 |
TabNine AI Autocomplete | AI 代码自动补全 |
本文作者:北京理工大学机器人队
本文链接:https://www.cnblogs.com/bit-dreamchaser/articles/17115123.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步