在2020年,MCU不仅仅是一块硅片。事实上,它附带了一个完整的生态系统,包括BSP、集成的第三方库、工具、现场应用程序支持等等。
作为固件工程师,我们经常被当作既成事实来选择MCU。成本考虑、外围设备或引脚要求通常优先于SDK。
然而,我们被允许有自己的观点。所以今天我在这里给你的第一个帖子是新的“比较MCU SDK”系列。
在这篇文章中,我下载了10个流行的Cortex-M4微控制器的SDK,并评估了编译一个简单的示例是多么简单。我包括开始的一步一步的指导,满分10分的评分,以及一些评论。
不用说,这是基于我自己非常具体的设置(MacOS,VIM)的观点。您的里程数可能会有所不同!
我的理想芯片SDK提供了一种使用我选择的工具来构建和刷新项目的方法。这似乎是一个很低的门槛,但很少有人能达到。以下是芯片开发工具包(ChipSDK)不应该做的事情。
当我在太阳微系统公司工作时,我把Windows抛在了脑后,至今没有回头看过。今天,我每天的司机是一台MacBook Air。不幸的是,一些芯片供应商要求你使用他们基于Windows的工具来设置和构建你的项目。现在大多数编译器都是跨平台的,没有理由这样做。
我从大学起就开始用VIM了,你可以从我冰冷死人的手中拿走它。我爱VIM!我就是这样配置的。它轻量级、速度快,而且模式编辑是一种工作方式(证明我错了!)。因此,您应该理解大量基于Eclipse的IDE芯片供应商想要强加给我的令人惊愕的感觉。我不想与他们的游艇Java环境有任何关系。
我建议SDK提供Makefile,而不是基于Eclipse的IDE。Make是最小的公分母构建系统,并且得到了许多工具的良好支持。Bonus指出IAR和Keil的项目文件,因为你们中的许多人喜欢这些工具。
如果一张图片抵得上千言万语,那么一个有效的代码示例就能抵得上一百万个单词。给我举一个你的MCU的每个主要用例的例子。如果你给我一个每个外围设备的例子,你会得到奖励。
北欧半导体公司的Cortex-M4 MCU系列包括nRF52810、nRF52810和nRF52840。它们都配备了2.4 GHz的无线电,如果你只想要一个MCU,这可能会让你望而却步。
在我看来,nRF5-SDK(很快将被同样出色的NRF-Connect-SDK取代)是目前最好的芯片SDK。
NRF5 SDK可以正确执行所有操作。无需注册、无需安装、无需在线配置器。它甚至是在BSD许可下分发的!
CD转到您感兴趣的示例。示例包含在Example文件夹中。在我的例子中,示例/外围设备/blinky/pca10040/空白。
Tiva C系列是德州仪器公司Cortex-M微控制器系列的最新产品。我没有太多使用它们的经验,但它们看起来像是带有广泛外设(包括USB)的坚固微控制器。
和北欧一样,Texas Instruments也做了很多正确的事情:单压缩下载、多IDE支持(包括Makefile),以及很多例子。我为不可靠的exe文件(见下文)和更复杂的许可证划掉了一分。
您将在GCC文件夹中保留一个axf(也称为ELF)和一个bin文件。
恩智浦Kinetis的血统可以追溯到摩托罗拉(Motorola)通过飞思卡尔(Freescale)。它是恩智浦两条Cortex-M系列中的一条(另一条是LPC)。像许多MCU供应商一样,NXP通过一个配置器生成他们的SDK,并提供一个基于Eclipse的IDE,两者都是“MCUXpresso”品牌。
我发现在线MCUXpresso SDK构建器使用起来轻而易举。它快速、直观,并且可以跟踪您以前配置的所有SDK。干得好,恩智浦!这个工具唯一的缺点是需要你在他们的网站上注册。
我仍然倾向于将所有示例和目标集中在一个地方的单块SDK,但您可能会争辩说,这会生成一个更小、更精简的SDK。
最棒的是,SDK使用cmake生成构建文件。Cmake可以说比Make更便携,因为它在Windows上是本地支持的。
命名你的项目,选择一个工具链,以及一些第三方软件,比如FreeRTOS或mbedTLS。
ST已经经历了STM32系列IC的SDK的多次迭代,最新的版本被称为STM32 Cube,它取代了历史悠久的StandardPeriphery Library。虽然Cube引入了很多复杂性,但它这样做是有充分理由的:STM32系列已经发展到包括14个不同的MCU系列,从非常低的功耗L0到非常高性能的H7。
注:读者Nathan Jones在这篇文章首次发布后指出,单片SDK下载的STM32版本仍然存在。例如,下面是STM32F1的SDK
虽然Cube支持很多IDE,比任何其他MCU SDK都支持更多的示例,但它将所有这些都包装在一个笨重的桌面应用程序中。我在使用STM32CubeMX时遇到了很大的麻烦:我不得不把它安装在我的笔记本电脑上,它速度慢、体积大、笨重。我不喜欢这样。
STM32CubeMX根据您的配置生成一个“项目”目录。这意味着您不会将所有的示例代码放在一个文件夹中,而是需要为不同的示例生成不同的项目。
必要的复杂性?也许吧。但我怀念更简单的外围图书馆,它是一个单一的档案馆。
下载并安装CubeMX:STM32CubeMX-STM32Cube初始化码生成器-意法半导体。注:这需要在ST的网站上注册。
输入项目名称、路径,然后选择工具链。在我的例子中是“Makefile”
爱特梅尔公司最近被MicroChip收购,长期以来一直在生产SAM系列MCU。SAMD21在爱好者圈子里很受欢迎,有几款Arduino和Adafruit的设计。Atmel的外围库AXF经历了与ST类似的转变:它从一个单一的压缩存档文件变成了一个配置器。
爱特梅尔的配置器是基于网络的,比ST的更符合人体工程学。然而,由此产生的Makefile要糟糕得多,甚至有一个bug(我不得不修复OS检测)。
FIX Makefile OS检测:@@-22,7+22,7@@Else MK_DIR=mkdir-p endif+ifeq($(Shell uname|Cut-d_-f 1),Darwin)-ifeq($(Shell uname|Cut-d_-f 1),Darwin)MK_DIR=mkdir-p endif endif
Silabs Cortex-M MCU来自对Energy Micro的收购,Energy Micro以其MCU的低功耗而闻名。Silabs现在生产一系列基于Cortex-M的MCU,有些带有2.4 GHz无线电。
与这份榜单后半部分的许多供应商一样,Silabs将其SDK与基于Eclipse的IDE一起发布。在他们的案例中,他们称之为“简单工作室”。虽然简单性是这些IDE中最好的,但它确实给我们这些不喜欢Eclipse的人留下了很少的解决方案。在这里,我选择使用Eclipse生成Makefile。
支持ARMCC/KEIL、IAR、Makefile❌(SIMPLICE STUDIO只支持IAR和GCC)。
Simple Studio庞大(约1 GB)、速度慢且复杂。像所有基于Eclipse的IDE一样,它生成到处都是硬编码路径的糟糕的Makefile。
给项目起个名字,然后选择“带项目文件”下的“复制内容”。
英飞凌(Infineon)和瑞萨(Renesas)MCU在工业应用和汽车行业很受欢迎。在这两种情况下,标准安装程序都是Windows可执行文件,用于安装基于eclipse的IDE。
不过,并不是所有的功能都丢失了,因为它们还提供了可以独立下载的外围库:
不幸的是,这两家公司都没有提供Makefile,所以我的调查到此为止。我确实给了他们几分,因为他们提供了IAR和Keil。
赛普拉斯和Maxim都制造有趣的芯片:前者在其PSoC品牌下有一个很受欢迎的BLE MCU系列,后者生产的MCU具有非常大的闪存或RAM,可以很好地利用。
不幸的是,这两件事我都无能为力。似乎PSoC的创建者需要设置一个PSoC6项目,但这款应用只能在Windows上运行。与此同时,我在Maxim上能找到的只是一个“arm Cortex工具链”的Windows安装程序。
我希望你在读完这篇文章后,对不同MCU SDK所需的不同设置步骤有了更好的理解。
你会注意到,我在这篇文章中只看了设置过程。在未来,我打算对API、生态系统和工具进行比较。
你有最喜欢的MCU SDK吗?我们很乐意在评论中听到这一消息!
你有什么需要修改的吗?在GitHub提交拉取请求或打开问题