时间:2025-05-09

本人笔记均是根据自己多年从业的理解整理而成,转载请备注来源。

目录

1. RVMDK、Keil、GNU三者定义

2. 三者之间的关系与联系

3. 笔记总结


本文主要回答以下两个问题:
(1)RVMDK、KEIL、GNU分别是什么?
(2)相互之间有什么联系?

1. RVMDK、Keil、GNU三者定义

        (1)RVMDK:RealView-Microcontroller-Development-Kit,是Keil-MDK工具的早期全称,是Keil与ARM合作版本。
        (2)Keil:ARM公司旗下的开发平台,集成编译器、调试器、工程管理,属于ARM开发的一种IDE。
        (3)GNU:GNU-GCC-Toolchain-for-ARM,一种开源编译器工具链,例如由GNU组织开发的GCC,与上述二者有本质区别,但在STM32开发者也会用到,比如STM32CubeIDE。

2. 三者之间的关系与联系

        (1)RVMDK是Keil的一部分/旧称,RVMDK是早期Keil-MDK软件与ARM-RealView编译器整合的商品名,现在通常统称为 Keil-MDK,RVMDK不再作为独立概念单独使用。
        (2)Keil可以使用ARM编译器(AC6)、也可以用GNU编译器(GCC),Keil一般默认是使用ARM的官方编译器,即Arm-Clang,从Keil-MDK-5开始,支持切换为GNU工具链(称为Keil-with-GNU)。
        (3)GNU是一种通用开源工具链(由GCC、GDB、make、objcopy等等构成),与RVMDK和Keil就不是一个层次的东西,它只是用于将用户编写的代码编译、汇编、链接成目标器件可识别的机器码,而不能用来做完整的开发与工程管理,本质上GNU工具链是属于IDE的一部分。

3. 笔记总结

        总结一下,RVMDK是Keil的旧称,Keil是用于开发STM32的商业IDE平台,而GNU是用于处理代码的一套开源工具链,STM32新手可以从Keil入门,熟练后转向GNU工具链+CubeIDE+FreeRTOS等构建更灵活的开发方式。

最后,至于GNU和GCC的关系,一图胜千言。可以简单认为,我们平时写的C语言代码转成目标器件可以识别的机器码这一过程,都需要GCC(GNU编译器套件)来完成。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐