作者
Derek Snell
2008年以来,Derek Snell一直致力于为恩智浦微控制器提供支持。他花了大量时间支持客户、编写示例和应用说明笔记、创建培训、改进软件和实现方案,以及优化MCU电源和性能。他毕业于罗斯霍曼理工学院,目前居住在印第安纳州印第安纳波利斯市。
我的妻子是一名幼儿园老师,也是一位再利用大师。我看到一卷卫生纸用完了,只会想到把卷筒扔进可回收垃圾箱。但对她来说,卷筒是一个多用途组件,仍能发挥余热,应该储存起来。她大量收集了管子、罐子、纽扣、毛毡、纸板、毛根和纸张,每当做手工项目时,就可以利用起来。然后天马行空,这些组件结合就变成了一些可爱的小工艺品。在她眼中,一个被遗忘的破蛋箱可以变成一只毛毛虫,这种创造力让我非常嫉妒。
尽管我的创造力无法与她相媲美,我也喜欢重复利用。我的理念是:“如果我可以重复利用现有的东西,为什么还要发明新的?” 在应用开发过程中,使用开源软件的一大好处和吸引力是代码重用。在开发应用专用软件时,我们的时间和创新应该花在与众不同的东西上,而不是现有的通用构件和组件上。用我妻子类比来说,我们要创造的是“毛毛虫”,而不是鸡蛋箱。但代码重用的一个主要问题,特别是代码起源于其他地方时,是“它靠得住吗?” 特别是当这些“毛毛虫”需要投入生产时,我们会担心重用代码的质量、审查的方式以及它是否稳定。
而这正是恩智浦的MCUXpresso软件开发套件(SDK)的用武之地。该SDK是恩智浦EdgeVerse™微控制器平台专用的软件包,包含外设驱动程序、连接堆栈和其他中间件。恩智浦通过此SDK中高品质的量产级软件提供软件可靠性。例如,驱动程序和启动代码都符合MISRA-C,并使用Coverity®静态分析工具进行检验。恩智浦还使用支持不同产品系列的开发板,在一个庞大的板群中检查SDK运行时测试。每天晚上,最新的SDK代码都会在板上运行,记录新近代码更改中产生的任何问题。如今,这些测试在46个平台上运行,运行了8万多个测试用例。此外,此SDK代码库已通过我们众多客户及其最终产品在生产中经过严格审查,全球下载量超过了36万次。
开源的Zephyr OS也得益于代码重用。Zephyr Project的构想提供了一个新的实时操作系统选项,并开发了一个充满活力的活跃社区,可不断提供新代码。如需详细了解Zephyr的独特之处,请访问博文Zephyr OS LTS 2版本增加了对i.MX RT600跨界MCU的全平台支持。但Zephyr Project还集成了其他开源模块,适用于那些不需要重新发明、可以利用代码重用的情况。
例如,Zephyr OS集成了用于显卡的LVGL、Mbed TLS加密库和面向安全引导加载程序和固件更新的MCUboot。此外,恩智浦的产品组合与Zephyr OS紧密结合,而恩智浦也是Zephyr Project的一位创始成员。恩智浦致力于Zephyr开发,并通过将代码上传到Zephyr存储库来促进Zephyr Project的开发。这段代码的大部分内容都集中在启用恩智浦硬件上的Zephyr OS及其特性,并且硬件支持的基础是从MCUXpresso SDK重用的。恩智浦还在测试SDK的同一板群上测试Zephyr版本。今天,超过5000个Zephyr测试用例在板群的17个平台上运行。
Zephyr OS为常见的硬件相关功能提供了驱动程序,如Flash和UART驱动程序。这些Zephyr驱动程序被编写为硬件无关,可使Zephyr应用能够轻松地跨支持的硬件平台进行移植。这些Zephyr驱动程序构建在硬件抽象层(HAL)之上,如下图所示。恩智浦的HAL由直接来自MCUXpresso SDK的外设驱动程序和设备支持组成。代码重用提供了与测试和生产使用相同的质量(前面讨论过),为HAL提供了一个稳健而成熟的基础。
我们来看一个具体例子,下面是Zephyr软件层,包括对i.MX RT1060 MCU的硬件平台支持。i.MX RT1060使用连接到FlexSPI外设的外部闪存。低层FlexSPI驱动程序与MCUXpresso SDK中的驱动程序相同。最重要的是,恩智浦将填隙驱动程序上传到Zephyr存储库,该存储库将Zephyr与硬件无关的内存API(如Flash驱动程序)定向到直接控制外设的MCUXpresso SDK驱动程序。这会将恩智浦HAL构建在SDK驱动程序之上,而Zephyr内核、驱动程序和上层都构建在该HAL之上。
如需获得更好的体验,请下载结构框图。
Zephyr OS中的MCUXpresso SDK代码重用提供了超越质量的其他好处。SDK驱动程序新增的改进和功能可以快速、轻松地集成到Zephyr应用中。如果用户在这些驱动程序中发现错误,无论是Zephyr用户还是其他恩智浦用户,MCUXpresso SDK中的错误修复都可以快速上传,使所有Zephyr用户受益。此外,共享相同的底层MCUXpresso SDK HAL使Zephyr在恩智浦产品组合(包括SDK支持但尚未包括在Zephyr Project中的恩智浦设备)之间实现更轻松的移植,这意味着SDK重用还支持软件路径迁移到Zephyr(适合已使用MCUXpresso SDK的非Zephyr应用)。如果现有应用的开发人员希望使用Zephyr OS进行评估,他们可以继续使用相同的MCUXpresso驱动程序,并将移植工作重点放在采用Zephyr OS及其功能上。Zephyr应用可以使用相同的直接API构建到SDK驱动程序中。移植到通用Zephyr驱动程序不是必需的,如有需要,甚至可以稍后进行。
Zephyr Project和MCUXpresso SDK驱动程序的代码重用有助于快速启动嵌入式应用开发,使开发人员能够专注于终端应用,并从现有强大的HAL中获益。此外,SDK提供的高品质量产级代码使您对软件充满信心。因此,下次制作毛毛虫时,如果您想要重复利用现有的可靠蛋箱,请考虑恩智浦MCUXpresso SDK的Zephyr Project提供的所有代码重用和优势。
访问上一篇博文Zephyr OS LTS 2版本增加了对i.MX RT600跨界MCU的全平台支持
恩智浦半导体资深系统与应用工程师
2008年以来,Derek Snell一直致力于为恩智浦微控制器提供支持。他花了大量时间支持客户、编写示例和应用说明笔记、创建培训、改进软件和实现方案,以及优化MCU电源和性能。他毕业于罗斯霍曼理工学院,目前居住在印第安纳州印第安纳波利斯市。
2021年10月18日
2021年10月22日
2021年10月12日
by Mubeen Abbas