硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1229|回复: 28
收起左侧

[VS Code] 分享一个 VS Code 的单片机开发工具 --- EIDE

  [复制链接]

1

主题

7

回帖

10

积分

新手上路

积分
10
发表于 2024-5-21 23:10:31 | 显示全部楼层 |阅读模式
本帖最后由 nullptr 于 2024-5-22 11:51 编辑


这个是一个 VSCode 插件,名字叫 eide, 主页:Embedded IDE - Visual Studio Marketplace,插件自己的网站:Embedded IDE - A c/c++ development environment for microcontrollers | Embedded IDE For VSCode (em-ide.com)

它可以直接使用 armcc  gcc 等工具链去编译单片机项目,用法也跟 MDK 差不多,基本是图形化的,鼠标点几下就行了,不用自己写 makefile 之类的东西

如果用 gcc 或者 单独打包的 armcc 编译器,则可以完全脱离 MDK

支持一键导入 MDK 项目,编译速度也比 MDK 有所提升

首先贴一下长啥样,左边的侧边栏就是这个插件 的功能区域

1.png

#### 编译速度展示

示例工程来自:https://www.armbbs.cn/forum.php? ... 06611&fromuid=71697

我的电脑 CPU 是 AMD 3600,12 线程编译

这个工程一共有 3423 个文件

eide 插件 12 线程编译用时:1 分 38 秒



2.png 3.png

MDK, 12 线程编译用时2 分 28 秒



4.png 5.png

#### 一键导入MDK工程

6.png

一般的工程都是可以直接导入后使用的,比如上面的示例工程。

如果是比较老的工程。导入后可能要手动调整一下

#### 自带的实用工具

这个插件还带有一些比较实用的小工具,已经自动集成了

### RAM / FLASH 空间占比打印

编译后会自动打印空间占用

7.png

### map 文件分析

编译完成后,可以打开 map view 查看每个 .o 文件的空间占用大小

8.png

还可以与上一次的 map 自动对比差异,改完代码后再编译,如果有大小差异 会标红 或者 标绿显示

9.png

### 一键显示反汇编

如果想看反汇编,可以直接打开某个 .c 文件,右键 反汇编 即可

10.png

### cppcheck 静态检查

这个插件支持用 cppcheck 对项目进行静态检查

11.png

12.png

#### 烧录器支持

几种主流的烧录器也都支持一键烧录

13.png

====================================

反正配合 VSCode 用起来挺方便的,推荐给大家试试

插件有自己的文档:这是什么? | Embedded IDE For VSCode (em-ide.com)


回复

使用道具 举报

4

主题

156

回帖

168

积分

初级会员

积分
168
发表于 2024-5-22 08:55:27 | 显示全部楼层
牛B,看介绍很完善的感觉,有视频演示吗
回复

使用道具 举报

82

主题

736

回帖

982

积分

金牌会员

积分
982
发表于 2024-5-22 09:40:19 | 显示全部楼层
用过,不过还是有一些不完善的地方,比如是否使能MicroLib,优化选项等;
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2024-5-22 11:35:28 | 显示全部楼层
庄永 发表于 2024-5-22 09:40
用过,不过还是有一些不完善的地方,比如是否使能MicroLib,优化选项等;

这些选项都是有的,可能你用的是比较老的版本吧
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2024-5-22 11:37:15 | 显示全部楼层
为什么图片加载不出来?发帖子不支持图片吗?
回复

使用道具 举报

10

主题

35

回帖

65

积分

初级会员

积分
65
QQ
发表于 2024-5-22 11:46:01 | 显示全部楼层
目前确实功能比较完善了,就是调试配置仍然比较麻烦。
楼主有单独打包的AC6编译器吗?AC6许可证似乎是集成在编译器程序里的,实在抽不出来。但是GCC编出来又不如AC6
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2024-5-22 12:00:09 | 显示全部楼层
yono 发表于 2024-5-22 11:46
目前确实功能比较完善了,就是调试配置仍然比较麻烦。
楼主有单独打包的AC6编译器吗?AC6许可证似乎是集成 ...

我感觉调试还好,cortex-debug 配置就几个字段,这个插件会生成默认的,改一下就行了

ARMCC 独立的包,我看到这个论坛里有人发了,我没试过

https://www.armbbs.cn/forum.php? ... &extra=page%3D1
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107852
QQ
发表于 2024-5-22 13:21:03 | 显示全部楼层
nullptr 发表于 2024-5-22 11:37
为什么图片加载不出来?发帖子不支持图片吗?

谢谢分享,这个是论坛的bug,需要单独上传。
回复

使用道具 举报

82

主题

736

回帖

982

积分

金牌会员

积分
982
发表于 2024-5-22 15:14:16 | 显示全部楼层
nullptr 发表于 2024-5-22 11:35
这些选项都是有的,可能你用的是比较老的版本吧

老版本也是有的,但是打个比方MDK工程没有开启microlib,导入后直接勾选上的,还有优化mdk可以选择优化时间还是优化速度,eide应该是不支持勾选的,只有优化等级
回复

使用道具 举报

2

主题

32

回帖

38

积分

新手上路

积分
38
发表于 2024-5-22 17:22:04 | 显示全部楼层
试用了下,还不错
回复

使用道具 举报

6

主题

25

回帖

43

积分

新手上路

积分
43
发表于 2024-5-23 14:24:27 | 显示全部楼层
的确挺实用,我们也做了一份apnote描述怎么使用
AN0193 AT32 MCU With VSCode EIDE
描述了VSCode开发环境中,使用Embedded IDE管理AT32项目。
下载地址:  https://www.arterytek.com/file/download/1644
回复

使用道具 举报

2

主题

43

回帖

49

积分

初级会员

积分
49
发表于 2024-5-23 19:23:48 | 显示全部楼层
muyichuan2012 发表于 2024-5-23 14:24
的确挺实用,我们也做了一份apnote描述怎么使用
AN0193 AT32 MCU With VSCode EIDE
描述了VSCode开发环境 ...

这么大,刚想配置at32的环境,枕头就来了
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2024-5-26 23:05:27 | 显示全部楼层
浴火重生 发表于 2024-5-22 08:55
牛B,看介绍很完善的感觉,有视频演示吗

没有官方的视频,只有文档
不过b站上有别人制作的视频
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2024-5-26 23:12:28 | 显示全部楼层

破解版本的 AC5、AC6 独立编译器包,这个插件现在也是有的,可以一键安装,安装后会自动设置防火墙禁掉exe文件防止联网




回复

使用道具 举报

32

主题

264

回帖

365

积分

高级会员

积分
365
发表于 2024-5-31 09:07:24 | 显示全部楼层
有没有添加Lib的示例
回复

使用道具 举报

0

主题

111

回帖

111

积分

初级会员

积分
111
发表于 2024-5-31 09:55:45 | 显示全部楼层
nullptr 发表于 2024-5-26 23:12
破解版本的 AC5、AC6 独立编译器包,这个插件现在也是有的,可以一键安装,安装后会自动设置防火墙禁掉ex ...

这个操作法律风险好像有点高啊。其实引导用户装个V6社区版就好了,V5应该也没太多非用不可的用户(有的话自己会想到办法)。
回复

使用道具 举报

7

主题

104

回帖

125

积分

初级会员

积分
125
发表于 2024-5-31 10:04:56 | 显示全部楼层
是不是 WIN7 已经不能玩这VS code 了,试了下各种报错,各种安装错误
回复

使用道具 举报

2

主题

43

回帖

49

积分

初级会员

积分
49
发表于 2024-5-31 12:45:09 | 显示全部楼层
ilcvm 发表于 2024-5-31 09:55
这个操作法律风险好像有点高啊。其实引导用户装个V6社区版就好了,V5应该也没太多非用不可的用户(有的话 ...

就是,插件搞这个上不了台面
另外,请教下用这个的朋友,如何把eide目录移到vscode的DATA里(便携化)
回复

使用道具 举报

2

主题

43

回帖

49

积分

初级会员

积分
49
发表于 2024-6-1 13:30:54 | 显示全部楼层
插件里要修改这个函数,就可以支持便携化了,现在还看不懂
_formatPathForPluginSettings(e) {
        const t = h.WorkspaceManager.getInstance().getWorkspaceRoot();
        return t && !this.eideEnv.has("${workspaceFolder}") && this.eideEnv.set("${workspaceFolder}", t.path), this.eideEnv.forEach((t, r) => {
                const n = r.replace("$", "\\$").replace("{", "\\{").replace("}", "\\}");
                e = e.replace(new RegExp(n, "gi"), t)
        }), !c.isAbsolute(e) && t && (e = t.path + u.File.sep + e), e
}
回复

使用道具 举报

2

主题

43

回帖

49

积分

初级会员

积分
49
发表于 2024-6-1 21:20:48 | 显示全部楼层
文心一言帮我做了注释
/**  
* 格式化插件设置中的路径  
*  
* @param {string} e - 需要进行格式化的路径字符串  
* @returns {string} - 格式化后的路径字符串  
*  
* @description  
* 此函数将用于处理插件设置中的路径。首先,它会获取当前工作区的根目录路径,  
* 如果环境变量中不存在"${workspaceFolder}",则将其设置为工作区根目录的路径。  
* 接着,遍历环境变量对象,将键(即变量名)中的特殊字符($、{、})进行转义处理,  
* 并在原路径字符串中替换这些变量名为对应的值。  
* 如果格式化后的路径不是绝对路径,并且工作区根目录存在,则会在路径前添加工作区根目录路径和文件分隔符。  
* 最后,返回格式化后的路径字符串。  
*/  
_formatPathForPluginSettings(e) {  
    const t = h.WorkspaceManager.getInstance().getWorkspaceRoot();  
    // 如果工作区根目录存在,并且环境变量中没有"${workspaceFolder}",则设置它  
    return t && !this.eideEnv.has("${workspaceFolder}") && this.eideEnv.set("${workspaceFolder}", t.path),  
    // 遍历环境变量,替换路径中的变量名  
    this.eideEnv.forEach((t, r) => {  
        const n = r.replace("$", "\\$").replace("{", "\\{").replace("}", "\\}");  
        e = e.replace(new RegExp(n, "gi"), t)  
    }),  
    // 如果路径不是绝对路径,并且工作区根目录存在,则在路径前添加工作区根目录路径和文件分隔符  
    !c.isAbsolute(e) && t && (e = t.path + u.File.sep + e),  
    e;  
}
回复

使用道具 举报

2

主题

43

回帖

49

积分

初级会员

积分
49
发表于 2024-6-1 22:05:50 | 显示全部楼层
在AI的加持下,修改了这个函数,让eide终于支持了便携版vscode
在settings.json里可以这样写路径了 ${env:VSCODE_PORTABLE}
"EIDE.ARM.ARMCC5.InstallDirectory": "${env:VSCODE_PORTABLE}\\eide\\tools\\armcc",

================================
_formatPathForPluginSettings(e) {  
    // 首先检查 process.env.VSCODE_PORTABLE 是否存在  
    if (process.env.VSCODE_PORTABLE) {  
        // 如果存在,则检查 e 中是否包含 "${env:VSCODE_PORTABLE}" 并替换它  
        if (e.includes('${env:VSCODE_PORTABLE}')) {  
            e = e.replace('${env:VSCODE_PORTABLE}', process.env.VSCODE_PORTABLE);  
        }  
  
        // 在这里,e 可能已经是一个完整的路径了,你可以根据需要添加额外的逻辑  
        // 例如,确保 e 是绝对路径(如果需要的话)  

        // 因为已经处理了 VSCODE_PORTABLE,所以下面的逻辑就不需要再执行了  
        return e;  
    }  
  
    // 如果 VSCODE_PORTABLE 不存在,则继续原有的逻辑  
    const t = h.WorkspaceManager.getInstance().getWorkspaceRoot();  
  
    // 如果 t 存在且尚未设置 ${workspaceFolder},则设置它  
    if (t && !this.eideEnv.has("${workspaceFolder}")) {  
        this.eideEnv.set("${workspaceFolder}", t.path);  
    }  
  
    // 替换 e 中的环境变量(现在只会替换 ${workspaceFolder},因为 VSCODE_PORTABLE 已经被处理了)  
    this.eideEnv.forEach((t, r) => {  
        const n = r.replace("$", "\\$").replace("{", "\\{").replace("}", "\\}");  
        e = e.replace(new RegExp(n, "gi"), t);  
    });  
  
    // 确保 e 是绝对路径(如果需要的话)  
    if (!c.isAbsolute(e) && t) {  
        e = t.path + u.File.sep + e; // 假设 u.File.sep 是路径分隔符  
    }  
  
    return e;  
}
回复

使用道具 举报

2

主题

43

回帖

49

积分

初级会员

积分
49
发表于 2024-6-4 15:54:12 | 显示全部楼层
终于搞定了便携功能,用附件替换 VSCode\DATA\extensions\cl.eide-3.17.1\dist 目录下的extension.js文件即可,对于便携版,.eide的目录默认在DATA文件夹下
extension.7z (418.91 KB, 下载次数: 0)
回复

使用道具 举报

10

主题

35

回帖

65

积分

初级会员

积分
65
QQ
发表于 2024-6-5 19:17:39 | 显示全部楼层
eeee 发表于 2024-6-4 15:54
终于搞定了便携功能,用附件替换 VSCode\DATA\extensions\cl.eide-3.17.1\dist 目录下的extension.js文件即 ...

666,我也在这样干,使用vscode便携版。把GCC编译链和openocd工具还有其他工具包都放在vscode目录下,再配置好data文件夹和插件,用Inno Setup简单打个安装包,简直就是自己的IDE
回复

使用道具 举报

2

主题

43

回帖

49

积分

初级会员

积分
49
发表于 2024-6-5 20:28:29 | 显示全部楼层
yono 发表于 2024-6-5 19:17
666,我也在这样干,使用vscode便携版。把GCC编译链和openocd工具还有其他工具包都放在vscode目录下,再配 ...

eide作者回复下版原生支持便携
回复

使用道具 举报

5

主题

299

回帖

314

积分

高级会员

积分
314
发表于 2024-6-6 09:10:47 | 显示全部楼层
23楼的高手,如何实现VSCODE便携的?有没有新手包?
回复

使用道具 举报

43

主题

226

回帖

365

积分

高级会员

积分
365
发表于 2024-6-7 17:33:42 | 显示全部楼层
非常好用,主要是可以跨平台。这点很牛逼了。
回复

使用道具 举报

10

主题

35

回帖

65

积分

初级会员

积分
65
QQ
发表于 4 天前 | 显示全部楼层
soyshell 发表于 2024-6-6 09:10
23楼的高手,如何实现VSCODE便携的?有没有新手包?

参考在这里,可以制作成压缩包形式
在windows中运行VSCode便携版(绿色版)并设置成中文界面的简易教程_vscode1.70绿色运行-CSDN博客
如果想要制作成安装包形式或者实现自动破解AC6工具等操作,需要自行打包安装程序以及编写运行脚本
下面是一个打包工具的参考,我也是用这个玩意打包
超级详细:使用Inno Setup打包可执行的exe软件,可在任何电脑中运行。_innosetup 执行exe-CSDN博客

第一个链接教程里最重要的就是需要自行创建一个"data"文件夹,后续的vscode插件、用户配置等等,都会被安装存储在这里面
企业微信截图_1718173500158.png 企业微信截图_17181735719851.png
然后是一个推荐的操作,把你需要的编译链工具、仿真工具等等外部软件,那些通常教程里会让你设置path环境变量的软件工具,统统放到根目录下的一个自建文件夹里,压缩或者打包安装程序的时候一并包进去,彻底化身IDE。
企业微信截图_17181738531277.png


大致流程是这样,我还没有想好怎么自动解决工具链的路径问题,暂时工作也很忙没空整这个,所以没有彻底打成便携版


回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 4 天前 | 显示全部楼层
回复

使用道具 举报

75

主题

1229

回帖

1454

积分

至尊会员

积分
1454
发表于 4 天前 | 显示全部楼层
nullptr 发表于 2024-6-12 14:58
便携版已经有了:

https://discuss.em-ide.com/d/717-vscode-v1900-with-eide-v31727z

那7z压缩出来应该很大吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-16 03:20 , Processed in 0.312854 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表