打印
[其他]

华大 MCU 之六 SEGGER Embedded Studio 及Ozone使用Jlink 调试

[复制链接]
1362|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
AD, IO, ge, mb
 首先说一下,我之前的开发流程是:VSCode 编辑代码 + Keil 编译及调试。Keil 的调试功能虽然很强大,但是多数功能需要配合 ARM 自家的 ULINKpro 才可以用,例如 Performance Analyzer、Event Viewer 等。而我手头只有Jlink 和 ULINK 非 pro 版的…

  在最近的项目中,随着代码量的不断增加,Keil 的编译速度瓶颈越来越明显!有的问题往往是调试一分钟,编译半小时!编译过慢的问题已经严重影响工作效率,于是开始寻找一个替代品!

使用特权

评论回复
沙发
9dome猫|  楼主 | 2022-3-21 23:23 | 只看该作者
Ozone 调试
  起初,在 SEGGER 官网发现了一个名为 Ozone 的 Jlink 专用的调试器,非常小巧,调试也挺好用。不过,它仅仅就是个 Jlink 配套的调试器,不能编译代码。如果使用它,开发流程就是:VSCode 编辑代码 + Keil 编译 + Ozone 调试。

使用特权

评论回复
板凳
9dome猫|  楼主 | 2022-3-21 23:25 | 只看该作者
调试的话,需要的功能基本都是全的!

使用特权

评论回复
地板
9dome猫|  楼主 | 2022-3-21 23:26 | 只看该作者

使用特权

评论回复
5
9dome猫|  楼主 | 2022-3-21 23:28 | 只看该作者
 实际情况是,Keil 本身的调试功能还是挺好用的,再单独用 Ozone 调试似乎也没啥必要。因此,在试用了一段时间之后,现在基本很少用 Ozone 调试了。

使用特权

评论回复
6
9dome猫|  楼主 | 2022-3-21 23:32 | 只看该作者
SEGGER Embedded Studio
  放弃 Ozone 调试之后,无奈继续使用 Keil 编译及调试,然后继续寻找代替方案。同样在 SEGGER 官网转悠的时候,发现了 SEGGER Embedded Studio 这个东西,试用了一下还是不错的!

使用特权

评论回复
7
9dome猫|  楼主 | 2022-3-21 23:32 | 只看该作者

使用特权

评论回复
8
9dome猫|  楼主 | 2022-3-21 23:33 | 只看该作者
自带多套编译套件:GCC、Clang(LLVM)、SEGGER自家编译套件(应该是基于 LLVM 改的),随便选择使用哪个。
可以配置使用 ARM 的编译器(Keil 自带的 ARMCC ),这是重点!!! 因为工作环境不允许使用别的编译器发布程序!
代码编辑功能用起来也还行(相比于 Keil 来说),与 VSCode 这一类相比还是有些逊色!比较明显的就是代码高亮!
非商用,免费无限制,而 Keil、IAR 均限制代码量大小!
  在后续的了解过程中,发现 SEGGER Embedded Studio 就是 SEGGER 买了 CrossWorks 的代码源代码,然后自己再加工一下改出来的!CrossWorks 本身是支持多种调试器的,SEGGER Embedded Studio 则进行了限制,只能支持自家的 Jlink!! 下面是这两个软件的对比图:


 这两者都使用在线的 Packages 来提供了对于不同厂家的 MCU 的支持。使用者可以直接从软件的 Packages Manger 在线下载自己对应的 MCU 支持包(和 Keil5 中的 Pack Installer 一样的作用)!下面是 两者的 Package Manager 的对比图:

使用特权

评论回复
9
9dome猫|  楼主 | 2022-3-21 23:34 | 只看该作者
 从支持的 MCU 来看,CrossWorks 要更胜一筹!我觉得,说 SEGGER Embedded Studio 就是 CrossWorks 的阉割版一点都不为过!SEGGER Embedded Studio 也就比 CrossWorks 多了 SEGGER 自家基于 LLVM 的编译套件而已!

  关于 CrossWorks 这里不多说,想要进一步了解它的自行去 CrossWorks 的官网:https://www.rowley.co.uk/。下面我们重点来说一下 SEGGER Embedded Studio,当然,这俩软件的配置及项目管理方式是一模一样的!只要搞懂其中一个,另一个肯定不在话下。

项目管理
  SEGGER Embedded Studio 的项目管理使用了 Solution + Project 的方式,相比于 Keil 的单 Project 项目管理(注:Keil 也支持 WorkSpace),不支持文件夹嵌套 不知道强多少。一个 Solution 下可以有多个 Project,Project 下可以有个多个文件或者文件夹,文件夹下又可以有文件夹或文件!但是,SEGGER Embedded Studio 的 Solution + Project 的配置却是相当混乱的,或者说是不容易理解的!

上图中,我是经过整理之后(手动编辑了.emProject)的项目文件,默认的项目文件是有好几种配置的。导致新手根本不知道该怎么去更改配置。比如,更改 Solution 的各种配置,还是更改 Project 的各种配置。Solution 下的 Public Configuration 及 Private Configuration 下的各种配置与 Project 下的 Public Configuration 及 Private Configuration 下的各种配置有啥区别?如果在结合 .emProject 那就更难以理解了。

  根据目前我的理解,他们的范围由大到小依次为 Solution > Project > Configuration,后者可以继承前者的各种配置。Public Configuration 可以继承 Private Configuration 中的各种配置,我们实际的处理(编译调试)的项目,实际就是一个个的 Public Configuration。因此,那些通用配置一般都放在上层,下层直接继承!

使用特权

评论回复
10
9dome猫|  楼主 | 2022-3-21 23:37 | 只看该作者
编译套件选择
  前面我们说过,SEGGER Embedded Studio 本身就带了 GCC、Clang(LLVM)、SEGGER自家编译套件(应该是基于 LLVM 改的)这三种编译套件,在建立项目时,我们可以根据需要选择其中一种。但是这里有个前提,必须是 SEGGER Embedded Studio 所支持的 MCU 才可以。因为,MCU 的启动文件是特定于编译器的。例如,在 STM32 系列 MCU 中,都会带有不容编译器的启动文件:

使用特权

评论回复
11
9dome猫|  楼主 | 2022-3-21 23:38 | 只看该作者
除此之外,其他有些文件也是特定于开发环境的,例如,Keil(ARMCC)的分散加载文件(.sct); IAR 的 ILINK Configuration File (.icf)文件等。
SEGGER Embedded Studio 默认(SEGGER 自家编译套件)也是使用 .icf 文件来生成最终的 elf 文件

使用特权

评论回复
12
9dome猫|  楼主 | 2022-3-21 23:54 | 只看该作者
很不幸的是,SEGGER Embedded Studio 目前还不支持华大的 MCU。这也就意味着,我们不能在 SEGGER Embedded Studio 中建立华大的 MCU 的项目(华大的官网的开发环境支持包也没有提供对 SEGGER Embedded Studio 的支持)。

  幸运的是,SEGGER Embedded Studio 支持使用外部编译套件,我么可以直接将 Keil 的项目文件转成 SEGGER Embedded Studio 项目,编译套件选择外部的 ARMCC。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

134

主题

1421

帖子

2

粉丝