您尚未登录。

楼主 # 2023-12-21 18:46:07

musich
会员
注册时间: 2018-04-17
已发帖子: 249
积分: 281

花了小半天 搭了个全新版本 eclipse + gcc ...

花了小半天 搭了个全新版本 eclipse + gcc, 


嘎嘎新的 eclipse
FluxBB bbcode 测试



gcc也是最新版本的13.2

FluxBB bbcode 测试

离线

楼主 #1 2023-12-21 18:51:39

musich
会员
注册时间: 2018-04-17
已发帖子: 249
积分: 281

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

赶紧生成个stm32f103, 体验一下,

闪一个LED, 在PC13,
FluxBB bbcode 测试

程序在这里.
f103_test.rar

离线

楼主 #2 2023-12-21 18:58:14

musich
会员
注册时间: 2018-04-17
已发帖子: 249
积分: 281

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

用来开发单机程序,  相比 keil, iar, 感觉 太拉胯了,  效率太低了, 电脑占用也多,

干什么还是用什么工具吧,

抽空再折腾.

离线

#3 2023-12-22 11:30:51

海石生风
会员
所在地: 深圳
注册时间: 2019-07-02
已发帖子: 660
积分: 793
个人网站

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

只以keil/iar的方式使用Eclipse工具链当然不能体现出它的优点。
比如,在Linux用Eclipse重新编译包含约100个C文件的工程,我2019年配的机器所需编译通常不会超过2秒,那才爽!
再比如,Eclipse搭配Git才能体验代码管理的乐趣,如下图。
Screenshot_20231222_111004-3.png
版本标尺:用于查看当前文件的代码的不同部分是谁/什么时候/怎么写的
Screenshot_20231222_111148.png
文件对比与合并:用于对比仓库中任意版本,并且可以将右边的变动合并到左边
Screenshot_20231222_111542.png
当前修改标尺:用于查看当前未提交的内容对比仓库最新版改了什么

还有很多功能就不一一列举了。

如果你的机器跑Java软件都觉得很慢,平时又不用git,就当我没说。

最近编辑记录 海石生风 (2023-12-22 11:32:35)

离线

#4 2023-12-22 12:05:36

fubaojun2006
会员
注册时间: 2022-02-15
已发帖子: 9
积分: 24

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

工欲善其事必先利其器
我最近在考虑电脑买新的问题。
中意的电脑是龙芯loongarch 全国产 又用开源linux软件
衡量了一下自己的技术动手能力。嗯~ 觉得还得等一等
X86 win 有着几十年生态积累。
虽然每个人有各自的喜好。
但从干活工具的角度出发,不给自己找额外的麻烦是最好的。
毕竟干活已经有很多bug要解决了,还要连带解决工具上的问题,那可太累了

离线

#5 2023-12-22 12:41:36

海石生风
会员
所在地: 深圳
注册时间: 2019-07-02
已发帖子: 660
积分: 793
个人网站

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

@fubaojun2006
不同的人对工具有不同的需求也就会有不同的选择,但也应该在较为充分地了解一个工具后才去判断这个工具是否适合自己。
不同项目对工具也会有不同的需求,当一个项目足够复杂之后,开发者就会不由自主地想换功能更好更为复杂的工具。但如果拿复杂工具去管理只有一两个文件的简单项目,只会把事情搞得更复杂。

最近编辑记录 海石生风 (2023-12-22 12:53:03)

离线

楼主 #6 2023-12-22 13:30:04

musich
会员
注册时间: 2018-04-17
已发帖子: 249
积分: 281

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

@海石生风

我感觉eclipse的编译速度超级的慢,不知与我的设置是否有关。我的电脑是8核心16线程,不算老。

就上面的小程序,可能有几十个小文件,编译的时候,以肉眼可见的速度,一个一个的慢慢闪现。

clean后, 几k小程序 仅编译 估计都要3-4秒。是绝对的单线程 在编译。

相比 IAR的 多线程编译。速度估计差 十倍。

IAR的编译电脑核心和线程数是可以设置的,编译大项目很实用。没看到eclipse有类似的设置。

倒是看到eclipse 不必要的,没用的重复的设置太多了。非常的繁琐。估计有几千个设置项。

个人感觉IAR的编译质量,代码安全性,非常的高。eclipse给人拼凑 不专业的感觉。

n年前,记得玩AT91SAM9261时,用过一段eclipse,到现在,易用性是 一点没提升。

离线

楼主 #7 2023-12-22 13:36:43

musich
会员
注册时间: 2018-04-17
已发帖子: 249
积分: 281

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

@fubaojun2006

说的不错,工欲善其事必先利其器,

我这也是纯属 个人 爱好。闲时 一个 乐趣。

话说上面的那个小程序,可花了我不少时间,这个错误,那个提示的。

离线

楼主 #8 2023-12-22 13:51:12

musich
会员
注册时间: 2018-04-17
已发帖子: 249
积分: 281

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

发现一个有意思的问题。eclipse 生成的stm32程序,竟然没有类似startup.s的汇编启动文件。

没有汇编,它是如何准确定位中断向量的。

离线

#9 2023-12-22 14:41:57

海石生风
会员
所在地: 深圳
注册时间: 2019-07-02
已发帖子: 660
积分: 793
个人网站

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

易用性是个主观的东西,比如我习惯了eclipse、VS Code这些工具了,再用IAR就有种从现代社会进入到原始社会感觉,写代码感觉束手束脚。
eclipse再过20年界面都会是这样,等ecipse变成你说的那种易用性那它就不是eclipse了。比如沁恒搞的那个对eclipse做大量裁减的IDE,让熟悉eclipse的人哭笑不得。

离线

#10 2023-12-22 14:45:35

fubaojun2006
会员
注册时间: 2022-02-15
已发帖子: 9
积分: 24

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

musich 说:

发现一个有意思的问题。eclipse 生成的stm32程序,竟然没有类似startup.s的汇编启动文件。

没有汇编,它是如何准确定位中断向量的。

应该是隐含了,不然可以看看obj 或者反编译 HEX 看看 就知道启动文件了。不然怎么会跑起来呢
Eclipse + gcc , 我在 12年前 做STM32毕业设计的时候,构建了这一套工具链在网上参考的资料。
当时也是想着代码洁癖,使用纯开源工具链。
折腾很久,外加有一个汇编编译报错。
后来感觉这种事情真的是出力不讨好,也是点个灯,后来为了套用安富莱的代码就还是用回了keil
啊,我那不堪的回忆~

离线

#11 2023-12-22 15:02:08

506826164@qq.com
会员
注册时间: 2022-08-07
已发帖子: 57
积分: 77

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

musich 说:

发现一个有意思的问题。eclipse 生成的stm32程序,竟然没有类似startup.s的汇编启动文件。

没有汇编,它是如何准确定位中断向量的。

在vectos_stm32f103xb.c里有定义向量表__isr_ectors[],在sections.ld里把向量表定义在flash 0x08000000位置,stm32上电后从这里运行即可。startup.s是st库里常用写法,但不是唯一方法

离线

#12 2023-12-22 15:22:02

506826164@qq.com
会员
注册时间: 2022-08-07
已发帖子: 57
积分: 77

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

另外编译速度问题,eclipse最终还是调用的make,只要make的参数一样,不管是编译速度还是编译出来的target都是一样的,IDE只是方便了管理,熟悉了编译器原理及参数后,不用IDE也是一样的。上面用eclipse编译stm32这个demo时,勾选上C/C++ Build->Behavior->Enable Parallel build,就会调用cpu全部线程编译,也就是make -j16(cpu16线程),如果没勾选,只会单线程编译,速度当然慢了

离线

#13 2023-12-22 15:35:34

echo
会员
注册时间: 2020-04-16
已发帖子: 359
积分: 364.5

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

基于Eclipse的IDE挺多的,TI的CCS,WCH的MounRiver,ST的CubeIDE,芯来的NucleiStudio,都挺好用的。
单纯编辑方面Eclipse挺好用的,可以媲美vscode和SourceInsight。至于编译,这个和Eclipse没关系,是编译器的事情。

离线

#14 2023-12-22 16:06:07

EE
会员
注册时间: 2020-10-04
已发帖子: 106
积分: 103.5
个人网站

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

vscode+vim插件+gitlens插件+cortex-debug插件的懒人冒个小泡泡。。

离线

#15 2023-12-22 16:10:49

xfdr0805
会员
注册时间: 2020-07-23
已发帖子: 312
积分: 355

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

vscode+gcc+rtt 贼舒服😌

离线

#16 2023-12-22 16:41:30

baidxi
会员
注册时间: 2018-10-27
已发帖子: 36
积分: 36.5

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

musich 说:

发现一个有意思的问题。eclipse 生成的stm32程序,竟然没有类似startup.s的汇编启动文件。

没有汇编,它是如何准确定位中断向量的。

简单啊,一个函数指针数组。

void __attribute__(("noreturn")) reset(void) {

}

typedef void (*intr_func)(void);
enum intr_vector_t {
   RESET,
   XXXX,
};
intr_func intr_vec[] = {
[RESET] = xxx_reset,
[XXXX] = xxx_func,
};

然后再用gcc的链接脚本把intr_vec链接到最前面去就行了。

离线

#17 2023-12-22 17:42:13

海石生风
会员
所在地: 深圳
注册时间: 2019-07-02
已发帖子: 660
积分: 793
个人网站

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

506826164@qq.com  说:

在vectos_stm32f103xb.c里有定义向量表__isr_ectors[],在sections.ld里把向量表定义在flash 0x08000000位置,stm32上电后从这里运行即可。startup.s是st库里常用写法,但不是唯一方法

本质不单单是中断向量表,而是启动代码,即执行main函数之前的初始化.DATA段和.BSS段的代码是用C语言写的。
之所以能用C语言实现启动代码,是因为cortex-m的中断向量表的前4个字节的值为栈指针位置。MCU启动时先从中断向量表获取栈指针位置,确定了栈位置C语言的运行环境就初始化OK了,就可以调用C函数了。

至于中断向量表的定位是通过链接脚本指定的:
先在C语言里指定中断向量表这个数组所处的段(section)

__attribute__ ((section(".isr_vector"),used))
pHandler __isr_vectors[] =
  { 
       (pHandler) &_estack,          // The initial stack pointer
       Reset_Handler,                // The reset handler
        ...
 };

再在链接脚本里指明这个段的链接位置:

MEMORY
{
  FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 512K
  RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 192K
}


SECTIONS
{
    /*
     * For Cortex-M devices, the beginning of the startup code is stored in
     * the .isr_vector section, which goes to FLASH. 
     */
    .isr_vector : ALIGN(4)
    {
        FILL(0xFF)
        KEEP(*(.isr_vector))     	/* Interrupt vectors */
    } >FLASH

链接脚本里的内容是按出现的先后顺序排列的,isr_vector 写在最前所以就链接在FLASH起始位置。

最近编辑记录 海石生风 (2023-12-22 18:11:20)

离线

楼主 #18 2023-12-22 19:34:38

musich
会员
注册时间: 2018-04-17
已发帖子: 249
积分: 281

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

@506826164@qq.com

老兄, 你太帅了, 编译时间直接直接从15s变成3s多了, 

可是看不到编译输出的文件大小了, 在哪打开呢?

build_1.jpg

变成3.7s了,快了不少.
build_2.jpg

离线

楼主 #19 2023-12-22 19:52:30

musich
会员
注册时间: 2018-04-17
已发帖子: 249
积分: 281

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

@baidxi

简单啊,一个函数指针数组。

void __attribute__(("noreturn")) reset(void) {

....


这么做, 好巧妙啊.

离线

楼主 #20 2023-12-22 20:02:55

musich
会员
注册时间: 2018-04-17
已发帖子: 249
积分: 281

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

我又发现一个小问题  eclipse, 是不是 不能打开不同版本的 项目,  我下载了其它网友的程序,

用我的 新版本eclipse 强制打开后,  Project Explorer 是空的.

如此重新导入, “File”->“Import”->“General”->“Existing Projects into Workspace”....

又是一堆乱七八糟的警告和错,

莫非打开一个旧的工程,  gcc也要换成旧版的才行?

离线

楼主 #21 2023-12-22 21:05:27

musich
会员
注册时间: 2018-04-17
已发帖子: 249
积分: 281

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

重新设置了一下eclipse,又生成了一个小程序, 打开了多线程编译,不产生elf文件了.

关掉多线程编译,可以了,

哪位老兄有空帮我配置一下,下面这个闪LED的小程序, 应该是哪里设置不对.
prog_eclipse.rar
https://whycan.com/files/members/834/prog_eclipse.rar


仿真时,卡死在这里了,没弄清楚启动时,搬运了什么数据段.

build_3.jpg

离线

楼主 #22 2023-12-25 14:58:01

musich
会员
注册时间: 2018-04-17
已发帖子: 249
积分: 281

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

绕了一圈, 感觉还是IAR简洁, 和51差不多, 不用费神编译问题.

原来IAR已经原生支持先楫的RISC-V了,还带原厂SDK;


编译速度依旧是秒过.
IAR_RISC-V.jpg





支持的RISV芯片还不少, GD,WCH,ESP32, 海思竟然也有, 海思不是被制裁了吗.

IAR_RISC-V_sup.jpg

离线

#23 2023-12-26 13:54:13

armstrong
会员
注册时间: 2019-04-10
已发帖子: 287
积分: 196.5

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

@musich
我也喜欢IAR的简洁高效。可目前还得不到risc-v的和谐,只能是限制版;请问楼主有经验分享吗?

离线

楼主 #24 2023-12-26 14:44:49

musich
会员
注册时间: 2018-04-17
已发帖子: 249
积分: 281

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

armstrong 说:

@musich
我也喜欢IAR的简洁高效。可目前还得不到risc-v的和谐,只能是限制版;请问楼主有经验分享吗?

这是目前最新的IAR RISC-V, ver3301, 直接覆盖原有文件就可以了.
EWRISCV_3301_Win64_PatchFiles.zip

离线

#25 2023-12-26 22:26:57

XIVN1987
会员
注册时间: 2019-08-30
已发帖子: 253
积分: 314.5

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

@musich

费心劳神的到处找破解,,就算找到了还要担心破解有没有病毒、有没有后门,,会不会检测到破解不声不响的故意产生错误编译结果。。

离线

楼主 #27 2023-12-26 23:24:26

musich
会员
注册时间: 2018-04-17
已发帖子: 249
积分: 281

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

XIVN1987 说:

@musich

费心劳神的到处找破解,,就算找到了还要担心破解有没有病毒、有没有后门,,会不会检测到破解不声不响的故意产生错误编译结果。。

哈哈, 多虑了,   or用免费或正版就没这些问题了.

离线

#28 2023-12-27 12:24:12

armstrong
会员
注册时间: 2019-04-10
已发帖子: 287
积分: 196.5

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

谢谢楼主!IAR能用还是优先使用它的,其次是Segger的,最后才是散装gcc。

离线

楼主 #29 2024-01-02 03:41:17

musich
会员
注册时间: 2018-04-17
已发帖子: 249
积分: 281

Re: 花了小半天 搭了个全新版本 eclipse + gcc ...

放了几天没动,今天打开,只要编译,就会闪退,怪事。

真是神物,捉摸不透。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn